"view/js/country.js"
"view/js/main.js"
"vendor/asset/base64/base64.min.js"
- "view/theme/frost/js/jquery.divgrow-1.3.1.f1.js"
- "view/theme/frost/js/main.js"
- "view/theme/frost/js/theme.js"
- "view/theme/frost-mobile/js/jquery.divgrow-1.3.1.f1.js"
- "view/theme/frost-mobile/js/main.js"
- "view/theme/frost-mobile/js/theme.js"
- "view/theme/decaf-mobile/js/theme.js"
)
JSFILES2=(
"library/colorbox/jquery.colorbox.js"
<span style="padding-left: 10px; font-style:italic;">(incl. more "zero"-themes, slackr, comix, easterbunny, facepark)</span>
Dispy <img src="doc/img/dispy.png" alt="dispy.png" style="padding-left: 57px; vertical-align:middle;"> <i>(incl. smoothly, testbubble)</i>
-
-Frost Mobile <img src="doc/img/frost.png" alt="frost.png" style="padding-left: 16px; vertical-align:middle;">
<td><img src="doc/img/editor_darkbubble.png" alt="darkbubble.png" style="vertical-align:middle;"></td>
<td> </td>
</tr>
-<tr>
- <td>Frost: </td>
- <td><img src="doc/img/editor_frost.png" alt="frost.png" style="vertical-align:middle;"> </td>
- <td> </td>
-</tr>
</table>
<i><b>*</b> how to [upload](help/FAQ#upload) files</i>
<p style="clear:both;"> </p>
<span style="padding-left: 10px; font-style:italic;">(inkl. weiterer "zero"-Themen, slackr, comix, easterbunny, facepark)</span>
Dispy <img src="doc/img/dispy.png" alt="dispy.png" style="padding-left: 57px; vertical-align:middle;"> <i>(inkl. smoothly, testbubble)</i>
-
-Frost Mobile <img src="doc/img/frost.png" alt="frost.png" style="padding-left: 16px; vertical-align:middle;">
Frio <img src="doc/img/editor_frio.png" alt="frio.png" style="padding-left: 44px; vertical-align:middle;">
-Frost <img src="doc/img/editor_frost.png" alt="frost.png" style="padding-left: 42px; vertical-align:middle;">
-
Vier <img src="doc/img/editor_vier.png" alt="vier.png" style="padding-left: 44px; vertical-align:middle;"> <i>(inkl. dispy)</i>
// try oembed autodiscovery
$html_text = DI::httpRequest()->fetch($embedurl, 15, 'text/*');
if ($html_text) {
- $dom = @DOMDocument::loadHTML($html_text);
- if ($dom) {
+ $dom = new DOMDocument();
+ if ($dom->loadHTML($html_text)) {
$xpath = new DOMXPath($dom);
- $entries = $xpath->query("//link[@type='application/json+oembed']");
- foreach ($entries as $e) {
- $href = $e->getAttributeNode('href')->nodeValue;
- $json_string = DI::httpRequest()->fetch($href . '&maxwidth=' . $a->videowidth);
- break;
- }
-
- $entries = $xpath->query("//link[@type='text/json+oembed']");
- foreach ($entries as $e) {
- $href = $e->getAttributeNode('href')->nodeValue;
- $json_string = DI::httpRequest()->fetch($href . '&maxwidth=' . $a->videowidth);
- break;
+ foreach (
+ $xpath->query("//link[@type='application/json+oembed'] | //link[@type='text/json+oembed']")
+ as $link)
+ {
+ $href = $link->getAttributeNode('href')->nodeValue;
+ // Both Youtube and Vimeo output OEmbed endpoint URL with HTTP
+ // but their OEmbed endpoint is only accessible by HTTPS ¯\_(ツ)_/¯
+ $href = str_replace(['http://www.youtube.com/', 'http://player.vimeo.com/'],
+ ['https://www.youtube.com/', 'https://player.vimeo.com/'], $href);
+ $result = DI::httpRequest()->fetchFull($href . '&maxwidth=' . $a->videowidth);
+ if ($result->getReturnCode() === 200) {
+ $json_string = $result->getBody();
+ break;
+ }
}
}
}
public static function getHTML($url, $title = null)
{
- // Always embed the SSL version
- $url = str_replace(["http://www.youtube.com/", "http://player.vimeo.com/"],
- ["https://www.youtube.com/", "https://player.vimeo.com/"], $url);
-
$o = self::fetchURL($url, !self::isAllowedURL($url));
if (!is_object($o) || property_exists($o, 'type') && $o->type == 'error') {
// html5 video and audio
$text = preg_replace("/\[video\](.*?\.(ogg|ogv|oga|ogm|webm|mp4).*?)\[\/video\]/ism",
'<video src="$1" controls width="' . $a->videowidth . '" height="' . $a->videoheight . '" loop="true"><a href="$1">$1</a></video>', $text);
- $text = preg_replace("/\[video\](.*?)\[\/video\]/ism",
- '<a href="$1" target="_blank" rel="noopener noreferrer">$1</a>', $text);
- $text = preg_replace("/\[audio\](.*?)\[\/audio\]/ism", '<audio src="$1" controls><a href="$1">$1</a></audio>', $text);
$text = preg_replace_callback("/\[video\](.*?)\[\/video\]/ism", $try_oembed_callback, $text);
$text = preg_replace_callback("/\[audio\](.*?)\[\/audio\]/ism", $try_oembed_callback, $text);
+
+ $text = preg_replace("/\[video\](.*?)\[\/video\]/ism",
+ '<a href="$1" target="_blank" rel="noopener noreferrer">$1</a>', $text);
+ $text = preg_replace("/\[audio\](.*?)\[\/audio\]/ism", '<audio src="$1" controls><a href="$1">$1</a></audio>', $text);
} else {
$text = preg_replace("/\[video\](.*?)\[\/video\]/ism",
'<a href="$1" target="_blank" rel="noopener noreferrer">$1</a>', $text);
margin-left: 15px;
cursor: pointer;
}
-#profile-smiley-wrapper {
- float: left;
- margin-left: 15px;
- cursor: pointer;
- margin-top: 3px;
- height: 10px;
- display: inline-block;
-}
-#smileybutton {
- position: absolute;
- z-index: 99;
-}
-table.smiley-preview {
- background-color: #FFF;
- box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7);
-}
#jot-perms-icon {
float: right;
margin-left: 15px;