function smarty_function_cancel($params, $template)
{
    Clips\require_widget_smarty_plugin('html', 'a');
    $bundle_name = Clips\context('current_bundle');
    $bundle = Clips\get_default($params, 'bundle', $bundle_name);
    $cancel = Clips\get_default($params, 'label', 'Cancel');
    if ($bundle !== null) {
        $bundle = Clips\bundle($bundle);
        $cancel = $bundle->message($cancel);
    }
    $request = Clips\context('request');
    $bs = $request->breadscrumb();
    if (count($bs) > 1) {
        array_pop($bs);
        // Pop current
        $params['href'] = Clips\site_url(array_pop($bs));
        $params['title'] = $cancel;
        $f = true;
        // Open the link
        smarty_block_a($params, '', $template, $f);
        $f = false;
        return smarty_block_a($params, $cancel, $template, $f);
    }
    return '';
}
function smarty_block_button($params, $content = '', $template, &$repeat)
{
    if ($repeat) {
        Clips\clips_context('indent_level', 1, true);
        return;
    }
    $value = Clips\get_default($params, 'caption');
    if ($value) {
        // We did have value, so the content is the JavaScript
        $id = Clips\get_default($params, 'id', 'clips_button_' . Clips\sequence('button'));
        $js = "\$(\"#{$id}\").click(function(){\n\t\t" . trim($content) . "\n\t});";
        $content = $value;
        unset($params['caption']);
        $params['id'] = $id;
        Clips\context('jquery_init', $js, true);
    }
    // For i18n
    $bundle_name = Clips\context('current_bundle');
    $bundle = Clips\get_default($params, 'bundle', $bundle_name);
    if ($bundle !== null) {
        $bundle = Clips\bundle($bundle);
        $content = $bundle->message($content);
    }
    Clips\context_pop('indent_level');
    return Clips\create_tag_with_content('button', $content, $params);
}
function smarty_function_submit($params, $template)
{
    $bundle_name = Clips\context('current_bundle');
    $bundle = Clips\get_default($params, 'bundle', $bundle_name);
    $submit = Clips\get_default($params, 'value', 'Submit');
    if ($bundle !== null) {
        $bundle = Clips\bundle($bundle);
        $submit = $bundle->message($submit);
    }
    if (isset($params['value'])) {
        $params['value'] = $submit;
    }
    return Clips\create_tag('input', $params, array('type' => 'submit', 'value' => $submit, 'class' => array('btn', 'btn-primary')));
}
Exemple #4
0
function smarty_block_lang($params, $content = '', $template, &$repeat)
{
    if ($repeat) {
        return;
    }
    // Get the format from parameters, if no format parameter, use content instead
    $format = Clips\get_default($params, 'format', $content);
    $bundle_name = Clips\context('current_bundle');
    if (!$bundle_name) {
        $bundle_name = '';
    }
    $bundle = Clips\bundle(Clips\get_default($params, 'bundle', $bundle_name));
    return $bundle->message($format, $content);
}
function smarty_block_label($params, $content = '', $template, &$repeat)
{
    if ($repeat) {
        Clips\clips_context('indent_level', 1, true);
        return;
    }
    Clips\context_pop('indent_level');
    $bundle_name = Clips\context('current_bundle');
    $bundle = Clips\get_default($params, 'bundle', $bundle_name);
    if ($bundle !== null) {
        $bundle = Clips\bundle($bundle);
        $content = $bundle->message($content);
    }
    return Clips\create_tag_with_content('label', $content, $params);
}
 public function format($obj)
 {
     if (is_array($obj) && $obj) {
         $result = array();
         foreach ($obj as $k => $v) {
             $str = $v;
             if (is_string($k)) {
                 $name = \Clips\to_name($k);
                 if (is_object($v)) {
                     $result[] = $this->processObject($v);
                 } else {
                     if (is_array($v)) {
                         $result[] = $name . '="' . implode(' ', $v) . '"';
                     } else {
                         // For i18n
                         if ($k == 'placeholder' || $k == 'title' || $k == 'alt') {
                             $bundle_name = \Clips\context('current_bundle');
                             if ($bundle_name !== null) {
                                 $bundle = \Clips\bundle($bundle_name);
                                 $result[] = $name . '="' . $bundle->message($v) . '"';
                             } else {
                                 $result[] = $name . '="' . $v . '"';
                             }
                         } else {
                             $result[] = $name . '="' . $v . '"';
                         }
                     }
                 }
             } else {
                 if (is_array($v) || is_object($v)) {
                     $result[] = $this->format((array) $v);
                 } else {
                     $result[] = $v;
                 }
             }
         }
         return implode(' ', $result);
     }
     return '';
 }
Exemple #7
0
 public function init()
 {
     $this->tool->widget('DataTable');
     if (isset($this->value)) {
         if (!is_array($this->value)) {
             $this->value = array($this->value);
         }
     } else {
         $this->value = array(\Clips\default_form_name());
     }
     // Initialize the datatable in javacript
     foreach ($this->getConfig() as $name => $config) {
         if ($config) {
             // Enforce security by default for DataTable
             $config->security = $this->securityengine;
             $config->name = $name;
             // Setting the default values for the datatable configuration
             if (!isset($config->ajax)) {
                 $controller_class = \Clips\context('controller_seg');
                 $method = \Clips\context('controller_method');
                 $uri = \Clips\context('uri');
                 if (strpos($uri, $method) !== false) {
                     $d = explode($method, $uri);
                     $config->ajax = \Clips\site_url(\Clips\path_join($d[0], $name));
                 } else {
                     if (strpos($uri, $controller_class) !== false) {
                         $config->ajax = \Clips\site_url(\Clips\path_join($uri, $name));
                     } else {
                         $config->ajax = \Clips\site_url(\Clips\path_join($uri, $controller_class, $name));
                     }
                 }
             }
             $config->processing = true;
             $config->serverSide = true;
             // The bundle configuration in anntation has the highest priority
             $bundle = \Clips\get_default($this, 'bundle', null);
             if ($bundle === null) {
                 // Try configuration's bundle settings
                 $bundle = \Clips\get_default($config, 'bundle', null);
                 if ($bundle === null) {
                     // We can't find the bundle in annotation, try to find it using default name
                     $bundle_name = 'pagination/' . $name;
                     $bundle = $this->tool->bundle($bundle_name);
                     if ($bundle->isEmpty()) {
                         // All default bundle can't be found, try current controller's bundle
                         $bundle = \Clips\context('current_bundle');
                         if ($bundle === null) {
                             $bundle = '';
                         }
                     }
                 }
             }
             $bundle = \Clips\bundle($bundle);
             // Update the columns configuration to the filtered columns configuration
             $config->columns = $config->columns();
             $replaces = array();
             foreach ($config->columns as $col) {
                 if (isset($col->title)) {
                     $col->title = $bundle->message($col->title);
                 }
                 if (isset($col->data)) {
                     // Must smooth the data
                     if (strpos($col->data, " as ")) {
                         $d = explode(' as ', $col->data);
                         if ($d) {
                             $col->data = trim($d[1]);
                         }
                     }
                     $col->data = \Clips\smooth($col->data);
                 }
                 if (isset($col->refer)) {
                     $col->refer = \Clips\smooth($col->refer);
                 }
                 if (isset($col->render)) {
                     if (array_search($col->render, $replaces) === false) {
                         $replaces[] = $col->render;
                     }
                 }
                 if (isset($col->action)) {
                     // If has action, use action render
                     $col->render = 'datatable_action_column';
                     if (array_search($col->render, $replaces) === false) {
                         $replaces[] = $col->render;
                     }
                 }
             }
             // Clean the where data stored in the session
             $controller = \Clips\context('controller');
             if ($controller) {
                 $controller->request->session($name, null);
             }
             $json = $config->toJson();
             foreach ($replaces as $r) {
                 $json = str_replace('"' . $r . '"', $r, $json);
             }
             // Adding the initialize script to jquery init
             \Clips\context('jquery_init', 'if(window[\'DatatableSettings\'] == undefined ) { DatatableSettings = {}; } DatatableSettings["' . $name . '"] = ' . $json . ';$("table[name=' . \Clips\to_flat($name) . ']").DataTable(DatatableSettings["' . $name . '"]);', true);
         }
     }
 }
function smarty_block_action($params, $content = '', $template, &$repeat)
{
    if ($repeat) {
        Clips\clips_context('indent_level', 1, true);
        return;
    }
    $default = array('class' => 'action');
    $action = Clips\get_default($params, 'action');
    if ($action && Clips\valid_obj($action, 'Clips\\Interfaces\\Action')) {
        $ps = $action->params();
        $icon = $action->icon();
        $caption = array();
        if ($icon) {
            $caption[] = Clips\create_tag_with_content('i', '', array('class' => $icon));
            $caption[] = Clips\create_tag_with_content('span', $action->label());
            if ($action->children()) {
                $caption[] = Clips\create_tag_with_content('i', '', array('class' => array('fa', 'fa-angle-left', 'pull-right')));
            }
            $caption = implode('', $caption);
        } else {
            $caption = $action->label();
        }
        if (!isset($params['title'])) {
            // Add tooltip
            $params['title'] = $action->label();
        }
        // This is valid action object
        switch ($action->type()) {
            case Action::CLIENT:
                $params['caption'] = $caption;
                if ($ps) {
                    foreach ($ps as $k => $v) {
                        $params['data-' . $k] = $v;
                    }
                }
                $content = $action->content();
                break;
            case Action::HEADER:
                return $caption;
            case Action::SERVER:
                $content = $caption;
                if ($ps) {
                    $suffix = implode('/', array_map(function ($item) {
                        return urlencode($item);
                    }, $ps));
                    $params['uri'] = \Clips\path_join($action->content(), $suffix);
                } else {
                    $params['uri'] = $action->content();
                }
                break;
            case Action::EXTERNAL:
                $content = $caption;
                $suffix = array();
                foreach ($ps as $k => $v) {
                    $suffix[] = urlencode($k) . '=' . urlencode($v);
                }
                if ($suffix) {
                    $suffix = implode('&', $suffix);
                    $params['href'] = $action->content() . '?' . $suffix;
                } else {
                    $params['href'] = $action->content();
                }
                break;
        }
        unset($params['action']);
    }
    $value = Clips\get_default($params, 'caption');
    if ($value) {
        // We did have value, so the content is the JavaScript
        $id = Clips\get_default($params, 'id', 'clips_action_' . Clips\sequence('action'));
        $js = "\$(\"#{$id}\").click(function(){\n\t\t" . trim($content) . "\n\t});";
        $content = $template->fetch('string:' . $value);
        unset($params['caption']);
        $params['id'] = $id;
        $params['href'] = 'javascript:void(0)';
        Clips\context('jquery_init', $js, true);
    } else {
        // Check for action uri
        $uri = Clips\get_default($params, 'uri');
        if ($uri) {
            $params['href'] = Clips\site_url($uri);
            unset($params['uri']);
        }
        if (!isset($params['title'])) {
            // Add tooltip
            $params['title'] = trim($content);
        }
    }
    Clips\context_pop('indent_level');
    $bundle_name = Clips\context('current_bundle');
    $bundle = Clips\get_default($params, 'bundle', $bundle_name);
    if ($bundle !== null) {
        $bundle = Clips\bundle($bundle);
        $content = $bundle->message($content);
    }
    return Clips\create_tag_with_content('a', $content, $params, $default);
}