コード例 #1
0
ファイル: form.php プロジェクト: degami/php-forms-api
    public function pre_render(cs_form $form)
    {
        if ($this->pre_rendered == TRUE) {
            return;
        }
        $id = $this->get_html_id();
        if ($this->get_level() == 0) {
            $this->add_js(preg_replace("/\\s+/", " ", str_replace("\n", "", "" . "\$('#{$id}','#{$form->get_id()}').data('output', \$('#{$id}-output'));\n       \$('#{$id}','#{$form->get_id()}').nestable({group: {$this->group}, maxDepth: {$this->maxDepth} }).on('change', function(e){\n        var list   = e.length ? e : \$(e.target),\n        output = list.data('output');\n        if (window.JSON) {\n            output.val(window.JSON.stringify(list.nestable('serialize')));\n        } else {\n            output.val('JSON browser support required for this.');\n        }\n      }).trigger('change');")));
            if (!cs_nestable::$_css_rendered) {
                $this->add_css('
.dd { position: relative; display: block; margin: 0; padding: 0; list-style: none; font-size: 13px; line-height: 20px; }

.dd-list { display: block; position: relative; margin: 0; padding: 0; list-style: none; }
.dd-list .dd-list { padding-left: 30px; }
.dd-collapsed .dd-list { display: none; }
.dd-item,.dd-empty,.dd-placeholder { display: block; position: relative; margin: 0; padding: 0; min-height: 20px; font-size: 13px; line-height: 20px; }

.dd-handle { display: block; margin: 5px 0; padding: 5px 10px; color: #333; text-decoration: none; font-weight: bold; border: 1px solid #ccc;
    background: #fafafa;
    background: -webkit-linear-gradient(top, #fafafa 0%, #eee 100%);
    background:    -moz-linear-gradient(top, #fafafa 0%, #eee 100%);
    background:         linear-gradient(top, #fafafa 0%, #eee 100%);
    -webkit-border-radius: 3px;
            border-radius: 3px;
    box-sizing: border-box; -moz-box-sizing: border-box;
}
.dd-handle:hover { color: #2ea8e5; background: #fff; }

.dd-item > button { display: block; position: relative; cursor: pointer; z-index: 20; float: left; width: 25px; height: 20px; margin: 5px 0; padding: 0; text-indent: 100%; white-space: nowrap; overflow: hidden; border: 0; background: transparent; font-size: 12px; line-height: 1; text-align: center; font-weight: bold; }
.dd-item > button:before { content: \'+\'; display: block; position: absolute; width: 100%; text-align: center; text-indent: 0; }
.dd-item > button[data-action="collapse"]:before { content: \'-\'; }

.dd-placeholder,
.dd-empty { margin: 5px 0; padding: 0; min-height: 30px; background: #f2fbff; border: 1px dashed #b6bcbf; box-sizing: border-box; -moz-box-sizing: border-box; }
.dd-empty { border: 1px dashed #bbb; min-height: 100px; background-color: #e5e5e5;
    background-image: -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff),
                      -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
    background-image:    -moz-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff),
                         -moz-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
    background-image:         linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff),
                              linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
    background-size: 60px 60px;
    background-position: 0 0, 30px 30px;
}

.dd-dragel { position: absolute; pointer-events: none; z-index: 9999; }
.dd-dragel  > .dd-panel > .dd-item .dd-handle { margin-top: 0; }
.dd-dragel .dd-handle {
    -webkit-box-shadow: 2px 4px 6px 0 rgba(0,0,0,.1);
            box-shadow: 2px 4px 6px 0 rgba(0,0,0,.1);
}

.dd-panel{ position: relative; }
.dd-content { display: block; min-height: 30px; margin: 5px 0; padding: 5px 10px 5px 40px; color: #333; text-decoration: none; font-weight: bold; border: 1px solid #ccc;
    background: #fafafa;
    background: -webkit-linear-gradient(top, #fafafa 0%, #eee 100%);
    background:    -moz-linear-gradient(top, #fafafa 0%, #eee 100%);
    background:         linear-gradient(top, #fafafa 0%, #eee 100%);
    -webkit-border-radius: 3px;
            border-radius: 3px;
    box-sizing: border-box; -moz-box-sizing: border-box;
}
.dd-content:hover { color: #2ea8e5; background: #fff; }
.dd-dragel > .dd-item > .dd-panel > .dd-content { margin: 0; }
.dd-item > button { margin-left: 30px; }

.dd-handle { position: absolute; margin: 0; left: 0; top: 0; cursor: pointer; width: 30px; text-indent: 100%; white-space: nowrap; overflow: hidden;
  border: 1px solid #aaa;
  background: #ddd;
  background: -webkit-linear-gradient(top, #ddd 0%, #bbb 100%);
  background:    -moz-linear-gradient(top, #ddd 0%, #bbb 100%);
  background:         linear-gradient(top, #ddd 0%, #bbb 100%);
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
  height: 100%;
}
.dd-handle:before { content: \'≡\'; display: block; position: absolute; left: 0; top: 3px; width: 100%; text-align: center; text-indent: 0; color: #fff; font-size: 20px; font-weight: normal; }
.dd-handle:hover { background: #ddd; }
');
                cs_nestable::$_css_rendered = TRUE;
            }
        }
        parent::pre_render($form);
    }
コード例 #2
0
ファイル: forms.php プロジェクト: degami/php-forms-api
function batchoperationsform(cs_form $form, &$form_state)
{
    $step = 0;
    $form->set_action($_SERVER['PHP_SELF']);
    $form->add_field('progressnum', array('type' => 'value', 'value' => isset($form_state['input_form_definition']['fields'][$step]['progressnum']['value']) ? $form_state['input_form_definition']['fields'][$step]['progressnum']['value'] + 20 : 0));
    $fieldset = $form->add_field('fieldset', array('type' => 'tag_container'));
    if (cs_form::is_partial()) {
        $jsondata = json_decode($form_state['input_values']['jsondata']);
        $callback = $jsondata->callback;
        if (isset($form_state['input_form_definition']['fields'][$step]['progressnum']['value']) && $form_state['input_form_definition']['fields'][$step]['progressnum']['value'] >= 100) {
            $fieldset->add_field('done', array('type' => 'markup', 'default_value' => 'finito!'));
        } else {
            if (is_callable($callback)) {
                $fieldset->add_js("setTimeout(function(){ \$('#progress','#{$form->get_id()}').trigger('click') },1000);");
            }
            $fieldset->add_field('progress', array('type' => 'progressbar', 'default_value' => $form->get_field('progressnum')->get_value(), 'show_label' => TRUE, 'ajax_url' => $_SERVER['PHP_SELF'], 'event' => array(array('event' => 'click', 'callback' => 'batch_operations_form_callback', 'target' => 'batchoperationsform', 'effect' => '', 'method' => 'replace'))));
        }
    }
    // must be outside of the fieldset in order to be processed
    $form->add_field('file', array('type' => 'file', 'ajax_url' => $_SERVER['PHP_SELF'], 'destination' => dirname(__FILE__), 'event' => array(array('event' => 'change', 'callback' => 'batch_operations_form_callback', 'target' => 'batchoperationsform', 'effect' => 'fade', 'method' => 'replace'))));
    /*  $fieldset->add_field('submit', array(
        'type' => 'submit',
      ));
    */
    return $form;
}