function layout2columns($module)
{
    return dom('table')->append(array_map(function ($field) {
        $domLabel = $field->config['display:title'];
        if (is_string($domLabel)) {
            $domLabel = dom('label', $domLabel);
        }
        return dom('tr', dom('th', $domLabel), dom('td', dom('input')));
    }, $module->fields));
}
Example #2
0
 static function render($dom)
 {
     if ($dom instanceof widget) {
         $dom = $dom->get('dom');
     }
     $str = "<!doctype html>\n";
     $scripts = array();
     foreach ($dom->requiredJsFiles() as $C) {
         $scripts[] = dom('script')->attr('src', Dom::$jsFiles[$C]);
     }
     $str .= dom('html', dom('head', dom('title', 'tinyTinyFw'), $scripts), dom('body')->css(array('color' => 'hsl(0,0%,40%)', 'overflow-y' => 'scroll', 'background' => 'hsl(180,10%,90%)', 'font-family' => 'tahoma'))->append($dom));
     return $str;
 }
        return str::equals('close', $self->get('type'));
    });
    $template->let('normalBg', function ($self) {
        return $self->get('type:CLOSE') ? 'hsl(0,30%,40%)' : 'hsl(200,30%,35%)';
    });
    $template->let('normalBorder', function ($self) {
        $normalBorder = $self->get('type:CLOSE') ? 'solid 2px hsl(200,40%,80%)' : 'solid 2px hsl(200,40%,35%)';
    });
    $template->let('hoverBorder', 'solid 2px hsl(50,80%,80%)');
    $template->let('dom', function ($self) {
        $dom = new dom('a');
        $dom->jsCall('toggler', array('states' => $self->get('states'), 'currentIndex' => 0));
        $dom->attr('data-widget', 'toggleButton');
        $dom->attr('onmouseover', "this.style.border = '{$hoverBorder}'; this.style.letterSpacing = '1px';");
        $dom->attr('onmouseout', "this.style.border = '{$normalBorder}'; this.style.letterSpacing = '2px';");
        $dom->css(array('width' => $self->get('width') . 'em', 'cursor' => "default", '-webkit-border-radius' => $self->get('type:CLOSE') ? '0 8px 0 20px' : '4px 4px 0 0', 'display' => 'inline-block', 'vertical-align' => 'text-top', 'letter-spacing' => '2px', 'text-align' => 'center', 'font-size' => $self->get('fontSize') . 'px', 'padding' => $self->get('type:CLOSE') ? '2px 0px 4px 4px' : '2px 0', 'border' => $self->get('normalBorder'), 'color' => $self->get('type:CLOSE') ? 'hsl(200,40%,85%)' : 'hsl(200,40%,80%)', 'margin' => $self->get('type:CLOSE') ? '1px' : '0 8px', 'background' => $self->get('normalBg')));
        return $dom;
    });
    return $template;
});
$widgets->let('window', function () {
    $template = new widget();
    $template->expect('content');
    $template->let('dom', function ($self) {
        $dom = new dom('div');
        $dom->css(array('position' => 'relative', '-webkit-border-radius' => '8px', 'border-bottom' => 'solid 2px hsl(200,35%,55%)', 'background' => 'hsl(200,35%,75%)', 'padding' => '0', 'overflow' => 'hidden'));
        $dom->append(dom('div')->css(array('float' => 'right', 'margin' => '0', 'padding' => '0'))->append(widget('toggleButton')->let('states', array('Close'))->let('type', 'close')), dom('div')->css(array('position' => 'absolute', 'right' => '0', 'bottom' => '0', 'margin' => '0', 'padding' => '0'))->append(widget('toggleButton')->let('states', array('Fullscreen', 'Inline'))), dom('div')->css(array('padding' => '1em', 'padding-bottom' => '10em'))->append($self->get('content')));
        return $dom;
    });
    return $template;
});
Example #4
0
<?php

require_once dirname(__FILE__) . '/../../_lib/tinyTinyFw.php';
echo dom('table')->css(array('font-family' => 'Verdana'))->append(map(range(0, 10), function ($i) {
    $begin = 33;
    $perRow = 20;
    $x = $begin + $i * $perRow;
    return dom('tr')->append(dom('th', $x))->append(map(range($x, $x + $perRow), function ($j) {
        // TODO: Find out how to get unicode characters to show up.
        return dom('td', chr($j));
    }));
}));
Example #5
0
function get_text($html_dom, $length)
{
    $html_dom = "<div class='get_text_box'>" . $html_dom . "</div>";
    $el = array(array('el' => '.get_text_box', 'attr' => 'text', 'name' => 'content'));
    $arr = dom($html_dom, $el);
    $content = $arr[0]['content'];
    if ($length && $length > 0) {
        $content = cutstr($content, $length, '');
    }
    return $content;
}
Example #6
0
<?php

require_once dirname(__FILE__) . '/../_lib/tinyTinyFw.php';
require_once dirname(__FILE__) . '/properties.php';
$modules->let('user:join', function () {
    $module = new module();
    $module->let('fields', fields('username', 'email'));
    // Called when there is no form submission.
    $module->let('whenIdle', function ($self) {
        return widget('window')->let('content', dom('div', layout2columns($self->get('fields')), dom('pre')->css(array('border' => 'solid 1px gray', 'padding' => '0.5em'))->append('$_REQUEST = ' . var_export($_REQUEST, true))));
    });
    $module->let('whenError', function ($self) {
        return widget('message:error', "Sorry, there has been an error.");
    });
    // Called after form submission and input validation is ok.
    $module->let('whenOk', function ($self, $values) {
        // $values['username']->property;
        // Each $value has already gone through
        // validators defined by the value's underlying property -- see properties.php.
        $user = user::Create($values);
        // Can return either a layout function or dom.
        return dom('div')->append(dom('message:ok', "Thank you."), dom('message:info', "Don't forget to join a club."));
    });
    return $module;
});