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;
}
Beispiel #3
0
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", '&#10;', $content);
        $content = str_replace("\n", '&#10;', $content);
        // why not replace tabs as well why we are at it
        $content = str_replace("\t", '&#09;', $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;
}