function iframe_alter_save($args) { $elem = $args['elem']; $obj =& $args['obj']; if (!elem_has_class($elem, 'iframe')) { return false; } // parse children elements to find iframe $childs = html_parse(elem_val($elem)); $i = false; foreach ($childs as $c) { if (elem_tag($c) == 'iframe') { $i = $c; break; } } if (!$i) { log_msg('warn', 'iframe_alter_save: no iframe element found, inner html is ' . var_dump_inl($childs)); return false; } // url if (elem_attr($i, 'src') !== NULL) { $obj['iframe-url'] = elem_attr($i, 'src'); } else { unset($obj['iframe-url']); } // scrolling if (elem_css($i, 'overflow') == 'hidden' || elem_css($i, 'overflow-x') == 'hidden' && elem_css($i, 'overflow-y') == 'hidden') { unset($obj['iframe-scroll']); } else { $obj['iframe-scroll'] = 'scroll'; } return true; }
function download_alter_render_early($args) { $elem =& $args['elem']; $obj = $args['obj']; if (!elem_has_class($elem, 'download')) { return false; } if ($args['edit']) { elem_attr($elem, 'title', 'this is ' . $obj['name'] . ', original file name was ' . $obj['download-file']); } else { elem_attr($elem, 'title', 'download file'); } // get file extension $a = expl('.', $obj['download-file']); if (1 < count($a)) { $v = elem('div'); elem_add_class($v, 'download-ext'); elem_val($v, htmlspecialchars(array_pop($a), ENT_NOQUOTES, 'UTF-8')); elem_append($elem, $v); } return true; }
function text_alter_render_early($args) { $elem =& $args['elem']; $obj = $args['obj']; if (!elem_has_class($elem, 'text')) { return false; } // background-color if (!empty($obj['text-background-color'])) { elem_css($elem, 'background-color', $obj['text-background-color']); } // content if (!isset($obj['content'])) { $obj['content'] = ''; } if ($args['edit']) { // add a textarea $i = elem('textarea'); elem_add_class($i, 'glue-text-input'); elem_css($i, 'width', '100%'); elem_css($i, 'height', '100%'); // hide the text area by default elem_css($i, 'display', 'none'); // set the context to the textarea to the (unrendered) object content $content = htmlspecialchars($obj['content'], ENT_NOQUOTES, 'UTF-8'); // replace newline characters by an entity to prevent render_object() // from adding some indentation $content = str_replace("\r\n", ' ', $content); $content = str_replace("\n", ' ', $content); // why not replace tabs as well why we are at it $content = str_replace("\t", '	', $content); elem_val($i, $content); elem_append($elem, $i); // and a nested div $r = elem('div'); elem_add_class($r, 'glue-text-render'); elem_css($r, 'width', '100%'); elem_css($r, 'height', '100%'); // set the content of the div to the rendered object content elem_val($r, _text_render_content($obj['content'], $obj['name'])); elem_append($elem, $r); } else { elem_append($elem, _text_render_content($obj['content'], $obj['name'])); } // font-color if (!empty($obj['text-font-color'])) { elem_css($elem, 'color', $obj['text-font-color']); } // font-family if (!empty($obj['text-font-family'])) { elem_css($elem, 'font-family', $obj['text-font-family']); if (TEXT_USE_WOFF_FONTS) { if (_is_woff_font($obj['text-font-family'])) { // include all styles of the font because of inline html // (<strong>, etc) _include_woff_font($obj['text-font-family']); } } } // font-size if (!empty($obj['text-font-size'])) { elem_css($elem, 'font-size', $obj['text-font-size']); } // font-style if (!empty($obj['text-font-style'])) { elem_css($elem, 'font-style', $obj['text-font-style']); } // font-weight if (!empty($obj['text-font-weight'])) { elem_css($elem, 'font-weight', $obj['text-font-weight']); } // letter-spacing if (!empty($obj['text-letter-spacing'])) { elem_css($elem, 'letter-spacing', $obj['text-letter-spacing']); } // line-height if (!empty($obj['text-line-height'])) { elem_css($elem, 'line-height', $obj['text-line-height']); } // padding-x if (!empty($obj['text-padding-x'])) { elem_css($elem, 'padding-left', $obj['text-padding-x']); elem_css($elem, 'padding-right', $obj['text-padding-x']); } // padding-y if (!empty($obj['text-padding-y'])) { elem_css($elem, 'padding-top', $obj['text-padding-y']); elem_css($elem, 'padding-bottom', $obj['text-padding-y']); } // text-align if (!empty($obj['text-align'])) { elem_css($elem, 'text-align', $obj['text-align']); } // word-spacing if (!empty($obj['text-word-spacing'])) { elem_css($elem, 'word-spacing', $obj['text-word-spacing']); } return true; }
function video_alter_render_early($args) { $elem =& $args['elem']; $obj = $args['obj']; if (!elem_has_class($elem, 'video')) { return false; } // add a css (for viewing as well as editing) html_add_css(base_url() . 'modules/video/video.css'); $v = elem('video'); if (empty($obj['video-file'])) { elem_attr($v, 'src', ''); } else { // TODO (later): support URLs as well if (SHORT_URLS) { elem_attr($v, 'src', base_url() . urlencode($obj['name'])); } else { elem_attr($v, 'src', base_url() . '?' . urlencode($obj['name'])); } } elem_css($v, 'width', '100%'); elem_css($v, 'height', '100%'); // we're currently not preloading the video due to some troubles on // Firefox //elem_css($v, 'preload', 'preload'); // set some fallback text if (!empty($obj['video-file']) && !empty($obj['video-file-mime'])) { elem_val($v, '<div class="video-fallback">You are not seeing the video because your browser does not support ' . htmlspecialchars($obj['video-file-mime'], ENT_NOQUOTES, 'UTF-8') . '. Consider using a contemporary web browser.</div>'); } else { elem_val($v, '<div class="video-fallback">You are not seeing the video because your browser does not support it. Consider using a contemporary web browser.</div>'); } // autoplay if (!isset($obj['video-autoplay']) || $obj['video-autoplay'] == 'autoplay') { // autoplay is the default elem_attr($v, 'autoplay', 'autoplay'); } else { if (VIDEO_START_ON_CLICK) { elem_attr($v, 'onclick', 'this.play()'); } } // loop if (!empty($obj['video-loop'])) { elem_attr($v, 'loop', 'loop'); } // controls if (!empty($obj['video-controls'])) { elem_attr($v, 'controls', 'controls'); } // volume if (isset($obj['video-volume']) && $obj['video-volume'] == '0') { elem_attr($v, 'audio', 'muted'); } elem_append($elem, $v); return true; }