Пример #1
0
    public static function on_editor_enable($id, $params = array())
    {
        if (self::$settings->get('active_editor', 'tinymce') == 'tinymce') {
            $doc = \GCore\Libs\Document::getInstance();
            //$params = array_merge(array('script_url' => \GCore\C::get('GCORE_FRONT_URL').'extensions/editors/assets/tinymce/tinymce.js'), $params);
            //$doc->addJsCode('jQuery(document).ready(function($){$("'.$id.'").tinymce('.stripslashes(json_encode($params)).');});');
            $params = array_merge(array('selector' => $id), $params);
            $doc->addJsCode('jQuery(document).ready(function($){ tinymce.init(' . stripslashes(json_encode($params)) . '); });');
            return true;
        } else {
            if (self::$settings->get('active_editor', 'tinymce') == 'ckeditor') {
                $doc = \GCore\Libs\Document::getInstance();
                $doc->addJsCode('jQuery(document).ready(function($){CKEDITOR.replace("' . str_replace('#', '', $id) . '", ' . stripslashes(json_encode($params)) . ');});');
                return true;
            } else {
                if (self::$settings->get('active_editor', 'tinymce') == 'sceditor') {
                    $doc = \GCore\Libs\Document::getInstance();
                    $doc->addJsCode('jQuery(document).ready(
				function($){
					$("' . $id . '").sceditor({
						plugins: "bbcode",
						emoticonsRoot: "' . \GCore\C::get('GCORE_FRONT_URL') . 'extensions/editors/assets/sceditor/",
						style: "' . \GCore\C::get('GCORE_FRONT_URL') . 'extensions/editors/assets/sceditor/jquery.sceditor.default.min.css"
					});
				}
			);');
                    return true;
                }
            }
        }
    }
Пример #2
0
 public function display($connection, $area = 'front', $rows = array())
 {
     $doc = \GCore\Libs\Document::getInstance();
     //display header
     $custom_headers = array();
     if (!empty(\GCore\Helpers\DataPresenter::$headers)) {
         foreach (\GCore\Helpers\DataPresenter::$headers as $k => $header) {
             $custom_headers[$k] = \GCore\Helpers\Html::container($header['tag'], $header['text'], $header['atts']);
         }
     }
     ob_start();
     eval('?>' . $connection['Connection']['extras'][$area]['blocks']['custom']['header']);
     $header = ob_get_clean();
     $header = $this->view->Lister->prepare($connection, $header);
     $header = \GCore\Libs\Str::replacer($header, $custom_headers, array('exploder' => '*'));
     echo $this->view->Lister->translate($connection, \GCore\Libs\Str::replacer($header, $rows));
     //display rows
     foreach ($rows as $c_r_k => $row) {
         ob_start();
         eval('?>' . $connection['Connection']['extras'][$area]['blocks']['custom']['body']);
         $body = ob_get_clean();
         if (isset(\GCore\Helpers\DataPresenter::$cells_data[$c_r_k])) {
             $body = \GCore\Libs\Str::replacer($body, \GCore\Helpers\DataPresenter::$cells_data[$c_r_k], array('exploder' => '*'));
         }
         echo $this->view->Lister->translate($connection, \GCore\Libs\Str::replacer($body, $row));
     }
     //display footer
     ob_start();
     eval('?>' . $connection['Connection']['extras'][$area]['blocks']['custom']['footer']);
     $footer = ob_get_clean();
     $footer = $this->view->Lister->prepare($connection, $footer);
     $footer = \GCore\Libs\Str::replacer($footer, $custom_headers, array('exploder' => '*'));
     echo $this->view->Lister->translate($connection, \GCore\Libs\Str::replacer($footer, $rows));
 }
Пример #3
0
 function execute(&$form, $action_id)
 {
     $config = $form->actions_config[$action_id];
     $config = new \GCore\Libs\Parameter($config);
     $recaptcha_load = '<div class="g-recaptcha" data-sitekey="' . $config->get('site_key') . '"></div>';
     $doc = \GCore\Libs\Document::getInstance();
     $doc->addJsFile('https://www.google.com/recaptcha/api.js');
     //replace the string
     $form->form['Form']['content'] = str_replace('{ReCaptcha}', $recaptcha_load, $form->form['Form']['content']);
 }
Пример #4
0
    function execute(&$form, $action_id)
    {
        $config = !empty($form->actions_config[$action_id]) ? $form->actions_config[$action_id] : array();
        $config = new \GCore\Libs\Parameter($config);
        $doc = \GCore\Libs\Document::getInstance();
        $ajax_url = $config->get('results_event', '') ? r_(\GCore\C::get('GCORE_ROOT_URL') . 'index.php?ext=chronoforms&chronoform=' . $form->form['Form']['title'] . '&event=' . $config->get('results_event', '') . '&tvout=ajax') : $config->get('results_url', '');
        $doc->_('jquery');
        //$doc->_('autocompleter');
        //$doc->__('autocompleter', $config->get('field_selector', '.auto_complete'), array('path' => $ajax_url, 'length' => $config->get('length', 2), 'multiple' => $config->get('multiple', 0)));
        $doc->_('select2');
        $doc->addJsCode('
			jQuery(document).ready(function($){
				$("' . $config->get('field_selector', '') . '").select2(
					{
						minimumInputLength: ' . $config->get('length', 2) . ',
						containerCss:{"min-width":"200px"},
						width: "element",
						multiple: ' . ($config->get('multiple', 0) ? 'true' : 'false') . ',
						//tags: true,
						tokenSeparators: [","," "],
						ajax:{
							url: "' . $ajax_url . '",
							dataType: "json",
							data: function (term, page){
								return {
									' . $config->get('field_name', 'tag') . ': term,
								};
							},
							results: function (data, page){
								return {results: data};
							}
						},
						formatNoMatches: "' . $config->get('no_matches_msg', 'Error!!') . '",
						formatSearching: "' . $config->get('searching_msg', 'Loading....') . '",
						formatAjaxError: "' . $config->get('ajax_error_msg', 'Loading failed....') . '",
						' . ($config->get('multiple', 0) ? '
						initSelection: function(element, callback){
							var data = [];
							$(element.val().split(",")).each(function (){
								data.push({id: this, text: this});
							});
							callback(data);
						}
						' : '
						initSelection: function(element, callback){
							var data = {"id": $(element).val(), "text": $(element).val()};
							callback(data);
						}
						') . '
					}
				);
			});');
    }
Пример #5
0
 function execute(&$form, $action_id)
 {
     $config = !empty($form->actions_config[$action_id]) ? $form->actions_config[$action_id] : array();
     $config = new \GCore\Libs\Parameter($config);
     $doc = \GCore\Libs\Document::getInstance();
     $ajax_url = $config->get('results_event', '') ? r_(\GCore\C::get('GCORE_ROOT_URL') . 'index.php?ext=chronoforms&chronoform=' . $form->form['Form']['title'] . '&event=' . $config->get('results_event', '') . '&tvout=ajax') : $config->get('results_url', '');
     if ((bool) $form->params->get('jquery', 1) === true) {
         $doc->_('jquery');
     }
     $doc->_('autocompleter');
     $doc->__('autocompleter', $config->get('field_selector', '.auto_complete'), array('path' => $ajax_url, 'length' => $config->get('length', 2), 'multiple' => $config->get('multiple', 0)));
 }
Пример #6
0
 function execute(&$form, $action_id)
 {
     $config = $form->actions_config[$action_id];
     $config = new \GCore\Libs\Parameter($config);
     $field = $config->get('field', '');
     $data_path = $config->get('data_path', '');
     $value = $config->get('value_key', 'value');
     $prepend = $config->get('prepend_value', true);
     $text = $config->get('text_key', 'text');
     $level = $config->get('level_key', '');
     $labels = $config->get('labels', 'L1,L2,L3,L4');
     $limit = $config->get('limit', 999);
     $placeholder = $config->get('placeholder', 'Procurar...');
     $res = array();
     if (!empty($field) && !empty($data_path) && !empty($text) && !empty($value)) {
         $treeList = self::mount_tree($form->data[$data_path], $value, $prepend, $text, $level);
         self::mount_list($treeList, explode(',', $labels), $value, $text, $res);
         $list = implode("\n", $res);
         $clean_attrbs = array('type' => 'button', 'value' => 'Limpar', 'id' => 'limpar');
         $search_attrbs = array('type' => 'text', 'name' => 'busca', 'id' => 'busca', 'placeholder' => $placeholder, 'size' => '20');
         $clean = \GCore\Helpers\Html::_concat($clean_attrbs, array_keys($clean_attrbs), '<input ', ' />');
         $search = \GCore\Helpers\Html::_concat($search_attrbs, array_keys($search_attrbs), '<input ', ' />');
         $arvore = '<div id="arvore">' . $list . '</div>';
         $c_busca = \GCore\Helpers\Html::container('div', $search . $clean, array('id' => 'c_busca'));
         $modal_div = \GCore\Helpers\Html::container('div', $c_busca . $arvore, array('id' => 'modal_arvore', 'style' => array('display' => 'none')));
         $doc = \GCore\Libs\Document::getInstance();
         $doc->addCssFile('vendors/vakata-jstree/themes/default/style.min.css');
         $doc->addCssFile('vendors/jquery-ui-1.11.4/jquery-ui.min.css');
         $doc->addJsFile('vendors/vakata-jstree/jstree.min.js');
         $doc->addJsFile('vendors/jquery-ui-1.11.4/jquery-ui.min.js');
         $fieldKey = $this->getFieldKey($form->form['Form']['extras']['fields'], $field);
         $campo = $form->form['Form']['extras']['fields'][$fieldKey];
         $condicoes = $config->get('conditions', "");
         if (!empty($condicoes)) {
             $condicoes = explode("\n", $condicoes);
             foreach ($condicoes as $condicao) {
                 $condicao = explode("::", $condicao);
                 // $condicao[0]: Condição; $condicao[1]: Mensagem
                 $elseifs = ' else if (' . $condicao[0] . ')' . '{ alert("' . $condicao[1] . '"); event.preventDefault(); return false; }';
             }
         } else {
             $elseifs = '';
         }
         $opcoes = array('{field}' => $field, '{fieldID}' => $campo['id'], '{label}' => $campo['label']['text'], '{limit}' => empty($limit) || is_null($limit) ? 999 : $limit, '{condicoes}' => $elseifs);
         $doc->addJsCode($this->get_script($opcoes));
         $doc->addCssCode($this->get_style($campo['id']));
         $form->form['Form']['content'] = str_replace('<div id="modal_tree" style="display: none;"></div>', $modal_div, $form->form['Form']['content']);
     }
     //        echo 'Field name: ' . $field . '<br/>';
     //        echo 'Chave: ' . array_search($field, array_column($form->form['Form']['extras']['fields'], 'name'));
 }
Пример #7
0
 function execute(&$form, $action_id)
 {
     $config = $form->actions_config[$action_id];
     $config = new \GCore\Libs\Parameter($config);
     if (!defined('RECAPTCHA_API_SERVER')) {
         define('RECAPTCHA_API_SERVER', $config->get('api_server'));
     }
     if (!defined('RECAPTCHA_API_SECURE_SERVER')) {
         define('RECAPTCHA_API_SECURE_SERVER', $config->get('api_secure_server'));
     }
     $recaptcha_load = "<div id='recaptcha'>" . $this->recaptcha_get_html($config->get('public_key'), null, (bool) $config->get('ssl_server')) . "</div>";
     $script = "\n\tvar RecaptchaOptions = {\n\t\ttheme : '" . $config->get('theme', 'red') . "',\n\t\tlang  : '" . $config->get('lang', 'en') . "'\n\t};\n    \t\t";
     $doc = \GCore\Libs\Document::getInstance();
     $doc->addJsCode($script);
     //add CSS fix to the recaptcha input field
     $doc->addCssCode('label.recaptcha_input_area_text{line-height: 12px !important;}');
     //replace the string
     $form->form['Form']['content'] = str_replace('{ReCaptcha}', $recaptcha_load, $form->form['Form']['content']);
 }
Пример #8
0
 public static function render($types = array())
 {
     if (!empty($types)) {
         //add the system css file
         $doc = \GCore\Libs\Document::getInstance();
         $doc->addCssFile('system_messages');
         $system_messages = array();
         foreach ($types as $type => $messages) {
             $list = array();
             $messages = \GCore\Libs\Arr::normalize($messages);
             foreach ($messages as $message) {
                 $list[] = \GCore\Helpers\Html::container('li', $message, array());
             }
             $ul = \GCore\Helpers\Html::container('ul', implode("\n", $list), array());
             $system_messages[] = self::wrap($ul, $type);
         }
         $system_messages_container = \GCore\Helpers\Html::container('div', implode("\n", $system_messages), array('class' => 'system-message-container'));
         return $system_messages_container;
     }
     return '';
 }
    function execute(&$form, $action_id)
    {
        $config = !empty($form->actions_config[$action_id]) ? $form->actions_config[$action_id] : array();
        $config = new \GCore\Libs\Parameter($config);
        $doc = \GCore\Libs\Document::getInstance();
        $doc->_('jquery');
        $doc->addJsFile(\GCore\C::ext_url('chronoforms', 'admin') . 'actions/load_signature_pad/signature_pad.min.js');
        $doc->addJsCode('
			jQuery(document).ready(function($){
				var wrapper = $("canvas").closest(".m-signature-pad"),
					clearButton = wrapper.find("[data-action=clear]"),
					saveButton = wrapper.find("[data-action=save]"),
					canvas = wrapper.find("canvas").get(0),
					signaturePad;
				
				function resizeCanvas() {
					var ratio =  window.devicePixelRatio || 1;
					canvas.width = canvas.offsetWidth * ratio;
					canvas.height = canvas.offsetHeight * ratio;
					canvas.getContext("2d").scale(ratio, ratio);
				}
				
				window.onresize = resizeCanvas;
				resizeCanvas();
				
				signaturePad = new SignaturePad(canvas, {
					"onEnd": function(){
						wrapper.find("input[type=hidden]").val(signaturePad.toDataURL());
					},
				});
				
				clearButton.on("click", function (event) {
					signaturePad.clear();
				});
				
				if(wrapper.find("input[type=hidden]").val()){
					signaturePad.fromDataURL(wrapper.find("input[type=hidden]").val());
				}
			});');
    }
Пример #10
0
 public static function getInstance($name = '', $settings = array())
 {
     static $instances;
     if (!isset($instances)) {
         $instances = array();
     }
     if (empty($name)) {
         $doc = \GCore\Libs\Document::getInstance();
         $name = $doc->theme;
     }
     if (empty($name)) {
         $class = '\\GCore\\Helpers\\Theme';
     } else {
         $class = '\\GCore\\Helpers\\Themes\\' . \GCore\Libs\Str::camilize($name);
     }
     if (empty($instances[$name])) {
         $instances[$name] = new $class($settings);
         return $instances[$name];
     } else {
         return $instances[$name];
     }
 }
Пример #11
0
 function execute(&$form, $action_id)
 {
     $config = !empty($form->actions_config[$action_id]) ? $form->actions_config[$action_id] : array();
     $config = new \GCore\Libs\Parameter($config);
     $doc = \GCore\Libs\Document::getInstance();
     ob_start();
     eval('?>' . $config->get('files', ''));
     $files_lines = ob_get_clean();
     if (strlen(trim($files_lines)) > 0) {
         $files = explode("\n", $files_lines);
         foreach ($files as $file) {
             //add file
             $doc->addCssFile(trim($file));
         }
     }
     ob_start();
     eval('?>' . $config->get('content', ''));
     $output = ob_get_clean();
     //add code
     if (strlen(trim($output)) > 0) {
         $doc->addCssCode($output);
     }
 }
Пример #12
0
 public function display($connection, $area = 'front', $rows = array())
 {
     $doc = \GCore\Libs\Document::getInstance();
     $tds = array();
     $trs = array();
     $ths = array();
     //display header
     ob_start();
     eval('?>' . $connection['Connection']['extras'][$area]['blocks']['table']['header']);
     $header = ob_get_clean();
     $header = $this->view->Lister->translate($connection, $this->view->Lister->prepare($connection, $header));
     echo \GCore\Libs\Str::replacer($header, $rows);
     $thead = \GCore\Helpers\Html::container('thead', implode("\n", $ths), array());
     $tbody = \GCore\Helpers\Html::container('tbody', implode("\n", $trs), array());
     if (!empty(\GCore\Helpers\DataPresenter::$columns)) {
         //\GCore\Helpers\DataPresenter::set_cells_data();
         $trs = \GCore\Helpers\DataTable::trs();
         $tbody = \GCore\Helpers\Html::container('tbody', implode("\n", $trs), array());
         foreach (\GCore\Helpers\DataPresenter::$headers as $k => $header) {
             $th_tag = \GCore\Helpers\Html::container($header['tag'], $header['text'], $header['atts']);
             $ths[] = \GCore\Helpers\Html::container('th', $th_tag, array('class' => 'th-' . $k));
         }
         $thead = \GCore\Helpers\Html::container('thead', \GCore\Helpers\Html::container('tr', implode("\n", $ths)), array());
     }
     $table = \GCore\Helpers\Html::container('table', $thead . $tbody, array('class' => 'table table-hover table-censored', 'id' => 'gcore_table_list__#'));
     $table = \GCore\Helpers\DataLoader::load($table, \GCore\Helpers\DataPresenter::$cells_data);
     \GCore\Helpers\DataPresenter::_flush();
     //show table
     echo $this->view->Lister->translate($connection, $table);
     //display footer
     ob_start();
     eval('?>' . $connection['Connection']['extras'][$area]['blocks']['table']['footer']);
     $footer = ob_get_clean();
     $footer = $this->view->Lister->translate($connection, $this->view->Lister->prepare($connection, $footer));
     echo \GCore\Libs\Str::replacer($footer, $rows);
     //echo '</div>';
 }
Пример #13
0
    function execute(&$form, $action_id)
    {
        $config = $form->actions_config[$action_id];
        $config = new \GCore\Libs\Parameter($config);
        $session = \GCore\Libs\Base::getSession();
        //extract questions
        $field_name = \GCore\Libs\Str::rand();
        $session_key = $config->get('session_key', '');
        if (empty($session_key)) {
            $session_key = $form->form['Form']['title'];
        }
        $session->set('chrono_honeypot_' . $session_key, array('name' => $field_name, 'time' => time()));
        $field_code = \GCore\Helpers\Html::input($field_name, array('type' => 'hidden', 'value' => 1));
        if ($config->get('method', 'static') == 'static') {
            $form->form['Form']['content'] = $form->form['Form']['content'] . $field_code;
        } else {
            $doc = \GCore\Libs\Document::getInstance();
            $doc->addJsCode('
			jQuery(document).ready(function($){
				$("#chronoform-' . $form->form['Form']['title'] . '").append(\'' . $field_code . '\');
			});
			');
        }
    }
Пример #14
0
    function execute(&$form, $action_id)
    {
        $config = $form->actions_config[$action_id];
        $config = new \GCore\Libs\Parameter($config);
        $failed = false;
        $failed_fields = array();
        foreach ($config->get('rules') as $rule => $data) {
            if (!empty($data)) {
                $fields = explode("\n", $data);
                foreach ($fields as $field) {
                    $fch = explode(':', $field);
                    if (count($fch)) {
                        if (!in_array($rule, array('not_empty', 'is_empty')) and strlen((string) $form->data($fch[0])) == 0) {
                            continue;
                        }
                        $valid = \GCore\Libs\Validate::$rule($form->data($fch[0]));
                        if (!$valid) {
                            $failed = true;
                            if ($config->get('display_errors_top', 1)) {
                                $form->errors[] = $failed_fields[trim($fch[0])] = isset($fch[1]) ? trim($fch[1]) : $config->get('default_error', 'Error occurred.');
                            } else {
                                $failed_fields[trim($fch[0])] = isset($fch[1]) ? trim($fch[1]) : $config->get('default_error', 'Error occurred.');
                            }
                        }
                    }
                }
            }
        }
        if ($config->get('highlight_fields', 1) and !empty($failed_fields)) {
            $doc = \GCore\Libs\Document::getInstance();
            $doc->_('jquery');
            $doc->_('gtooltip');
            $doc->_('gvalidation');
            $doc->addCssCode('
				.custom_server_validation_error{
					background-color:red;
					color:#fff;
					display:block;
					padding:3px;
					font-size:12px;
					line-height:13px;
					margin-top:3px;
					border-radius:3px;
				}
			');
            $form_id = 'chronoform-' . $form->form['Form']['title'];
            $sts = array();
            foreach ($failed_fields as $failed_field => $error) {
                $sts[] = 'jQuery("#' . $form_id . ' :input[name^=' . $failed_field . ']").closest(".gcore-input").append("<span class=\\"custom_server_validation_error\\">' . $error . '</span>");';
            }
            $doc->addJsCode('
				jQuery(document).ready(function(){
					' . implode("\n", $sts) . '
				});
			');
        }
        if ($failed) {
            $this->events['fail'] = 1;
        } else {
            $this->events['success'] = 1;
        }
    }
Пример #15
0
 public static function getHeader()
 {
     $doc = \GCore\Libs\Document::getInstance();
     static $used;
     if (!isset($used)) {
         $used = array();
     }
     $chunks = array();
     /*$chunks[] = '
     		<script type="text/javascript">
     		if("undefined"==typeof window.jQuery){}else{
     			var gcore_jQuery_bak = window.jQuery;
     			var gcore_$_bak = window.$;
     		}
     		if("undefined"==typeof gcore_jQuery){}else{
     			window.jQuery = gcore_jQuery;
     			window.$ = gcore_$;
     		}
     		</script>
     		';*/
     /*$JDocument = \JFactory::getDocument();
     		if(!method_exists($JDocument, 'addCustomTag')){
     			return;
     		}*/
     //add css files list
     foreach ($doc->cssfiles as $k => $cssfile) {
         if (empty($used['cssfiles'][$k])) {
             $used['cssfiles'][$k] = true;
             $cssfile['href'] = \GCore\C::fix_urls($cssfile['href']);
             $chunks[] = \GCore\Helpers\Html::_concat($cssfile, array_keys($cssfile), '<link ', ' />');
             //$JDocument->addStyleSheet(\GCore\C::fix_urls($cssfile['href']));
         }
     }
     //add css code list
     foreach ($doc->csscodes as $media => $codes) {
         $chunks[] = \GCore\Helpers\Html::container('style', implode("\n", $codes), array('type' => 'text/css', 'media' => $media));
         //$JDocument->addStyleDeclaration(implode("\n", $codes));
         foreach ($doc->csscodes[$media] as $k => $code) {
             unset($doc->csscodes[$media][$k]);
         }
     }
     //add js files list
     foreach ($doc->jsfiles as $k => $jsfile) {
         /*if(strpos($jsfile['src'], 'jquery.js') !== false){
         			$document = \JFactory::getDocument();
         			$document->addScript($jsfile['src']);
         			continue;
         		}*/
         if (empty($used['jsfiles'][$k])) {
             $used['jsfiles'][$k] = true;
             $jsfile['src'] = \GCore\C::fix_urls($jsfile['src']);
             $chunks[] = \GCore\Helpers\Html::_concat($jsfile, array_keys($jsfile), '<script ', '></script>');
         }
     }
     //add js code list
     foreach ($doc->jscodes as $type => $codes) {
         $chunks[] = \GCore\Helpers\Html::container('script', implode("\n", $codes), array('type' => $type));
         foreach ($doc->jscodes[$type] as $k => $code) {
             unset($doc->jscodes[$type][$k]);
         }
     }
     foreach ($doc->headertags as $k => $code) {
         $chunks[] = $code;
         unset($doc->headertags[$k]);
     }
     /*$chunks[] = '
     		<script type="text/javascript">
     		if("undefined"==typeof gcore_jQuery){
     			var gcore_jQuery = window.jQuery;
     			var gcore_$ = window.$;
     		}
     		if("undefined"==typeof gcore_jQuery_bak){}else{
     			window.jQuery = gcore_jQuery_bak;
     			window.$ = gcore_$_bak;
     		}
     		</script>
     		';*/
     $header = implode("\n", array_filter($chunks));
     //$JDocument->addCustomTag(\GCore\C::fix_urls($header));
     return \GCore\C::fix_urls($header);
     //return implode("\n", array_filter($chunks));
 }
Пример #16
0
<?php

/* @copyright:ChronoEngine.com @license:GPLv2 */
defined('_JEXEC') or die('Restricted access');
defined("GCORE_SITE") or die;
$doc = \GCore\Libs\Document::getInstance();
$doc->_('jquery');
$doc->_('jquery-ui');
$doc->_('forms');
$doc->__('tabs', '#details-panel');
$this->Toolbar->addButton('save', 'index.php?ext=editors&act=save_settings', l_('SAVE'), $this->Assets->image('save', 'toolbar/'));
?>
<form action="index.php?ext=editors&act=save_settings" method="post" name="admin_form" id="admin_form">	
	<div id="details-panel">
		<ul>
			<li><a href="#general"><?php 
echo l_('GENERAL');
?>
</a></li>
		</ul>
		<div id="general">
			<?php 
echo $this->Html->formStart();
?>
			<?php 
echo $this->Html->formSecStart();
?>
			<?php 
echo $this->Html->formLine('Editors[active_editor]', array('type' => 'dropdown', 'label' => l_('EDITORS_ACTIVE_EDITOR'), 'values' => array('tinymce'), 'options' => array('' => 'GCore Editor - Default', 'tinymce' => 'TinyMCE', 'ckeditor' => 'CKEditor')));
?>
			<?php 
Пример #17
0
 public static function loadFiles()
 {
     $doc = \GCore\Libs\Document::getInstance();
     $doc->_('jquery');
     $doc->addJsFile(\GCore\Helpers\Assets::js('toolbar', ''));
     $doc->addCssFile(\GCore\Helpers\Assets::css('toolbar', ''));
 }
Пример #18
0
	function beforeSave(&$data, &$params, $mode){
		foreach($data['extras']['actions_config'] as $f_k => $f_info){
			if(strpos($f_k, '{N}') !== false){
				unset($data['extras']['actions_config'][$f_k]);
			}
		}
		if(!empty($data['extras']['fields']) AND $data['form_type'] == '1'){
			foreach($data['extras']['fields'] as $f_k => $f_info){
				if(strpos($f_k, '{N}') !== false){
					unset($data['extras']['fields'][$f_k]);
				}
			}
			//$data['wizardcode'] = serialize($data['fields_config']);
			if(!empty($data['extras']['fields'])){
				ob_start();
				\GCore\Helpers\Html::active_set('div');//!empty($data['params']['html_helper_set']) ? $data['params']['html_helper_set'] : 'div');
				/*if(!empty($data['params']['theme']) AND $data['params']['theme'] != 'bootstrap3'){
					$doc = \GCore\Libs\Document::getInstance();
					$doc->theme = $data['params']['theme'];
				}*/
				$theme = !empty($data['params']['theme']) ? $data['params']['theme'] : '';
				$doc = \GCore\Libs\Document::getInstance();
				$doc->theme = $theme;
				//echo \GCore\Helpers\Html::formSecStart();

				$containers_ids = array();
				$containers_configs = array();
				foreach($data['extras']['fields'] as $k => $field){
					if($field['type'] == 'multi' AND isset($field['inputs'])){
						foreach($field['inputs'] as $sub_id => $input){
							$field['inputs'][$sub_id] = $this->fix_field_data($field['inputs'][$sub_id]);
						}
					}else{
						$field = $this->fix_field_data($field);
					}
					if($field['type'] == 'container'){
						//if this container is also a root container then close existing ones
						if($field['container_id'] == 0){
							//close all open containers
							foreach($containers_ids as $containers_id){
								$container_id = array_pop($containers_ids);
								echo $this->build_container_code($containers_configs[$container_id], 'end', $k);
							}
						}else{
							check_parent_container:
							if(!empty($containers_ids)){
								$last_container_id = array_pop($containers_ids);
								if($field['container_id'] == $last_container_id){
									//do nothing, we should add the field as regular
									array_push($containers_ids, $last_container_id);
								}else{
									//one container has just ended, because the element belongs to a differnt one, close it
									echo $this->build_container_code($containers_configs[$last_container_id], 'end', $k);
									goto check_parent_container;
								}
							}
						}
						echo $this->build_container_code($field, 'start', $k);
						array_push($containers_ids, $k);
						$containers_configs[$k] = $field;
					}else{
						if(isset($field['container_id'])){
							if($field['container_id'] == 0){
								//close all open containers
								foreach(array_keys($containers_ids) as $c_k){
									$container_id = array_pop($containers_ids);
									echo $this->build_container_code($containers_configs[$container_id], 'end', $k);
								}
							}else{
								check_container:
								if(!empty($containers_ids)){
									$last_container_id = array_pop($containers_ids);
									if($field['container_id'] == $last_container_id){
										//do nothing, we should add the field as regular
										array_push($containers_ids, $last_container_id);
									}else{
										//one container has just ended, because the element belongs to a differnt one, close it
										echo $this->build_container_code($containers_configs[$last_container_id], 'end', $k);
										goto check_container;
									}
								}
							}
						}

						if($field['type'] == 'hidden' OR !empty($field['pure_code'])){
							echo \GCore\Helpers\Html::input($field['name'], $field);
						}else{
							if(!empty($field['dynamic_data']['enabled']) AND !empty($field['dynamic_data']['data_path']) AND !empty($field['dynamic_data']['value_key']) AND !empty($field['dynamic_data']['text_key'])){
								echo $this->build_dynamic_element($field);
							}else{
								/*if(isset($field['label'])){
									$position = isset($field['label_pos']) ? $field['label_pos'] : 'left';
									$field['label'] = array('text' => $field['label'], 'position' => $position);
								}*/
								if($field['type'] == 'multi' AND isset($field['inputs'])){
									foreach($field['inputs'] as $sub_id => $input){
										if(!empty($input['dynamic_data']['enabled']) AND !empty($input['dynamic_data']['data_path']) AND !empty($input['dynamic_data']['value_key']) AND !empty($input['dynamic_data']['text_key'])){
											$field['inputs'][$sub_id]['code'] = $this->build_dynamic_element($input, true);
											$field['inputs'][$sub_id]['type'] = 'custom';
											//$field['inputs'][$sub_id]['label'] = '';
										}
									}
									echo \GCore\Helpers\Html::formLine($field['name'], $field);
								}else{
									echo \GCore\Helpers\Html::formLine($field['name'], $field);
								}
								//echo \GCore\Helpers\Html::formLine($field['name'], $field);
							}
						}
					}
				}
				//close any empty containers with no fields after them
				while($container_id = array_pop($containers_ids)){
					echo $this->build_container_code($containers_configs[$container_id], 'end', $container_id);
				}
				//echo \GCore\Helpers\Html::formSecEnd();
				//echo \GCore\Helpers\Html::formEnd();
				$data['content'] = ob_get_clean();
			}else{
				$data['content'] = '';
			}
		}
		foreach($data['extras']['actions_config'] as $k => $act_info){
			if(!empty($act_info['__action_title__'])){
				$action_title = $act_info['__action_title__'];
				$classname = '\GCore\Admin\Extensions\Chronoforms\Actions\\'.\GCore\Libs\Str::camilize($action_title)."\\".\GCore\Libs\Str::camilize($action_title);
				if(method_exists($classname, 'on_form_save')){
					${$classname} = new $classname();
					${$classname}->on_form_save($data, $k);
				}
			}
		}
		if(!empty(self::$tabs)){
			foreach(self::$tabs as $container_id => $tabs){
				$tabs_bar = '';
				foreach($tabs as $tab_id => $tab_title){
					$tab_class = empty($tabs_bar) ? ' class="active"' : '';
					$tabs_bar .= '<li'.$tab_class.'><a href="#'.$tab_id.'" data-g-toggle="tab">'.$tab_title.'</a></li>';
				}
				$data['content'] = str_replace('__TABS_TITLES__'.$container_id.'__', $tabs_bar, $data['content']);
			}
		}
		parent::beforeSave($data, $params, $mode);
	}
Пример #19
0
 function __construct()
 {
     $doc = \GCore\Libs\Document::getInstance();
     $doc->_('jquery');
     $doc->_('gcore-ui');
 }
Пример #20
0
 public static function call($site, $extension, $controller = '', $action = '', $params = array())
 {
     if (!empty($params['_app_thread'])) {
         $thread = $params['_app_thread'];
     } else {
         $thread = 'x_core_' . rand();
     }
     $x_app = self::getInstance($site, $thread);
     $x_app->extension = $extension;
     $x_app->controller = $controller;
     $x_app->action = $action;
     $x_app->set($params);
     $x_app->dispatch(true);
     $tvout = strlen(\GCore\Libs\Request::data('tvout', null)) > 0 ? \GCore\Libs\Request::data('tvout') : '';
     if ($tvout != 'ajax' and GCORE_SITE == 'admin') {
         $doc = \GCore\Libs\Document::getInstance();
         $doc->addCssFile('joomla_fixes');
     }
     return $x_app->buffer;
 }
Пример #21
0
    function execute(&$form, $action_id)
    {
        $config = !empty($form->actions_config[$action_id]) ? $form->actions_config[$action_id] : array();
        $config = new \GCore\Libs\Parameter($config);
        $doc = \GCore\Libs\Document::getInstance();
        //$doc->_('forms');
        //check fields validation
        /*
        if(!empty($form->form['Form']['extras']['fields'])){
        	$validations = array();
        	foreach($form->form['Form']['extras']['fields'] as $k => $field){
        		if(!empty($field['validation'])){
        			foreach($field['validation'] as $rule => $rule_data){
        				$validations[$rule][] = $field['name'].(strlen(trim($rule_data)) > 0 ? ':'.$rule_data : ':');
        			}
        		}
        		if(!empty($field['inputs'])){
        			foreach($field['inputs'] as $fn => $field_input){
        				if(!empty($field_input['validation'])){
        					foreach($field_input['validation'] as $rule => $rule_data){
        						$validations[$rule][] = $field_input['name'].(strlen(trim($rule_data)) > 0 ? ':'.$rule_data : ':');
        					}
        				}
        			}
        		}
        	}
        	foreach($validations as $rule => &$fields){
        		$fields = implode("\n", $fields);
        	}
        	$form->execute('client_validation', array('rules' => $validations));
        }
        */
        $theme = '';
        if ($form->params->get('theme', 'bootstrap3') == 'bootstrap3') {
            $theme = 'bootstrap3';
        } else {
            if ($form->params->get('theme', 'bootstrap3') == 'semantic1') {
                $theme = 'semantic1';
            } else {
                if ($form->params->get('theme', 'bootstrap3') == 'gcoreui') {
                    $theme = 'gcoreui';
                } else {
                    if ($form->params->get('theme', 'bootstrap3') == 'none') {
                        $theme = 'none';
                    }
                }
            }
        }
        $doc->theme = $theme;
        \GCore\Helpers\Theme::getInstance();
        if ($form->params->get('tight_layout', 0)) {
            $doc->addCssCode('
				.gbs3 .gcore-form-row{margin-bottom:5px;}
				.gcore-form-row .gcore-line-td{margin:0;}
			');
        }
        //check fields events
        if (!empty($form->form['Form']['extras']['fields'])) {
            $events_codes = array();
            $events_codes[] = 'jQuery(document).ready(function($){';
            foreach ($form->form['Form']['extras']['fields'] as $k => $field) {
                if (!empty($field['id']) and !empty($field['events'])) {
                    if ($field['type'] == 'dropdown') {
                        $change_event = 'change';
                    } else {
                        $change_event = 'click';
                    }
                    $_f = '$("[name=\'' . $field['name'] . '\']").on("' . $change_event . '", function(){';
                    $_l = '});';
                    $_m = array();
                    foreach ($field['events'] as $k => $event_data) {
                        if (strlen($event_data['action']) and strlen($event_data['target'])) {
                            $_m[] = $this->create_event($field, $event_data, $form);
                        }
                    }
                    if (!empty($_m)) {
                        $events_codes[] = $_f . "\n" . implode("\n", $_m) . "\n" . $_l;
                    }
                }
                if (!empty($field['inputs'])) {
                    foreach ($field['inputs'] as $fn => $field_input) {
                        if (!empty($field_input['id']) and !empty($field_input['events'])) {
                            if ($field_input['type'] == 'dropdown') {
                                $change_event = 'change';
                            } else {
                                $change_event = 'click';
                            }
                            $_f = '$("[name=\'' . $field_input['name'] . '\']").on("' . $change_event . '", function(){';
                            $_l = '});';
                            $_m = array();
                            foreach ($field_input['events'] as $k => $event_data) {
                                if (strlen($event_data['action']) and strlen($event_data['target'])) {
                                    $_m[] = $this->create_event($field_input, $event_data, $form);
                                }
                            }
                            if (!empty($_m)) {
                                $events_codes[] = $_f . "\n" . implode("\n", $_m) . "\n" . $_l;
                            }
                        }
                    }
                }
            }
            $events_codes[] = '});';
            if ((bool) $form->params->get('jquery', 1) === true) {
                $doc->_('jquery');
            }
            $form->execute('js', array('content' => implode("\n", $events_codes)));
        }
        ob_start();
        eval('?>' . $form->form['Form']['content']);
        $output = ob_get_clean();
        //select the page to display
        $form_pages = explode('<!--_CHRONOFORMS_PAGE_BREAK_-->', $output);
        $active_page_index = (int) $config->get('page', 1) - 1;
        $output = $form_pages[$active_page_index];
        //get current url
        $current_url = \GCore\Libs\Url::current();
        if ((bool) $config->get('relative_url', 1) === false) {
            $current_url = r_('index.php?ext=chronoforms');
        }
        //generate <form tag
        $form_tag = '<form';
        $form_action = strlen($config->get('action_url', '')) > 0 ? $config->get('action_url', '') : \GCore\Libs\Url::buildQuery($current_url, array('chronoform' => $form->form['Form']['title'], 'event' => $config->get('submit_event', 'submit')));
        $form_tag .= ' action="' . r_($form_action) . '"';
        //get method
        $form_method = $config->get('form_method', 'post');
        if ($config->get('form_method', 'post') == 'file') {
            $form_tag .= ' enctype="multipart/form-data"';
            $form_method = 'post';
        }
        $form_tag .= ' method="' . $form_method . '"';
        $form_tag .= ' name="' . $form->form['Form']['title'] . '"';
        $form_id = 'chronoform-' . $form->form['Form']['title'];
        $form_tag .= ' id="' . $form_id . '"';
        $form_tag .= ' class="' . $config->get('form_class', 'chronoform') . ($theme == 'bootstrap3' ? ' form-horizontal' : '') . '"';
        if ($config->get('form_tag_attach', '')) {
            $form_tag .= $config->get('form_tag_attach', '');
        }
        $form_tag .= '>';
        if (empty($theme)) {
            $doc->_('forms');
        }
        /*
        if($theme == 'bootstrap3'){
        	$doc->_('jquery');
        	$doc->_('bootstrap');
        	//echo '<div class="gcore chronoform-container">';
        }
        */
        if (strpos($output, 'data-wysiwyg="1"') !== false) {
            $doc->_('jquery');
            $doc->_('editor');
            $doc->addJsCode('jQuery(document).ready(function($){ $(\'*[data-wysiwyg="1"]\').each(function(){ tinymce.init({"selector":"#"+$(this).attr("id")}); }); });');
        }
        if (strpos($output, 'validate[') !== false) {
            $doc->_('jquery');
            $doc->_('gvalidation');
            $doc->addJsCode('jQuery(document).ready(function($){ $("#chronoform-' . $form->form['Form']['title'] . '").gvalidate(); });');
            if ($config->get('required_labels_identify', 1)) {
                if ($form->params->get('theme', 'bootstrap3') == 'bootstrap3') {
                    $required_icon = '<i class=\'fa fa-asterisk\' style=\'color:#ff0000; font-size:9px; vertical-align:top;\'></i>';
                } else {
                    $required_icon = '<span style=\'color:#ff0000; font-size:12px; vertical-align:top;\'>*</span>';
                }
                $doc->addJsCode('jQuery(document).ready(function($){
					$("#chronoform-' . $form->form['Form']['title'] . '").find(":input[class*=validate]").each(function(){
						if($(this).attr("class").indexOf("required") >= 0 || $(this).attr("class").indexOf("group") >= 0){
							if($(this).closest(".gcore-subinput-container").length > 0){
								var required_parent = $(this).closest(".gcore-subinput-container");
							}else if($(this).closest(".gcore-form-row").length > 0){
								var required_parent = $(this).closest(".gcore-form-row");
							}
							if(required_parent.length > 0){
								var required_label = required_parent.find("label");
								if(required_label.length > 0 && !required_label.first().hasClass("required_label")){
									required_label.first().addClass("required_label");
									required_label.first().html(required_label.first().html() + " ' . $required_icon . '");
								}
							}
						}
					});
				});');
            }
        }
        if (strpos($output, 'data-tooltip') !== false) {
            $doc->_('jquery');
            $doc->_('gtooltip');
            $doc->addJsCode('jQuery(document).ready(function($){
				$("#chronoform-' . $form->form['Form']['title'] . '").find(":input").each(function(){
					if($(this).data("tooltip") && $(this).closest(".gcore-input").length > 0 && $(this).closest(".gcore-input").next(".input-tooltip").length < 1){
						var $tip = $(\'<i class="fa fa-exclamation-circle input-tooltip" style="float:left; padding:7px 0px 0px 7px;"></i>\').attr("title", $(this).data("tooltip"));
						$(this).closest(".gcore-input").after($tip);
					}
				});
				$("#chronoform-' . $form->form['Form']['title'] . ' .input-tooltip").gtooltip("hover");
			});');
        }
        if (strpos($output, 'data-load-state') !== false) {
            $doc->_('jquery');
            $doc->addJsCode('jQuery(document).ready(function($){
				$("#chronoform-' . $form->form['Form']['title'] . '").find(\':input[data-load-state="disabled"]\').prop("disabled", true);
				$("#chronoform-' . $form->form['Form']['title'] . '").find(\':input[data-load-state="hidden"]\').css("display", "none");
				$("#chronoform-' . $form->form['Form']['title'] . '").find(\':input[data-load-state="hidden_parent"]\').each(function(){
					if($(this).closest(".gcore-subinput-container").length > 0){
						$(this).closest(".gcore-subinput-container").css("display", "none");
					}else if($(this).closest(".gcore-form-row").length > 0){
						$(this).closest(".gcore-form-row").css("display", "none");
					}
				});
			});');
        }
        if (strpos($output, 'data-inputmask=') !== false) {
            $doc->_('jquery');
            $doc->_('jquery.inputmask');
            $doc->addJsCode('jQuery(document).ready(function($){ $(":input").inputmask(); });');
        }
        if (strpos($output, 'data-gdatetimepicker') !== false) {
            $doc->_('jquery');
            $doc->_('gdatetimepicker');
            $doc->addJsCode('jQuery(document).ready(function($){ $(\'*[data-gdatetimepicker="1"]\').gdatetimepicker(); });');
        }
        if ((bool) $config->get('ajax_submit', 0) === true) {
            $doc->_('jquery');
            $ajax_url = \GCore\Libs\Url::buildQuery($form_action, array('tvout' => 'ajax'));
            $doc->addJsCode('
				jQuery(document).ready(function($){
					function chrono_ajax_submit(){
						$("#' . $form_id . '").submit(function(){
							var overlay = $("<div/>").css({
								"position": "fixed",
								"top": "0",
								"left": "0",
								"width": "100%",
								"height": "100%",
								"background-color": "#000",
								"filter": "alpha(opacity=50)",
								"-moz-opacity": "0.5",
								"-khtml-opacity": "0.5",
								"opacity": "0.5",
								"z-index": "10000",
								"background-image":"url(\\"' . \GCore\Helpers\Assets::image('loading-small.gif') . '\\")",
								"background-position":"center center",
								"background-repeat":"no-repeat",
							});
							$("#' . $form_id . '").append(overlay);
							$.ajax({
								"type" : "POST",
								"url" : "' . r_($ajax_url) . '",
								"data" : $("#' . $form_id . '").serialize(),
								"success" : function(res){
									$("#' . $form_id . '").replaceWith(res);
									chrono_ajax_submit();
								},
							});
							return false;
						});
					}
					chrono_ajax_submit();
				});
			');
        }
        echo $form_tag;
        //if ajax then display system messages inside the form
        if ((bool) $config->get('ajax_submit', 0) === true) {
            $doc = \GCore\Libs\Document::getInstance();
            $doc->addCssFile('system_messages');
            $session = \GCore\Libs\Base::getSession();
            $types = $session->getFlash();
            echo \GCore\Helpers\Message::render($types);
        }
        //add fields values
        $output = \GCore\Helpers\DataLoader::load($output, $form->data);
        //show output
        echo $output;
        echo '</form>';
        /*if($theme == 'bootstrap3'){
        			echo '</div>';
        		}*/
    }
Пример #22
0
    function execute(&$form, $action_id)
    {
        $config = !empty($form->actions_config[$action_id]) ? $form->actions_config[$action_id] : array();
        $config = new \GCore\Libs\Parameter($config);
        $doc = \GCore\Libs\Document::getInstance();
        $form_id = 'chronoform-' . $form->form['Form']['title'];
        //$doc->_('forms');
        //check fields validation
        /*
        if(!empty($form->form['Form']['extras']['fields'])){
        	$validations = array();
        	foreach($form->form['Form']['extras']['fields'] as $k => $field){
        		if(!empty($field['validation'])){
        			foreach($field['validation'] as $rule => $rule_data){
        				$validations[$rule][] = $field['name'].(strlen(trim($rule_data)) > 0 ? ':'.$rule_data : ':');
        			}
        		}
        		if(!empty($field['inputs'])){
        			foreach($field['inputs'] as $fn => $field_input){
        				if(!empty($field_input['validation'])){
        					foreach($field_input['validation'] as $rule => $rule_data){
        						$validations[$rule][] = $field_input['name'].(strlen(trim($rule_data)) > 0 ? ':'.$rule_data : ':');
        					}
        				}
        			}
        		}
        	}
        	foreach($validations as $rule => &$fields){
        		$fields = implode("\n", $fields);
        	}
        	$form->execute('client_validation', array('rules' => $validations));
        }
        */
        $theme = $form->params->get('theme', 'bootstrap3');
        /*if($form->params->get('theme', 'bootstrap3') == 'bootstrap3'){
        			$theme = 'bootstrap3';
        		}else if($form->params->get('theme', 'bootstrap3') == 'bootstrap3_pure'){
        			$theme = 'bootstrap3_pure';
        		}else if($form->params->get('theme', 'bootstrap3') == 'semantic1'){
        			$theme = 'semantic1';
        		}else if($form->params->get('theme', 'bootstrap3') == 'gcoreui'){
        			$theme = 'gcoreui';
        		}else if($form->params->get('theme', 'bootstrap3') == 'none'){
        			$theme = 'none';
        		}*/
        $doc->theme = $theme;
        \GCore\Helpers\Theme::getInstance();
        if ($form->params->get('tight_layout', 0)) {
            $doc->addCssCode('
				.gbs3 .gcore-form-row{margin-bottom:5px;}
				.gcore-form-row .gcore-line-td{margin:0;}
			');
        }
        if ($form->params->get('rtl_support', 0)) {
            $doc->addCssCode('
				#' . $form_id . '.chronoform{direction:rtl;}
			');
            if ($form->params->get('theme', 'bootstrap3') == 'bootstrap3') {
                $doc->addCssCode('
					#' . $form_id . ' .gcore-label-left{
						float:right !important;
						min-width:160px;
						max-width:160px;
						padding-left:7px;
						text-align:right !important;
					}
					#' . $form_id . ' .gcore-label-top{
						display:block;
						text-align:right !important;
						float:none !important;
						width:auto !important;
					}
					#' . $form_id . ' .gcore-form-row > .gcore-label-checkbox{
						float:right !important;
						min-width:160px;
						padding-right:7px;
						padding-top: 1px !important;
						text-align:right !important;
					}
					#' . $form_id . ' .gcore-subinput-container{
						float:right;
					}
					#' . $form_id . ' .gcore-multiple-column .gcore-checkbox-item, .gcore-multiple-column .gcore-radio-item{
						float: right;
					}
					#' . $form_id . ' .gcore-multiple-column .gcore-checkbox-item:not(:first-child), .gcore-multiple-column .gcore-radio-item:not(:first-child){
						padding-right: 5px;
					}
				');
            }
            if ($form->params->get('theme', 'bootstrap3') == 'gcoreui') {
                $doc->addCssCode('
					#' . $form_id . ' .gcore-label-left {
						min-width: 150px !important;
						max-width: 150px !important;
						display: inline-block;
						white-space: normal;
						float: right !important;
						padding: 1px;
						padding-right: 10px !important;
						font-weight: bold;
					}
					#' . $form_id . ' .gcore-input-container {
						float: right;
						overflow: auto;
						display: inline-block;
						white-space: normal;
					}
					#' . $form_id . ' .gcore-line-tr .gcore-input{
						float:right;
					}
					#' . $form_id . ' .gcore-subinput-container {
						margin-bottom: 3px;
						overflow: auto;
						float: right;
					}
					#' . $form_id . ' .gcore-subinput-container:not(:first-child) {
						padding-right: 4px;
					}
					#' . $form_id . ' .gcore-subinput-container-wide {
						display: inline-block;
						margin: 0px 3px 3px 0px;
						float: right;
						overflow: auto;
					}
					#' . $form_id . ' .gcore-radio-item,
					#' . $form_id . ' .gcore-checkbox-item {
						float: right;
						margin: 0px 6px 6px 0px;
						white-space: nowrap;
					}
					#' . $form_id . ' .gcore-single-column .gcore-radio-item,
					#' . $form_id . ' .gcore-single-column .gcore-checkbox-item {
						clear: right;
					}
				');
            }
        }
        if ($form->params->get('labels_right_aligned', 0)) {
            $doc->addCssCode('
				#' . $form_id . ' .gcore-label-left{
					text-align:' . ($form->params->get('rtl_support', 0) ? 'left' : 'right') . ' !important;
				}
			');
        }
        if ($form->params->get('labels_auto_width', 0)) {
            $doc->addCssCode('
				#' . $form_id . ' .gcore-label-left{
					min-width: 0px !important;
					max-width: none !important;
					width: auto !important;
				}
			');
        }
        if ($form->params->get('js_validation_language', '') == '') {
            $lang = strtolower(\GCore\Libs\Base::getConfig('site_language'));
            $js_lang_tag = explode('-', $lang);
            $form->params->set('js_validation_language', $js_lang_tag[0]);
        }
        $events_codes = array();
        //check fields events
        if (!empty($form->form['Form']['extras']['fields'])) {
            //$events_codes = array();
            $pageload_events_codes = array();
            //$events_codes[] = 'jQuery(document).ready(function($){';
            $events_codes[] = 'function chronoforms_fields_events(){';
            foreach ($form->form['Form']['extras']['fields'] as $k => $field) {
                if (!empty($field['id']) and !empty($field['events'])) {
                    if ($field['type'] == 'dropdown') {
                        $change_event = 'change';
                    } else {
                        $change_event = 'click';
                    }
                    $_f = '$("[name=\'' . $field['name'] . '\']").on("' . $change_event . '", function(){';
                    $_l = '});';
                    $_m = array();
                    foreach ($field['events'] as $k => $event_data) {
                        if (strlen($event_data['action']) and strlen($event_data['target'])) {
                            $_m[] = $this->create_event($field, $event_data, $form);
                        }
                    }
                    if (!empty($_m)) {
                        $events_codes[] = $_f . "\n" . implode("\n", $_m) . "\n" . $_l;
                        $pageload_events_codes[] = implode("\n", $_m);
                    }
                }
                if (!empty($field['inputs'])) {
                    foreach ($field['inputs'] as $fn => $field_input) {
                        if (!empty($field_input['id']) and !empty($field_input['events'])) {
                            if ($field_input['type'] == 'dropdown') {
                                $change_event = 'change';
                            } else {
                                $change_event = 'click';
                            }
                            $_f = '$("[name=\'' . $field_input['name'] . '\']").on("' . $change_event . '", function(){';
                            $_l = '});';
                            $_m = array();
                            foreach ($field_input['events'] as $k => $event_data) {
                                if (strlen($event_data['action']) and strlen($event_data['target'])) {
                                    $_m[] = $this->create_event($field_input, $event_data, $form);
                                }
                            }
                            if (!empty($_m)) {
                                $events_codes[] = $_f . "\n" . implode("\n", $_m) . "\n" . $_l;
                                $pageload_events_codes[] = implode("\n", $_m);
                            }
                        }
                    }
                }
            }
            //check new fields events
            if (!empty($form->form['Form']['extras']['jsevents'])) {
                $jsevents_codes = array();
                foreach ($form->form['Form']['extras']['jsevents'] as $k => $jsevent_info) {
                    if (empty($jsevent_info['source'])) {
                        continue;
                    }
                    //$source = $this->get_field_selector($jsevent_info['source'], $form);
                    $target = !empty($jsevent_info['target']) ? $this->get_field_selector($jsevent_info['target'], $form) : '';
                    $event_trigger = $this->get_event_trigger($jsevent_info, $form);
                    $type = $jsevent_info['type'];
                    $jsevent_class = '\\GCore\\Admin\\Extensions\\Chronoforms\\Events\\' . \GCore\Libs\Str::camilize($type) . '\\' . \GCore\Libs\Str::camilize($type);
                    $jsevents_codes[] = str_replace('__FUNCTION__', $jsevent_class::output($target, $jsevent_info, $form), $event_trigger);
                }
                $events_codes = array_merge($events_codes, $jsevents_codes);
            }
            $events_codes[] = '}';
            $events_codes[] = 'chronoforms_fields_events();';
            $events_codes[] = 'function chronoforms_pageload_fields_events(){';
            $events_codes[] = implode("\n", $pageload_events_codes);
            $events_codes[] = '}';
            $events_codes[] = 'chronoforms_pageload_fields_events();';
            //$form->execute('js', array('content' => implode("\n", $events_codes)));
        }
        ob_start();
        eval('?>' . $form->form['Form']['content']);
        $output = ob_get_clean();
        $form_content = $output;
        //select the page to display
        $form_pages = explode('<!--_CHRONOFORMS_PAGE_BREAK_-->', $output);
        $active_page_index = (int) $config->get('page', 1) - 1;
        $output = $form_pages[$active_page_index];
        //get current url
        $current_url = \GCore\Libs\Url::current();
        if ((bool) $config->get('relative_url', 1) === false) {
            $current_url = r_('index.php?ext=chronoforms');
        }
        //generate <form tag
        $form_tag = '<form';
        $form_action = strlen($config->get('action_url', '')) > 0 ? $config->get('action_url', '') : \GCore\Libs\Url::buildQuery($current_url, array('chronoform' => $form->form['Form']['title'], 'event' => $config->get('submit_event', 'submit')));
        $form_tag .= ' action="' . r_($form_action, (bool) $config->get('xhtml_url', 0)) . '"';
        //get method
        $form_method = $config->get('form_method', 'post');
        if ($config->get('form_method', 'post') == 'file') {
            $form_tag .= ' enctype="multipart/form-data"';
            $form_method = 'post';
        }
        $form_tag .= ' method="' . $form_method . '"';
        $form_tag .= ' name="' . $form->form['Form']['title'] . '"';
        //$form_id = 'chronoform-'.$form->form['Form']['title'];
        $form_tag .= ' id="' . $form_id . '"';
        $form_tag .= ' class="' . $config->get('form_class', 'chronoform') . ($theme == 'bootstrap3' ? ' form-horizontal' : '') . '"';
        if ($config->get('form_tag_attach', '')) {
            $form_tag .= ' ' . trim($config->get('form_tag_attach', ''));
        }
        $form_tag .= '>';
        if (empty($theme)) {
            $doc->_('forms');
        }
        /*
        if($theme == 'bootstrap3'){
        	$doc->_('jquery');
        	$doc->_('bootstrap');
        	//echo '<div class="gcore chronoform-container">';
        }
        */
        $js_scripts = array();
        if (strpos($output, 'data-wysiwyg="1"') !== false) {
            $doc->_('jquery');
            $doc->_('editor');
            $js_scripts[] = '$(\'*[data-wysiwyg="1"]\').each(function(){ tinymce.init({"selector":"#"+$(this).attr("id")}); });';
        }
        if (strpos($form_content, 'validate[') !== false) {
            $doc->_('jquery');
            $doc->_('gtooltip');
            $doc->_('gvalidation', array('lang' => $form->params->get('js_validation_language', 'en')));
            $js_scripts[] = '$("#' . $form_id . '").gvalidate();';
            $js_scripts[] = '
				$("#' . $form_id . '").find(":input").on("invalid.gvalidation", function(){
					var field = $(this);
					if(field.is(":hidden")){
						if(field.closest(".tab-pane").length > 0){
							var tab_id = field.closest(".tab-pane").attr("id");
							$(\'a[href="#\'+tab_id+\'"]\').closest(".nav").gtabs("get").show($(\'a[href="#\'+tab_id+\'"]\'));
						}
						if(field.closest(".panel-collapse").length > 0){
							var slider_id = field.closest(".panel-collapse").attr("id");
							$(\'a[href="#\'+slider_id+\'"]\').closest(".panel-group").gsliders("get").show($(\'a[href="#\'+slider_id+\'"]\'));
						}
					}
					if(field.data("wysiwyg") == "1"){
						field.data("gvalidation-target", field.parent());
					}
				});
				$("#' . $form_id . '").on("success.gvalidation", function(e){
					if($("#' . $form_id . '").data("gvalidate_success")){
						var gvalidate_success = $("#' . $form_id . '").data("gvalidate_success");
						if(gvalidate_success in window){
							window[gvalidate_success](e, $("#' . $form_id . '"));
						}
					}
				});
				$("#' . $form_id . '").on("fail.gvalidation", function(e){
					if($("#' . $form_id . '").data("gvalidate_fail")){
						var gvalidate_fail = $("#' . $form_id . '").data("gvalidate_fail");
						if(gvalidate_fail in window){
							window[gvalidate_fail](e, $("#' . $form_id . '"));
						}
					}
				});
			';
            if ($config->get('required_labels_identify', 1)) {
                if (strpos($form->params->get('theme', 'bootstrap3'), 'bootstrap3') !== false) {
                    $required_icon = '<i class=\'fa fa-asterisk\' style=\'color:#ff0000; font-size:9px; vertical-align:top;\'></i>';
                } else {
                    $required_icon = '<span style=\'color:#ff0000; font-size:12px; vertical-align:top;\'>*</span>';
                }
                $js_scripts[] = '
					function chronoforms_validation_signs(formObj){
						formObj.find(":input[class*=validate]").each(function(){
							if($(this).attr("class").indexOf("required") >= 0 || $(this).attr("class").indexOf("group") >= 0){
								var required_parent = [];
								if($(this).closest(".gcore-subinput-container").length > 0){
									var required_parent = $(this).closest(".gcore-subinput-container");
								}else if($(this).closest(".gcore-form-row, .form-group").length > 0){
									var required_parent = $(this).closest(".gcore-form-row, .form-group");
								}
								if(required_parent.length > 0){
									var required_label = required_parent.find("label");
									if(required_label.length > 0 && !required_label.first().hasClass("required_label")){
										required_label.first().addClass("required_label");
										required_label.first().html(required_label.first().html() + " ' . $required_icon . '");
									}
								}
							}
						});
					}
					chronoforms_validation_signs($("#chronoform-' . $form->form['Form']['title'] . '"));
				';
            }
        }
        if (strpos($form_content, 'data-tooltip') !== false) {
            $doc->_('jquery');
            $doc->_('gtooltip');
            if (strpos($form->params->get('theme', 'bootstrap3'), 'bootstrap3') !== false) {
                $tip_icon = '<i class=\'fa fa-exclamation-circle input-tooltip\' style=\'color:#2693FF; padding-left:5px;\'></i>';
            } else {
                $tip_icon = '<span style=\'color:#ff0000; font-size:12px; vertical-align:top;\'>!</span>';
            }
            $js_scripts[] = '
				function chronoforms_data_tooltip(formObj){
					formObj.find(":input").each(function(){
						if($(this).data("tooltip") && $(this).closest(".gcore-input, .gcore-input-wide").length > 0){
							var tipped_parent = [];
							if($(this).closest(".gcore-subinput-container").length > 0){
								var tipped_parent = $(this).closest(".gcore-subinput-container");
							}else if($(this).closest(".gcore-form-row, .form-group").length > 0){
								var tipped_parent = $(this).closest(".gcore-form-row, .form-group");
							}
							if(tipped_parent.length > 0){
								var tipped_label = tipped_parent.find("label");
								if(tipped_label.length > 0 && !tipped_label.first().hasClass("tipped_label")){
									tipped_label.first().addClass("tipped_label");
									var $tip = $("' . $tip_icon . '");
									$tip.data("content", $(this).data("tooltip"));
									tipped_label.first().append($tip);
								}
							}
						}
					});
					formObj.find(".input-tooltip").gtooltip();
				}
				chronoforms_data_tooltip($("#chronoform-' . $form->form['Form']['title'] . '"));
			';
        }
        if (strpos($form_content, 'data-load-state') !== false) {
            $doc->_('jquery');
            $js_scripts[] = '
				function chronoforms_data_loadstate(formObj){
					formObj.find(\':input[data-load-state="disabled"]\').prop("disabled", true);
					formObj.find(\'*[data-load-state="hidden"]\').css("display", "none");
					formObj.find(\':input[data-load-state="hidden_parent"]\').each(function(){
						if($(this).closest(".gcore-subinput-container").length > 0){
							$(this).closest(".gcore-subinput-container").css("display", "none");
						}else if($(this).closest(".gcore-form-row").length > 0){
							$(this).closest(".gcore-form-row").css("display", "none");
						}
					});
				}
				chronoforms_data_loadstate($("#chronoform-' . $form->form['Form']['title'] . '"));
			';
        }
        if (strpos($output, 'data-inputmask=') !== false) {
            $doc->_('jquery');
            $doc->_('jquery.inputmask');
            $js_scripts[] = '$(":input").inputmask();';
        }
        if (strpos($output, 'data-gdatetimepicker') !== false or strpos($output, 'data-fieldtype="gdatetimepicker"') !== false) {
            $doc->_('jquery');
            $doc->_('gdatetimepicker');
            $js_scripts[] = '
			$(\'*[data-gdatetimepicker-format]\').each(function(){
				$(this).data("format", $(this).data("gdatetimepicker-format"));
			});
			';
            //for old data attributes
            $js_scripts[] = '$(\'*[data-gdatetimepicker="1"]\').gdatetimepicker();';
            //for old data attributes
            $js_scripts[] = '$(\'*[data-fieldtype="gdatetimepicker"]\').gdatetimepicker();';
            $js_scripts[] = '
			$(":input").on("select_date.gdatetimepicker", function(){
				if($(this).data("on_date_selected")){
					var on_date_selected = $(this).data("on_date_selected");
					if(on_date_selected in window){
						window[on_date_selected]($(this));
					}
				}
			});
			';
        }
        if (strpos($output, 'multiplier-container') !== false) {
            $doc->_('jquery');
            $js_scripts[] = '
				$(".multiplier-container").each(function(){
					if(typeof($(this).data("hide_first")) != "undefined"){
						$(this).find(".multiplier-contents").first().hide();
					}
					if(typeof($(this).data("disable_first")) != "undefined"){
						$(this).find(".multiplier-contents").first().find(":input").prop("disabled", true);
					}
					if($(this).find(".multiplier-contents").length > 1){
						var counter = $(this).find(".multiplier-contents").length;
						$(this).data("count", counter);
					}
				});
				$(".multiplier-container").find(".multiplier-add-button").on("click", function(){
					var multiplier_container = $(this).closest(".multiplier-container");
					
					var multiplier_clone = multiplier_container.find(".multiplier-contents").first().clone();
					multiplier_clone.find(".multiplier-remove-button").first().css("display", "");
					multiplier_clone.show();
					multiplier_clone.find(":input").prop("disabled", false);
					
					if(typeof(multiplier_container.data("replacer")) != "undefined"){
						var counter = parseInt(multiplier_container.data("count"));
						var multiplier_clone = multiplier_clone.wrap("<p>").parent().html().replace(new RegExp(multiplier_container.data("replacer"), "g"), counter);
						multiplier_container.data("count", counter + 1);
					}
					multiplier_container.find(".multiplier-contents").last().after(multiplier_clone);
				});
				$(document).on("click", ".multiplier-remove-button", function(){
					$(this).closest(".multiplier-contents").remove();
				});
			';
        }
        if ((bool) $config->get('ajax_submit', 0) === true) {
            $doc->_('jquery');
            $doc->_('gtooltip');
            $doc->_('gvalidation', array('lang' => $form->params->get('js_validation_language', 'en')));
            $ajax_url = \GCore\Libs\Url::buildQuery($form_action, array('tvout' => 'ajax'));
            $js_scripts[] = '
					function chrono_ajax_submit(){
						$(document).on("click", "#' . $form_id . ' :input[type=submit]", function(event){
							$("#' . $form_id . '").append("<input type=\'hidden\' name=\'"+$(this).attr("name")+"\' value=\'"+$(this).val()+"\' />");
						});
						
						var files;
						$("input[type=file]").on("change", function(event){
							files = event.target.files;
						});
						
						$(document).on("submit", "#' . $form_id . '", function(event){
							var overlay = $("<div/>").css({
								"position": "fixed",
								"top": "0",
								"left": "0",
								"width": "100%",
								"height": "100%",
								"background-color": "#000",
								"filter": "alpha(opacity=50)",
								"-moz-opacity": "0.5",
								"-khtml-opacity": "0.5",
								"opacity": "0.5",
								"z-index": "10000",
								"background-image":"url(\\"' . \GCore\Helpers\Assets::image('loading-small.gif') . '\\")",
								"background-position":"center center",
								"background-repeat":"no-repeat",
							});
							if(!$("#' . $form_id . '").hasClass("form-overlayed")){
								$("#' . $form_id . '").append(overlay);
								$("#' . $form_id . '").addClass("form-overlayed");
							}
							var form_action = $("#' . $form_id . '").prop("action");
							var sep = (form_action.indexOf("?") > -1) ? "&" : "?";
							var ajax_url = form_action + sep + "tvout=ajax";
							
							//data processing
							$.ajax({
								"type" : "POST",
								"url" : ajax_url,
								"data" : $("#' . $form_id . '").serialize(),
								"success" : function(res){
									$("#' . $form_id . '").replaceWith(res);
									$("#' . $form_id . '").gvalidate();
									chronoforms_fields_events();
									chronoforms_validation_signs($("#' . $form_id . '"));
									chronoforms_data_tooltip($("#' . $form_id . '"));
									chronoforms_data_loadstate($("#' . $form_id . '"));
									if(typeof chronoforms_pageload_fields_events == "function"){
										chronoforms_pageload_fields_events();
									}
									//chrono_ajax_submit();//this line duplicates submissions, should be removed
								},
							});
							return false;
						});
					}
					chrono_ajax_submit();
				';
        }
        $js_scripts[] = implode("\n", $events_codes);
        if (!empty($js_scripts)) {
            $doc->addJsCode('jQuery(document).ready(function($){
				' . implode("\n", $js_scripts) . '
			});');
        }
        if ((bool) $config->get('add_form_tags', 1) === true) {
            echo $form_tag;
        }
        //if ajax then display system messages inside the form
        if ((bool) $config->get('ajax_submit', 0) === true) {
            $doc = \GCore\Libs\Document::getInstance();
            $doc->addCssFile('system_messages');
            $session = \GCore\Libs\Base::getSession();
            $types = $session->getFlash();
            echo \GCore\Helpers\Message::render($types);
        }
        //add fields values
        $output = \GCore\Helpers\DataLoader::load($output, $form->data);
        $output = \GCore\Libs\Str::replacer($output, $form->data, array('repeater' => 'repeater'));
        //show output
        echo $output;
        if ((bool) $config->get('add_form_tags', 1) === true) {
            echo '</form>';
        }
    }
Пример #23
0
 public function getNav($lang = array())
 {
     if ($this->total <= $this->limit) {
         return '';
     }
     $first = $this->getFirst($lang);
     $prev = $this->getPrevious($lang);
     $numbers = $this->getNumbers($lang);
     $next = $this->getNext($lang);
     $last = $this->getLast($lang);
     $full = $this->full_nav($first, $prev, $numbers, $next, $last);
     //add css file
     $doc = \GCore\Libs\Document::getInstance();
     $doc->addCssFile(\GCore\Helpers\Assets::css('paginator'));
     return $full;
 }
Пример #24
0
    function execute(&$form, $action_id)
    {
        $config = $form->actions_config[$action_id];
        $rules = array();
        $messages = array();
        foreach ($config['rules'] as $rule => $data) {
            if (!empty($data)) {
                $fields = explode("\n", $data);
                foreach ($fields as $field) {
                    $fch = explode(':', $field);
                    $rules[trim($fch[0])][$rule] = true;
                    if (isset($fch[1])) {
                        $rules[trim($fch[0])][$rule] = trim($fch[1]);
                        if ($fch[1] == '') {
                            unset($rules[trim($fch[0])][$rule]);
                        }
                    }
                }
            }
        }
        //pr($rules);
        if (!empty($rules)) {
            $doc = \GCore\Libs\Document::getInstance();
            if ((bool) $form->params->get('jquery', 1) === true) {
                $doc->_('jquery');
            }
            $js_code = '
			jQuery(document).ready(function($){
			';
            foreach ($rules as $fld => $ls) {
                $validations = 'validate["' . implode('","', array_keys($ls)) . '"]';
                $js_code .= '$("#chronoform-' . $form->form['Form']['title'] . '").find(":input[name=\'' . $fld . '\']").addClass(\'' . $validations . '\');';
            }
            $js_code .= '
				$("#chronoform-' . $form->form['Form']['title'] . '").gvalidate({});
			});
			';
            //$doc->_('jquery.validate');
            /*$js_code = '
            jQuery(document).ready(function($){
            	$("#chronoform-'.$form->form['Form']['title'].'").validate({
            		errorClass: "gform-error",
            		validClass: "gform-valid",
            		errorPlacement: function(error, element){
            			error.appendTo(element.closest(".gform-input-container"));
            		},
            		highlight: function(element, errorClass, validClass){
            			$(element).closest(".gform-line-td").addClass("gform-line-td-error");
            		},
            		unhighlight: function(element, errorClass, validClass){
            			$(element).closest(".gform-line-td").removeClass("gform-line-td-error");
            		},
            		rules: {'."\n";
            		foreach($rules as $fld => $ls){
            			$compound_rules = array();
            			$compound_rules[] = "			".'"'.$fld.'" : {';
            			$single_rules = array();
            			foreach($ls as $l => $v){
            				$single_rules[] = '				'.$l.' : '.(string)$v;
            			}
            			$compound_rules[] = implode(",\n", $single_rules);
            			$compound_rules[] = '			}';
            			$js_code .= implode("\n", $compound_rules).",\n";
            		}
            		$js_code .= '		}
            	});
            });
            			';*/
            $doc->addJsCode($js_code);
        }
    }