getCheckbox() static public method

Get a checkbox.
static public getCheckbox ( array $options ) : the
$options array array of parameters: - title its title - name its name - id its id - value the value to set when checked - readonly can we edit it ? - massive_tags the tag to set for massive checkbox update - checked is it checked or not ? - zero_on_empty do we send 0 on submit when it is not checked ? - specific_tags HTML5 tags to add - criterion the criterion for massive checkbox
return the HTML code for the checkbox
Example #1
0
 /**
  * Get right linear right choice.
  *
  * @since version 0.85
  *
  * @param $elements  array   all pair identifier => label
  * @param $options   array   possible:
  *             'canedit'
  *             'field'         name of the HTML field
  *             'value'         the value inside the database
  *             'max_per_line'  maximum number of elements per line
  *             'check_all'     add a checkbox to check or uncheck every checkbox
  *             'rand'          random value used to generate the ids
  *             'zero_on_empty' do we send 0 when checkbox is not checked ?
  *             'display'
  *             'check_method'  method used to check the right
  *
  * @return content if !display
  **/
 static function getLinearRightChoice(array $elements, array $options = array())
 {
     $param = array();
     $param['canedit'] = true;
     $param['field'] = '';
     $param['value'] = '';
     $param['max_per_line'] = 10;
     $param['check_all'] = false;
     $param['rand'] = mt_rand();
     $param['zero_on_empty'] = true;
     $param['display'] = true;
     $param['check_method'] = function ($element, $field) {
         return ($field & $element) == $element;
     };
     if (is_array($options) && count($options)) {
         foreach ($options as $key => $val) {
             $param[$key] = $val;
         }
     }
     if (empty($param['field'])) {
         return;
     }
     $nb_cbs = count($elements);
     $cb_options = array('readonly' => !$param['canedit']);
     if ($param['check_all']) {
         $nb_cbs++;
         $massive_tag = 'checkall_' . $param['field'] . '_' . $param['rand'];
         $cb_options['massive_tags'] = $massive_tag;
     }
     $nb_lines = ceil($nb_cbs / $param['max_per_line']);
     $nb_item_per_line = ceil($nb_cbs / $nb_lines);
     $out = '';
     $count = 0;
     $nb_checked = 0;
     foreach ($elements as $element => $label) {
         if ($count != 0) {
             if ($count % $nb_item_per_line == 0) {
                 $out .= "<br>\n";
             } else {
                 $out .= "&nbsp;-\n\t\t&nbsp;";
             }
         } else {
             $out .= "\n\t\t";
         }
         $out .= $label . '&nbsp;';
         $cb_options['name'] = $param['field'] . '[' . $element . ']';
         $cb_options['id'] = Html::cleanId('checkbox_linear_' . $cb_options['name'] . '_' . $param['rand']);
         $cb_options['zero_on_empty'] = $param['zero_on_empty'];
         $cb_options['checked'] = $param['check_method']($element, $param['value']);
         $out .= Html::getCheckbox($cb_options);
         $count++;
         if ($cb_options['checked']) {
             $nb_checked++;
         }
     }
     if ($param['check_all']) {
         $cb_options = array('criterion' => array('tag_for_massive' => $massive_tag), 'id' => Html::cleanId('checkbox_linear_' . $param['rand']));
         if ($nb_checked > count($elements) / 2) {
             $cb_options['checked'] = true;
         }
         $out .= "&nbsp;-&nbsp;<i><b>" . __('Select/unselect all') . "</b></i>&nbsp;" . Html::getCheckbox($cb_options);
     }
     if (!$param['display']) {
         return $out;
     }
     echo $out;
 }
Example #2
0
 /**
  * Get the group of elements regarding given item.
  * Two kind of item :
  *              - Device* feed by a link to the attached item (Computer, Printer ...)
  *              - Computer, Printer ...: feed by the "global" properties of the CommonDevice
  * Then feed with the specificities of the Item_Device elements
  * In cas of $item is an instance, then $options contains the type of the item (Computer,
  * Printer ...).
  *
  * @param $item
  * @param $table
  * @param $options            array
  * @param $delete_all_column          (default NULL)
  * @param $common_column
  * @param $specific_column
  * @param $delete_column               (default NULL)
  * @param $dynamic_column
  **/
 function getTableGroup(CommonDBTM $item, HTMLTableMain $table, array $options, HTMLTableSuperHeader $delete_all_column = NULL, HTMLTableSuperHeader $common_column, HTMLTableSuperHeader $specific_column, HTMLTableSuperHeader $delete_column = NULL, $dynamic_column)
 {
     global $DB;
     $is_device = $item instanceof CommonDevice;
     if ($is_device) {
         $peer_type = $options['itemtype'];
         if (empty($peer_type)) {
             $column_label = __('Dissociated devices');
             $group_name = 'None';
         } else {
             $column_label = $peer_type::getTypeName(Session::getPluralNumber());
             $group_name = $peer_type;
         }
         $table_group = $table->createGroup($group_name, '');
         $peer_column = $table_group->addHeader('item', $column_label, $common_column, NULL);
         if (!empty($peer_type)) {
             //TRANS : %1$s is the type of the device
             //        %2$s is the type of the item
             //        %3$s is the name of the item (used for headings of a list),
             $itemtype_nav_title = sprintf(__('%1$s of %2$s: %3$s'), $peer_type::getTypeName(Session::getPluralNumber()), $item->getTypeName(1), $item->getName());
             $peer_column->setItemType($peer_type, $itemtype_nav_title);
         }
     } else {
         $peer_type = $this->getDeviceType();
         $table_group = $table->createGroup($peer_type, '');
         //TRANS : %1$s is the type of the device
         //        %2$s is the type of the item
         //        %3$s is the name of the item (used for headings of a list),
         $options['itemtype_title'] = sprintf(__('%1$s of %2$s: %3$s'), $peer_type::getTypeName(Session::getPluralNumber()), $item->getTypeName(1), $item->getName());
         $peer_type::getHTMLTableHeader($item->getType(), $table_group, $common_column, NULL, $options);
     }
     $specificity_columns = array();
     $link_column = $table_group->addHeader('spec_link', '', $specific_column);
     $spec_column = $link_column;
     foreach ($this->getSpecificities() as $field => $attributs) {
         $spec_column = $table_group->addHeader('spec_' . $field, $attributs['long name'], $specific_column, $spec_column);
         $specificity_columns[$field] = $spec_column;
     }
     $infocom_column = $table_group->addHeader('infocom', Infocom::getTypeName(Session::getPluralNumber()), $specific_column, $spec_column);
     $document_column = $table_group->addHeader('document', Document::getTypeName(Session::getPluralNumber()), $specific_column, $spec_column);
     if ($item->isDynamic()) {
         $dynamics_column = $table_group->addHeader('one', '&nbsp;', $dynamic_column, $spec_column);
         $previous_column = $dynamics_column;
     } else {
         $previous_column = $spec_column;
     }
     if ($options['canedit']) {
         $group_checkbox_tag = empty($peer_type) ? '__' : $peer_type;
         $content = Html::getCheckbox(array('criterion' => array('tag_for_massive' => $group_checkbox_tag)));
         $delete_one = $table_group->addHeader('one', $content, $delete_column, $previous_column);
     }
     if ($is_device) {
         $fk = 'items_id';
         // Entity restrict
         $leftjoin = '';
         $where = "";
         if (!empty($peer_type)) {
             $leftjoin = "LEFT JOIN `" . getTableForItemType($peer_type) . "`\n                        ON (`" . $this->getTable() . "`.`items_id` = `" . getTableForItemType($peer_type) . "`.`id`\n                            AND `" . $this->getTable() . "`.`itemtype` = '{$peer_type}')";
             $where = getEntitiesRestrictRequest(" AND", getTableForItemType($peer_type));
         }
         $query = "SELECT `" . $this->getTable() . "`.*\n                   FROM `" . $this->getTable() . "`\n                   {$leftjoin}\n                   WHERE `" . $this->getDeviceForeignKey() . "` = '" . $item->getID() . "'\n                         AND `" . $this->getTable() . "`.`itemtype` = '{$peer_type}'\n                         AND `" . $this->getTable() . "`.`is_deleted` = '0'\n                         {$where}\n                   ORDER BY `" . $this->getTable() . "`.`itemtype`, `" . $this->getTable() . "`.`{$fk}`";
     } else {
         $fk = $this->getDeviceForeignKey();
         $query = "SELECT *\n                   FROM `" . $this->getTable() . "`\n                   WHERE `itemtype` = '" . $item->getType() . "'\n                         AND `items_id` = '" . $item->getID() . "'\n                         AND `is_deleted` = '0'\n                   ORDER BY {$fk}";
     }
     if (!empty($peer_type)) {
         $peer = new $peer_type();
         $peer->getEmpty();
     } else {
         $peer = NULL;
     }
     foreach ($DB->request($query) as $link) {
         Session::addToNavigateListItems(static::getType(), $link["id"]);
         $this->getFromDB($link['id']);
         if (is_null($peer) || $link[$fk] != $peer->getID()) {
             if ($peer instanceof CommonDBTM) {
                 $peer->getFromDB($link[$fk]);
             }
             $current_row = $table_group->createRow();
             $peer_group = $peer_type . '_' . $link[$fk] . '_' . mt_rand();
             $current_row->setHTMLID($peer_group);
             if ($options['canedit']) {
                 $cell_value = Html::getCheckAllAsCheckbox($peer_group);
                 $current_row->addCell($delete_all_column, $cell_value);
             }
             if ($is_device) {
                 $cell = $current_row->addCell($peer_column, $peer ? $peer->getLink() : __('None'), NULL, $peer);
                 if (is_null($peer)) {
                     $cell->setHTMLClass('center');
                 }
             } else {
                 $peer->getHTMLTableCellForItem($current_row, $item, NULL, $options);
             }
         }
         if (Session::haveRight('device', UPDATE)) {
             $mode = __s('Update');
         } else {
             $mode = __s('View');
         }
         $spec_cell = $current_row->addCell($link_column, "<a href='" . $this->getLinkURL() . "'>{$mode}</a>");
         foreach ($this->getSpecificities() as $field => $attributs) {
             if (!empty($link[$field])) {
                 $content = $link[$field];
             } else {
                 $content = '';
             }
             $spec_cell = $current_row->addCell($specificity_columns[$field], $content, $spec_cell);
         }
         if (countElementsInTable('glpi_infocoms', "`itemtype`='" . $this->getType() . "' AND\n                                                    `items_id`='" . $link['id'] . "'")) {
             $content = array(array('function' => 'Infocom::showDisplayLink', 'parameters' => array($this->getType(), $link['id'])));
         } else {
             $content = '';
         }
         $current_row->addCell($infocom_column, $content, $spec_cell);
         $content = array();
         // The order is to be sure that specific documents appear first
         $query = "SELECT `documents_id`\n                   FROM `glpi_documents_items`\n                   WHERE (`itemtype` = '" . $this->getType() . "' AND `items_id` = '" . $link['id'] . "')\n                          OR (`itemtype` = '" . $this->getDeviceType() . "'\n                              AND `items_id` = '" . $link[$this->getDeviceForeignKey()] . "')\n                   ORDER BY `itemtype` = '" . $this->getDeviceType() . "'";
         $document = new Document();
         foreach ($DB->request($query) as $document_link) {
             if ($document->can($document_link['documents_id'], READ)) {
                 $content[] = $document->getLink();
             }
         }
         $content = implode('<br>', $content);
         $current_row->addCell($document_column, $content, $spec_cell);
         if ($item->isDynamic()) {
             $previous_cell = $current_row->addCell($dynamics_column, Dropdown::getYesNo($link['is_dynamic']), $spec_cell);
         } else {
             $previous_cell = $spec_cell;
         }
         if ($options['canedit']) {
             $cell_value = Html::getMassiveActionCheckBox($this->getType(), $link['id'], array('massive_tags' => $group_checkbox_tag));
             $current_row->addCell($delete_one, $cell_value, $previous_cell);
         }
     }
 }
Example #3
0
 /**
  * Display choice matrix
  *
  * @since version 0.85
  * @param $columns   array   of column field name => column label
  * @param $rows      array    of field name => array(
  *      'label' the label of the row
  *       'columns' an array of specific information regaring current row and given column indexed by column field_name
  *                 * a string if only have to display a string
  *                 * an array('value' => ???, 'readonly' => ???) that is used to Dropdown::showYesNo()
  * @param $options   array   possible:
  *       'title'         of the matrix
  *       'first_cell'    the content of the upper-left cell
  *       'row_check_all' set to true to display a checkbox to check all elements of the row
  *       'col_check_all' set to true to display a checkbox to check all elements of the col
  *       'rand'          random number to use for ids
  *
  * @return random value used to generate the ids
  **/
 static function showCheckboxMatrix(array $columns, array $rows, array $options = array())
 {
     $param['title'] = '';
     $param['first_cell'] = '&nbsp;';
     $param['row_check_all'] = false;
     $param['col_check_all'] = false;
     $param['rotate_column_titles'] = false;
     $param['rand'] = mt_rand();
     $param['table_class'] = 'tab_cadre_fixehov';
     $param['cell_class_method'] = NULL;
     if (is_array($options) && count($options)) {
         foreach ($options as $key => $val) {
             $param[$key] = $val;
         }
     }
     $cb_options = array('title' => __s('Check/uncheck all'));
     $number_columns = count($columns) + 1;
     if ($param['row_check_all']) {
         $number_columns += 1;
     }
     $width = round(100 / $number_columns);
     echo "\n<table class='" . $param['table_class'] . "'>\n";
     if (!empty($param['title'])) {
         echo "\t<tr>\n";
         echo "\t\t<th colspan='{$number_columns}'>" . $param['title'] . "</th>\n";
         echo "\t</tr>\n";
     }
     echo "\t<tr class='tab_bg_1'>\n";
     echo "\t\t<td>" . $param['first_cell'] . "</td>\n";
     foreach ($columns as $col_name => $column) {
         $nb_cb_per_col[$col_name] = array('total' => 0, 'checked' => 0);
         $col_id = Html::cleanId('col_label_' . $col_name . '_' . $param['rand']);
         echo "\t\t<td class='center b";
         if ($param['rotate_column_titles']) {
             echo " rotate";
         }
         echo "' id='{$col_id}' width='{$width}%'>";
         if (!is_array($column)) {
             $columns[$col_name] = $column = array('label' => $column);
         }
         if (isset($column['short']) && isset($column['long'])) {
             echo $column['short'];
             self::showToolTip($column['long'], array('applyto' => $col_id));
         } else {
             echo $column['label'];
         }
         echo "</td>\n";
     }
     if ($param['row_check_all']) {
         $col_id = Html::cleanId('col_of_table_' . $param['rand']);
         echo "\t\t<td class='center";
         if ($param['rotate_column_titles']) {
             echo " rotate";
         }
         echo "' id='{$col_id}'>" . __('Select/unselect all') . "</td>\n";
     }
     echo "\t</tr>\n";
     foreach ($rows as $row_name => $row) {
         if (!is_string($row) && !is_array($row)) {
             continue;
         }
         echo "\t<tr class='tab_bg_1'>\n";
         if (is_string($row)) {
             echo "\t\t<th colspan='{$number_columns}'>{$row}</th>\n";
         } else {
             $row_id = Html::cleanId('row_label_' . $row_name . '_' . $param['rand']);
             if (isset($row['class'])) {
                 $class = $row['class'];
             } else {
                 $class = '';
             }
             echo "\t\t<td class='b {$class}' id='{$row_id}'>";
             if (!empty($row['label'])) {
                 echo $row['label'];
             } else {
                 echo "&nbsp;";
             }
             echo "</td>\n";
             $nb_cb_per_row = array('total' => 0, 'checked' => 0);
             foreach ($columns as $col_name => $column) {
                 $class = '';
                 if (!empty($row['class']) && !empty($column['class'])) {
                     if (is_callable($param['cell_class_method'])) {
                         $class = $param['cell_class_method']($row['class'], $column['class']);
                     }
                 } else {
                     if (!empty($row['class'])) {
                         $class = $row['class'];
                     } else {
                         if (!empty($column['class'])) {
                             $class = $column['class'];
                         }
                     }
                 }
                 echo "\t\t<td class='center {$class}'>";
                 // Warning: isset return false if the value is NULL ...
                 if (array_key_exists($col_name, $row['columns'])) {
                     $content = $row['columns'][$col_name];
                     if (is_array($content) && array_key_exists('checked', $content)) {
                         if (!array_key_exists('readonly', $content)) {
                             $content['readonly'] = false;
                         }
                         $content['massive_tags'] = array();
                         if ($param['row_check_all']) {
                             $content['massive_tags'][] = 'row_' . $row_name . '_' . $param['rand'];
                         }
                         if ($param['col_check_all']) {
                             $content['massive_tags'][] = 'col_' . $col_name . '_' . $param['rand'];
                         }
                         if ($param['row_check_all'] && $param['col_check_all']) {
                             $content['massive_tags'][] = 'table_' . $param['rand'];
                         }
                         $content['name'] = $row_name . "[{$col_name}]";
                         $content['id'] = Html::cleanId('cb_' . $row_name . '_' . $col_name . '_' . $param['rand']);
                         Html::showCheckbox($content);
                         $nb_cb_per_col[$col_name]['total']++;
                         $nb_cb_per_row['total']++;
                         if ($content['checked']) {
                             $nb_cb_per_col[$col_name]['checked']++;
                             $nb_cb_per_row['checked']++;
                         }
                     } else {
                         if (is_string($content)) {
                             echo $content;
                         } else {
                             echo "&nbsp;";
                         }
                     }
                 } else {
                     echo "&nbsp;";
                 }
                 echo "</td>\n";
             }
         }
         if ($param['row_check_all'] && !is_string($row) && $nb_cb_per_row['total'] > 1) {
             $cb_options['criterion'] = array('tag_for_massive' => 'row_' . $row_name . '_' . $param['rand']);
             $cb_options['massive_tags'] = 'table_' . $param['rand'];
             $cb_options['id'] = Html::cleanId('cb_checkall_row_' . $row_name . '_' . $param['rand']);
             $cb_options['checked'] = $nb_cb_per_row['checked'] > $nb_cb_per_row['total'] / 2;
             echo "\t\t<td class='center'>" . Html::getCheckbox($cb_options) . "</td>\n";
         }
         echo "\t</tr>\n";
     }
     if ($param['col_check_all']) {
         echo "\t<tr class='tab_bg_1'>\n";
         echo "\t\t<td>" . __('Select/unselect all') . "</td>\n";
         foreach ($columns as $col_name => $column) {
             echo "\t\t<td class='center'>";
             if ($nb_cb_per_col[$col_name]['total'] > 1) {
                 $cb_options['criterion'] = array('tag_for_massive' => 'col_' . $col_name . '_' . $param['rand']);
                 $cb_options['massive_tags'] = 'table_' . $param['rand'];
                 $cb_options['id'] = Html::cleanId('cb_checkall_col_' . $col_name . '_' . $param['rand']);
                 $cb_options['checked'] = $nb_cb_per_col[$col_name]['checked'] > $nb_cb_per_col[$col_name]['total'] / 2;
                 echo Html::getCheckbox($cb_options);
             } else {
                 echo "&nbsp;";
             }
             echo "</td>\n";
         }
         if ($param['row_check_all']) {
             $cb_options['criterion'] = array('tag_for_massive' => 'table_' . $param['rand']);
             $cb_options['massive_tags'] = '';
             $cb_options['id'] = Html::cleanId('cb_checkall_table_' . $param['rand']);
             echo "\t\t<td class='center'>" . Html::getCheckbox($cb_options) . "</td>\n";
         }
         echo "\t</tr>\n";
     }
     echo "</table>\n";
     return $param['rand'];
 }
Example #4
0
 /**
  * Display a section of settings present in the $arrSettings class array
  *
  * See the description of {@see show()} for details.
  * @param   \Cx\Core\Html\Sigma $objTemplateLocal   The Template object,
  *                                                  by reference
  * @param   string              $section      The optional section header
  *                                            text to add
  * @param   string              $prefix       The optional prefix for
  *                                            language variables.
  *                                            Defaults to 'TXT_'
  * @return  boolean                           True on success, false otherwise
  */
 static function show_section(&$objTemplateLocal, $section = '', $prefix = 'TXT_', $readOnly = false)
 {
     global $_ARRAYLANG, $_CORELANG;
     $arrSettings = self::getCurrentSettings();
     self::verify_template($objTemplateLocal);
     // This is set to multipart if necessary
     $enctype = '';
     $i = 0;
     if ($objTemplateLocal->blockExists('core_setting_row')) {
         $objTemplateLocal->setCurrentBlock('core_setting_row');
     }
     foreach ($arrSettings as $name => $arrSetting) {
         // Determine HTML element for type and apply values and selected
         $element = '';
         $value = $arrSetting['value'];
         $values = self::splitValues($arrSetting['values']);
         $type = $arrSetting['type'];
         // Not implemented yet:
         // Warn if some mandatory value is empty
         if (empty($value) && preg_match('/_mandatory$/', $type)) {
             \Message::warning(sprintf($_CORELANG['TXT_CORE_SETTING_WARNING_EMPTY'], $_ARRAYLANG[$prefix . strtoupper($name)], $name));
         }
         // Warn if some language variable is not defined
         if (empty($_ARRAYLANG[$prefix . strtoupper($name)])) {
             \Message::warning(sprintf($_CORELANG['TXT_CORE_SETTING_WARNING_MISSING_LANGUAGE'], $prefix . strtoupper($name), $name));
         }
         //DBG::log("Value: $value -> align $value_align");
         switch ($type) {
             // Dropdown menu
             case self::TYPE_DROPDOWN:
                 $matches = null;
                 if (preg_match('/^\\{src:([a-z0-9_\\\\:]+)\\(\\)\\}$/i', $arrSetting['values'], $matches)) {
                     $arrValues = self::splitValues(call_user_func($matches[1]));
                 } else {
                     $arrValues = self::splitValues($arrSetting['values']);
                 }
                 //DBG::log("Values: ".var_export($arrValues, true));
                 $element = \Html::getSelect($name, $arrValues, $value, '', '', 'style="width: ' . self::DEFAULT_INPUT_WIDTH . 'px;' . (isset($arrValues[$value]) && is_numeric($arrValues[$value]) ? 'text-align: right;' : '') . '"' . ($readOnly ? \Html::ATTRIBUTE_DISABLED : ''));
                 break;
             case self::TYPE_DROPDOWN_USER_CUSTOM_ATTRIBUTE:
                 $element = \Html::getSelect($name, User_Profile_Attribute::getCustomAttributeNameArray(), $arrSetting['value'], '', '', 'style="width: ' . self::DEFAULT_INPUT_WIDTH . 'px;"' . ($readOnly ? \Html::ATTRIBUTE_DISABLED : ''));
                 break;
             case self::TYPE_DROPDOWN_USERGROUP:
                 $element = \Html::getSelect($name, UserGroup::getNameArray(), $arrSetting['value'], '', '', 'style="width: ' . self::DEFAULT_INPUT_WIDTH . 'px;"' . ($readOnly ? \Html::ATTRIBUTE_DISABLED : ''));
                 break;
             case self::TYPE_WYSIWYG:
                 // These must be treated differently, as wysiwyg editors
                 // claim the full width
                 if ($readOnly) {
                     // TODO: this might be dangerous! should be rewritten probably
                     $element = $value;
                 } else {
                     $element = new \Cx\Core\Wysiwyg\Wysiwyg($name, $value);
                 }
                 $objTemplateLocal->setVariable(array('CORE_SETTING_ROW' => $_ARRAYLANG[$prefix . strtoupper($name)], 'CORE_SETTING_ROWCLASS1' => ++$i % 2 ? '1' : '2'));
                 $objTemplateLocal->parseCurrentBlock();
                 $objTemplateLocal->setVariable(array('CORE_SETTING_ROW' => $element . '<br /><br />', 'CORE_SETTING_ROWCLASS1' => ++$i % 2 ? '1' : '2'));
                 $objTemplateLocal->parseCurrentBlock();
                 // Skip the part below, all is done already
                 continue 2;
             case self::TYPE_FILEUPLOAD:
                 //echo("\Cx\Core\Setting\Controller\Setting::show_section(): Setting up upload for $name, $value<br />");
                 $element = \Html::getInputFileupload($name, $value ? $name : false, Filetype::MAXIMUM_UPLOAD_FILE_SIZE, $arrSetting['values'], 'style="width: ' . self::DEFAULT_INPUT_WIDTH . 'px;"' . ($readOnly ? \Html::ATTRIBUTE_DISABLED : ''), true, $value ? $value : 'media/' . (isset($_REQUEST['cmd']) ? $_REQUEST['cmd'] : 'other'));
                 // File uploads must be multipart encoded
                 $enctype = 'enctype="multipart/form-data"';
                 break;
             case self::TYPE_BUTTON:
                 // The button is only available to trigger some event.
                 $event = 'onclick=\'' . 'if (confirm("' . $_ARRAYLANG[$prefix . strtoupper($name) . '_CONFIRM'] . '")) {' . 'document.getElementById("' . $name . '").value=1;' . 'document.formSettings_' . self::$tab_index . '.submit();' . '}\'';
                 //DBG::log("\Cx\Core\Setting\Controller\Setting::show_section(): Event: $event");
                 $element = \Html::getInputButton('__' . $name, $_ARRAYLANG[strtoupper($prefix . $name) . '_LABEL'], 'button', false, $event . ($readOnly ? \Html::ATTRIBUTE_DISABLED : '')) . \Html::getHidden($name, 0, '');
                 //DBG::log("\Cx\Core\Setting\Controller\Setting::show_section(): Element: $element");
                 break;
             case self::TYPE_TEXTAREA:
                 $element = \Html::getTextarea($name, $value, 80, 8, $readOnly ? \Html::ATTRIBUTE_DISABLED : '');
                 //                        'style="width: '.self::DEFAULT_INPUT_WIDTH.'px;'.$value_align.'"');
                 break;
             case self::TYPE_CHECKBOX:
                 $arrValues = self::splitValues($arrSetting['values']);
                 $value_true = current($arrValues);
                 $element = \Html::getCheckbox($name, $value_true, false, in_array($value, $arrValues), '', $readOnly ? \Html::ATTRIBUTE_DISABLED : '');
                 break;
             case self::TYPE_CHECKBOXGROUP:
                 $checked = self::splitValues($value);
                 $element = \Html::getCheckboxGroup($name, $values, $values, $checked, '', '', '<br />', $readOnly ? \Html::ATTRIBUTE_DISABLED : '', '');
                 break;
                 // 20120508 UNTESTED!
             // 20120508 UNTESTED!
             case self::TYPE_RADIO:
                 $checked = $value;
                 $element = \Html::getRadioGroup($name, $values, $checked, '', $readOnly ? \Html::ATTRIBUTE_DISABLED : '');
                 break;
             case self::TYPE_PASSWORD:
                 $element = \Html::getInputPassword($name, $value, 'style="width: ' . self::DEFAULT_INPUT_WIDTH . 'px;"' . ($readOnly ? \Html::ATTRIBUTE_DISABLED : ''));
                 break;
                 //datepicker
             //datepicker
             case self::TYPE_DATE:
                 $element = \Html::getDatepicker($name, array('defaultDate' => $value), 'style="width: ' . self::DEFAULT_INPUT_WIDTH . 'px;"');
                 break;
                 //datetimepicker
             //datetimepicker
             case self::TYPE_DATETIME:
                 $element = \Html::getDatetimepicker($name, array('defaultDate' => $value), 'style="width: ' . self::DEFAULT_INPUT_WIDTH . 'px;"');
                 break;
                 // Default to text input fields
             // Default to text input fields
             case self::TYPE_TEXT:
             case self::TYPE_EMAIL:
             default:
                 $element = \Html::getInputText($name, $value, false, 'style="width: ' . self::DEFAULT_INPUT_WIDTH . 'px;' . (is_numeric($value) ? 'text-align: right;' : '') . '"' . ($readOnly ? \Html::ATTRIBUTE_DISABLED : ''));
         }
         //add Tooltip
         $toolTips = '';
         $toolTipsHelp = '';
         if (isset($_ARRAYLANG[$prefix . strtoupper($name) . '_TOOLTIP'])) {
             // generate tooltip for configuration option
             $toolTips = '  <span class="icon-info tooltip-trigger"></span><span class="tooltip-message">' . $_ARRAYLANG[$prefix . strtoupper($name) . '_TOOLTIP'] . '</span>';
         }
         if (isset($_ARRAYLANG[$prefix . strtoupper($name) . '_TOOLTIP_HELP'])) {
             // generate tooltip for configuration option
             $toolTipsHelp = '  <span class="icon-info tooltip-trigger"></span><span class="tooltip-message">' . $_ARRAYLANG[$prefix . strtoupper($name) . '_TOOLTIP_HELP'] . '</span>';
         }
         $objTemplateLocal->setVariable(array('CORE_SETTING_NAME' => (isset($_ARRAYLANG[$prefix . strtoupper($name)]) ? $_ARRAYLANG[$prefix . strtoupper($name)] : $name) . $toolTips, 'CORE_SETTING_VALUE' => $element . $toolTipsHelp, 'CORE_SETTING_ROWCLASS2' => ++$i % 2 ? '1' : '2'));
         $objTemplateLocal->parseCurrentBlock();
         //echo("\Cx\Core\Setting\Controller\Setting::show(objTemplateLocal, $prefix): shown $name => $value<br />");
     }
     // Set form encoding to multipart if necessary
     if (!empty($enctype)) {
         $objTemplateLocal->setVariable('CORE_SETTING_ENCTYPE', $enctype);
     }
     if (!empty($section) && $objTemplateLocal->blockExists('core_setting_section')) {
         //echo("\Cx\Core\Setting\Controller\Setting::show(objTemplateLocal, $header, $prefix): creating section $header<br />");
         $objTemplateLocal->setVariable(array('CORE_SETTING_SECTION' => $section));
         //$objTemplateLocal->parse('core_setting_section');
     }
     return true;
 }
 /**
  * @since version 0.85
  *
  * @see CommonDBRelation::showRelationMassiveActionsSubForm()
  **/
 static function showRelationMassiveActionsSubForm(MassiveAction $ma, $peer_number)
 {
     if ($ma->getAction() == 'add') {
         echo "<br><br>" . __('Tagged') . Html::getCheckbox(array('name' => 'tagged'));
     }
 }
Example #6
0
 /**
  * Edit coupons
  * @param   \Cx\Core\Html\Sigma   $objTemplate    The Template
  */
 static function edit($objTemplate)
 {
     global $_ARRAYLANG;
     //DBG::activate(DBG_ADODB|DBG_LOG_FIREPHP|DBG_PHP);
     $result = true;
     if (isset($_GET['delete'])) {
         list($code, $customer_id) = explode('-', $_GET['delete']);
         $result &= self::delete(contrexx_input2raw($code), intval($customer_id));
     }
     $edit = isset($_REQUEST['edit']) ? contrexx_input2raw($_REQUEST['edit']) : null;
     //DBG::log("Edit: ".($edit ? $edit : 'NULL'));
     $code = isset($_POST['code']) ? contrexx_input2raw($_POST['code']) : null;
     $payment_id = empty($_POST['payment_id']) ? 0 : intval($_POST['payment_id']);
     $start_time = empty($_POST['start_date']) ? 0 : strtotime(contrexx_input2raw($_POST['start_date']));
     $end_time = empty($_POST['end_date_unlimited']) ? empty($_POST['end_date']) ? 0 : strtotime(contrexx_input2raw($_POST['end_date'])) : 0;
     $coupon_type = empty($_POST['coupon_type']) ? null : contrexx_input2raw($_POST['coupon_type']);
     $discount_rate = intval(empty($_POST['discount_rate']) ? 0 : floatval($_POST['discount_rate']));
     $discount_amount = Currency::formatPrice(empty($_POST['discount_amount']) ? 0 : floatval($_POST['discount_amount']));
     if ($coupon_type == 'rate') {
         $discount_amount = 0;
     }
     if ($coupon_type == 'amount') {
         $discount_rate = 0;
     }
     $minimum_amount = Currency::formatPrice(empty($_POST['minimum_amount']) ? 0 : floatval($_POST['minimum_amount']));
     $uses = empty($_POST['unlimited']) ? empty($_POST['uses']) ? 1 : intval($_POST['uses']) : self::USES_UNLIMITED;
     $customer_id = empty($_POST['customer_id']) ? 0 : intval($_POST['customer_id']);
     $product_id = empty($_POST['product_id']) ? 0 : intval($_POST['product_id']);
     $global = !empty($_POST['global_or_customer']);
     //DBG::log("code $code, start_time $start_time, end_time $end_time, minimum amount $minimum_amount, discount_rate $discount_rate, discount_amount $discount_amount, uses $uses, customer_id $customer_id");
     if (isset($code)) {
         $result &= self::storeCode($code, $payment_id, $minimum_amount, $discount_rate, $discount_amount, $start_time, $end_time, $uses, $global, $customer_id, $product_id, $edit);
         if ($result) {
             $code = $edit = null;
         } else {
             if (empty($edit)) {
                 $edit = "{$code}-{$customer_id}";
             }
         }
     }
     // Reset the end time if it's in the past
     if ($end_time < time()) {
         $end_time = 0;
     }
     $uri = \Html::getRelativeUri();
     \Html::stripUriParam($uri, 'view');
     \Html::stripUriParam($uri, 'edit');
     \Html::stripUriParam($uri, 'order_coupon');
     $arrSortingFields = array('code' => $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_CODE'], 'start_time' => $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_START_TIME'], 'end_time' => $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_END_TIME'], 'minimum_amount' => sprintf($_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_MINIMUM_AMOUNT_FORMAT'], Currency::getDefaultCurrencyCode()), 'discount_rate' => $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_RATE'], 'discount_amount' => sprintf($_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_AMOUNT_FORMAT'], Currency::getDefaultCurrencyCode()), 'uses' => $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_USES'], 'global' => $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_SCOPE'], 'customer_id' => $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_CUSTOMER'], 'product_id' => $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_PRODUCT'], 'payment_id' => $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_PAYMENT']);
     $objSorting = new \Sorting($uri, $arrSortingFields, true, 'order_coupon');
     $objTemplate->setGlobalVariable($_ARRAYLANG + array('TXT_SHOP_DISCOUNT_COUPON_MINIMUM_AMOUNT_CURRENCY' => sprintf($_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_MINIMUM_AMOUNT_FORMAT'], Currency::getDefaultCurrencyCode()), 'TXT_SHOP_DISCOUNT_COUPON_AMOUNT_CURRENCY' => sprintf($_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_AMOUNT_FORMAT'], Currency::getDefaultCurrencyCode()), 'TXT_SHOP_DISCOUNT_COUPON_ADD_OR_EDIT' => $_ARRAYLANG[$edit ? 'TXT_SHOP_DISCOUNT_COUPON_EDIT' : 'TXT_SHOP_DISCOUNT_COUPON_ADD'], 'SHOP_DISCOUNT_COUPON_VIEW_ACTIVE' => $edit ? '' : 'active', 'SHOP_DISCOUNT_COUPON_EDIT_ACTIVE' => $edit ? 'active' : '', 'SHOP_DISCOUNT_COUPON_VIEW_DISPLAY' => $edit ? 'none' : 'block', 'SHOP_DISCOUNT_COUPON_EDIT_DISPLAY' => $edit ? 'block' : 'none', 'HEADER_SHOP_DISCOUNT_COUPON_CODE' => $objSorting->getHeaderForField('code'), 'HEADER_SHOP_DISCOUNT_COUPON_START_TIME' => $objSorting->getHeaderForField('start_time'), 'HEADER_SHOP_DISCOUNT_COUPON_END_TIME' => $objSorting->getHeaderForField('end_time'), 'HEADER_SHOP_DISCOUNT_COUPON_MINIMUM_AMOUNT_CURRENCY' => $objSorting->getHeaderForField('minimum_amount'), 'HEADER_SHOP_DISCOUNT_COUPON_RATE' => $objSorting->getHeaderForField('discount_rate'), 'HEADER_SHOP_DISCOUNT_COUPON_AMOUNT_CURRENCY' => $objSorting->getHeaderForField('discount_amount'), 'HEADER_SHOP_DISCOUNT_COUPON_USES' => $objSorting->getHeaderForField('uses'), 'HEADER_SHOP_DISCOUNT_COUPON_SCOPE' => $objSorting->getHeaderForField('global'), 'HEADER_SHOP_DISCOUNT_COUPON_CUSTOMER' => $objSorting->getHeaderForField('customer_id'), 'HEADER_SHOP_DISCOUNT_COUPON_PRODUCT' => $objSorting->getHeaderForField('product_id'), 'HEADER_SHOP_DISCOUNT_COUPON_PAYMENT' => $objSorting->getHeaderForField('payment_id')));
     $count = 0;
     $limit = \Cx\Core\Setting\Controller\Setting::getValue('numof_coupon_per_page_backend', 'Shop');
     if (empty($limit)) {
         self::errorHandler();
     }
     $arrCoupons = self::getArray(\Paging::getPosition(), $limit, $count, $objSorting->getOrder());
     $arrProductName = Products::getNameArray(true, $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_PRODUCT_FORMAT']);
     $arrPaymentName = Payment::getNameArray();
     $i = 0;
     $row = 0;
     $objCouponEdit = new Coupon();
     $objCouponEdit->code($code);
     $objCouponEdit->payment_id($payment_id);
     $objCouponEdit->minimum_amount($minimum_amount);
     $objCouponEdit->discount_rate($discount_rate);
     $objCouponEdit->discount_amount($discount_amount);
     $objCouponEdit->start_time($start_time);
     $objCouponEdit->end_time($end_time);
     $objCouponEdit->uses($uses);
     $objCouponEdit->is_global($global);
     $objCouponEdit->customer_id($customer_id);
     $objCouponEdit->product_id($product_id);
     global $_CONFIG;
     foreach ($arrCoupons as $index => $objCoupon) {
         $coupon_uri_id = 'coupon_uri_' . $index;
         $objTemplate->setVariable(array('SHOP_ROWCLASS' => 'row' . (++$row % 2 + 1), 'SHOP_DISCOUNT_COUPON_CODE' => $objCoupon->code, 'SHOP_DISCOUNT_COUPON_URI_ICON' => '<div class="icon_url"' . '>&nbsp;</div>', 'SHOP_DISCOUNT_COUPON_URI_INPUT' => '<div class="layer_url" id="' . $coupon_uri_id . '">' . \Html::getInputText('dummy', 'http://' . $_CONFIG['domainUrl'] . \Cx\Core\Core\Controller\Cx::instanciate()->getWebsiteOffsetPath() . '/' . CONTREXX_DIRECTORY_INDEX . '?section=Shop' . MODULE_INDEX . '&coupon_code=' . $objCoupon->code, false, 'readonly="readonly"' . ' style="width: 200px;"' . ' onfocus="this.select();"' . ' onblur="cx.jQuery(\'#' . $coupon_uri_id . '\').hide();"') . '</div>', 'SHOP_DISCOUNT_COUPON_START_TIME' => $objCoupon->start_time ? date(ASCMS_DATE_FORMAT_DATE, $objCoupon->start_time) : $_ARRAYLANG['TXT_SHOP_DATE_NONE'], 'SHOP_DISCOUNT_COUPON_END_TIME' => $objCoupon->end_time ? date(ASCMS_DATE_FORMAT_DATE, $objCoupon->end_time) : $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_END_TIME_UNLIMITED'], 'SHOP_DISCOUNT_COUPON_MINIMUM_AMOUNT' => $objCoupon->minimum_amount > 0 ? $objCoupon->minimum_amount : $_ARRAYLANG['TXT_SHOP_AMOUNT_NONE'], 'SHOP_DISCOUNT_COUPON_RATE' => $objCoupon->discount_rate > 0 ? $objCoupon->discount_rate : $_ARRAYLANG['TXT_SHOP_RATE_NONE'], 'SHOP_DISCOUNT_COUPON_AMOUNT' => $objCoupon->discount_amount > 0 ? $objCoupon->discount_amount : $_ARRAYLANG['TXT_SHOP_AMOUNT_NONE'], 'SHOP_DISCOUNT_COUPON_USES' => sprintf($_ARRAYLANG['TXT_SHOP_COUPON_USES_FORMAT'], $objCoupon->used, $objCoupon->uses < 1000000000.0 ? $objCoupon->uses : $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_USES_UNLIMITED']), 'SHOP_DISCOUNT_COUPON_SCOPE' => $objCoupon->global ? $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_GLOBALLY'] : $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_PER_CUSTOMER'], 'SHOP_DISCOUNT_COUPON_PER_CUSTOMER' => !$objCoupon->global ? \Html::getRadio('foo_' . ++$i, '', false, true, '', \Html::ATTRIBUTE_DISABLED) : '&nbsp;', 'SHOP_DISCOUNT_COUPON_CUSTOMER' => $objCoupon->customer_id ? Customers::getNameById($objCoupon->customer_id, '%4$s (%3$u)') : $_ARRAYLANG['TXT_SHOP_CUSTOMER_ANY'], 'SHOP_DISCOUNT_COUPON_PRODUCT' => $objCoupon->product_id ? isset($arrProductName[$objCoupon->product_id]) ? $arrProductName[$objCoupon->product_id] : $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_PRODUCT_INVALID'] : $_ARRAYLANG['TXT_SHOP_PRODUCT_ANY'], 'SHOP_DISCOUNT_COUPON_PAYMENT' => $objCoupon->payment_id ? sprintf($_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_PAYMENT_FORMAT'], $objCoupon->payment_id, $arrPaymentName[$objCoupon->payment_id]) : $_ARRAYLANG['TXT_SHOP_PAYMENT_ANY'], 'SHOP_DISCOUNT_COUPON_FUNCTIONS' => \Html::getBackendFunctions(array('edit' => ADMIN_SCRIPT_PATH . '?cmd=Shop&amp;act=settings&amp;tpl=coupon&amp;edit=' . urlencode($index), 'delete' => "javascript:delete_coupon('" . urlencode($index) . "');"))));
         $objTemplate->parse('shopDiscountCouponView');
         if ($index === $edit) {
             $objCouponEdit = $objCoupon;
         }
     }
     $objTemplate->replaceBlock('shopDiscountCouponView', '', true);
     $paging = \Paging::get($uri, $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_CODES'], $count, $limit);
     //DBG::log("Paging: $paging");
     $objTemplate->setVariable('SHOP_PAGING', $paging);
     $attribute_code = 'style="width: 230px; text-align: left;" maxlength="20"';
     $attribute_time = 'style="width: 230px; text-align: left;" maxlength="10"';
     $attribute_discount_rate = 'style="width: 230px; text-align: right;" maxlength="3"';
     $attribute_discount_amount = 'style="width: 230px; text-align: right;" maxlength="9"';
     $attribute_minimum_amount = 'style="width: 230px; text-align: right;" maxlength="9"';
     $attribute_uses = 'style="width: 230px; text-align: right;" maxlength="6"';
     // Superseded by the widget, see below
     //        $attribute_customer = 'style="width: 230px;"';
     $attribute_product = 'style="width: 230px;"';
     $attribute_payment = 'style="width: 230px;"';
     $type = $objCouponEdit->discount_rate > 0 ? 'rate' : 'amount';
     $customer_name = '';
     //reset the add view
     if (!$edit) {
         $objCouponEdit = new Coupon();
     }
     if ($objCouponEdit->customer_id) {
         $customer_name = Customers::getNameById($objCouponEdit->customer_id, '%4$s (%3$u)');
         //DBG::log("Customer ID ".$objCouponEdit->customer_id.": name $customer_name");
     }
     $objTemplate->setVariable(array('SHOP_ROWCLASS' => 'row' . (++$row % 2 + 1), 'SHOP_DISCOUNT_COUPON_INDEX' => $objCouponEdit->getIndex(), 'SHOP_DISCOUNT_COUPON_CODE' => \Html::getInputText('code', $objCouponEdit->code, '', $attribute_code), 'SHOP_DISCOUNT_COUPON_CODE_CREATE' => \Html::getInputButton('code_create', $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_CODE_NEW'], 'button', false, 'onclick="cx.jQuery(\'#code\').val(\'' . Coupon::getNewCode() . '\');' . 'cx.jQuery(this).css(\'display\', \'none\');"'), 'SHOP_DISCOUNT_COUPON_START_TIME' => \Html::getDatepicker('start_date', array('defaultDate' => date(ASCMS_DATE_FORMAT_DATE, $objCouponEdit->start_time ? $objCouponEdit->start_time : time())), $attribute_time), 'SHOP_DISCOUNT_COUPON_END_TIME' => \Html::getDatepicker('end_date', array('defaultDate' => $objCouponEdit->end_time ? date(ASCMS_DATE_FORMAT_DATE, $objCouponEdit->end_time) : ''), $attribute_time), 'SHOP_DISCOUNT_COUPON_END_TIME_UNLIMITED' => \Html::getCheckbox('end_time_unlimited', 1, '', $objCouponEdit->end_time ? '' : \Html::ATTRIBUTE_CHECKED) . \Html::getLabel('end_time_unlimited', $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_END_TIME_UNLIMITED']), 'SHOP_DISCOUNT_COUPON_MINIMUM_AMOUNT' => \Html::getInputText('minimum_amount', $objCouponEdit->minimum_amount, false, $attribute_minimum_amount), 'SHOP_DISCOUNT_COUPON_TYPE' => \Html::getRadioGroup('coupon_type', array('rate' => $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_TYPE_RATE'], 'amount' => $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_TYPE_AMOUNT']), $type), 'SHOP_DISCOUNT_COUPON_TYPE_SELECTED' => $type, 'SHOP_DISCOUNT_COUPON_RATE' => \Html::getInputText('discount_rate', $objCouponEdit->discount_rate, false, $attribute_discount_rate), 'SHOP_DISCOUNT_COUPON_AMOUNT' => \Html::getInputText('discount_amount', number_format($objCouponEdit->discount_amount, 2, '.', ''), false, $attribute_discount_amount), 'SHOP_DISCOUNT_COUPON_USES' => \Html::getInputText('uses', $objCouponEdit->uses < 1000000000.0 ? $objCouponEdit->uses : '', 'uses', $attribute_uses), 'SHOP_DISCOUNT_COUPON_USES_UNLIMITED' => \Html::getCheckbox('unlimited', 1, 'unlimited', $objCouponEdit->uses > 1000000000.0) . \Html::getLabel('unlimited', $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_USES_UNLIMITED']), 'SHOP_DISCOUNT_COUPON_GLOBALLY' => \Html::getRadio('global_or_customer', '1', 'global', $objCouponEdit->global) . \Html::getLabel('global', $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_GLOBALLY']), 'SHOP_DISCOUNT_COUPON_PER_CUSTOMER' => \Html::getRadio('global_or_customer', '0', 'customer', !$objCouponEdit->global) . \Html::getLabel('customer', $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_PER_CUSTOMER']), 'SHOP_DISCOUNT_COUPON_CUSTOMER_ID' => $objCouponEdit->customer_id, 'SHOP_DISCOUNT_COUPON_CUSTOMER_NAME' => $customer_name, 'SHOP_DISCOUNT_COUPON_PRODUCT' => \Html::getSelect('product_id', array(0 => $_ARRAYLANG['TXT_SHOP_PRODUCT_ANY']) + $arrProductName, $objCouponEdit->product_id, false, '', $attribute_product), 'SHOP_DISCOUNT_COUPON_PAYMENT' => \Html::getSelect('payment_id', array(0 => $_ARRAYLANG['TXT_SHOP_PAYMENT_ANY']) + $arrPaymentName, $objCouponEdit->payment_id, false, '', $attribute_payment), 'SHOP_DISCOUNT_COUPON_CUSTOMER_WIDGET_DISPLAY' => $objCouponEdit->global ? \Html::CSS_DISPLAY_NONE : \Html::CSS_DISPLAY_INLINE));
     $objTemplate->parse('shopDiscountCouponEdit');
     // Depends on, and thus implies loading jQuery as well!
     \FWUser::getUserLiveSearch(array('minLength' => 3, 'canCancel' => true, 'canClear' => true));
     return $result;
 }
 public function showTaskjobSummary($taskjob_data)
 {
     global $CFG_GLPI;
     $id = $taskjob_data['id'];
     $name = $taskjob_data['name'];
     if ($name == '') {
         $name = "({$id})";
     }
     echo implode("\n", array("<td class='control'>", Html::getCheckbox(array('name' => 'taskjobs[]', 'value' => $id)), "</td>"));
     echo implode("\n", array("<td id='taskjob_{$id}' class='taskjob_block'>", "  <a ", "     href='#taskjobs_form'", "     onclick='taskjobs.edit(", "        \"" . $this->getBaseUrlFor('fi.job.edit') . "\", ", "        {$id}", "     )'>{$name}</a>", "</td>"));
     echo "<td class='rowhandler control'><div class='drag'/></td>";
 }
Example #8
0
 /**
  * Summary of setLockedByMessage
  * Shows 'Locked by ' message and proposes to request unlock from locker
  **/
 private function setLockedByMessage()
 {
     global $CFG_GLPI;
     // should get locking user info
     $user = new User();
     $user->getFromDBByQuery(" WHERE id = " . $this->fields['users_id']);
     $useremail = new UserEmail();
     $showAskUnlock = $useremail->getFromDBByQuery(" WHERE users_id = " . $this->fields['users_id'] . "\n                                                            AND is_default = 1 ") && $CFG_GLPI['use_mailing'] == 1;
     $completeUserName = formatUserName(0, $user->fields['name'], $user->fields['realname'], $user->fields['firstname']);
     if ($showAskUnlock) {
         $ret = Html::scriptBlock("\n         function askUnlock() {\n            \$('#message_after_lock').fadeToggle() ;\n            " . Html::jsConfirmCallback(__('Ask for unlock item?'), $this->itemtypename . " #" . $this->itemid, "function() {\n                  \$.ajax({\n                     url: '" . $CFG_GLPI['root_doc'] . "/ajax/unlockobject.php',\n                     cache: false,\n                     data: 'requestunlock=1&id=" . $this->fields['id'] . "',\n                     success: function( data, textStatus, jqXHR ) {\n                           " . Html::jsAlertCallback($completeUserName, __('Request sent to'), "function() { \$('#message_after_lock').fadeToggle() ; }") . "\n                        }\n                     });\n               }", "function() {\n                  \$('#message_after_lock').fadeToggle() ;\n               }") . "\n         }\n\n         ");
         echo $ret;
     }
     $ret = Html::scriptBlock("\n         \$(function(){\n            var lockStatusTimer ;\n            \$('#alertMe').change(function( eventObject ){\n               if( this.checked ) {\n                  lockStatusTimer = setInterval( function() {\n                     \$.ajax({\n                           url: '" . $CFG_GLPI['root_doc'] . "/ajax/unlockobject.php',\n                           cache: false,\n                           data: 'lockstatus=1&id=" . $this->fields['id'] . "',\n                           success: function( data, textStatus, jqXHR ) {\n                                 if( data == 0 ) {\n                                    clearInterval(lockStatusTimer);\n                                    \$('#message_after_lock').fadeToggle() ;" . Html::jsConfirmCallback(__('Reload page?'), __('Item unlocked!'), "function() {\n                                       window.location.reload(true);\n                                    }") . "\n                                 }\n                              }\n                           });\n                  },15000)\n               } else {\n                  clearInterval(lockStatusTimer);\n               }\n            });\n         });\n      ");
     echo $ret;
     $msg = "<table><tr><td class=red nowrap>";
     $msg .= __('Locked by ') . "<a href='" . $user->getLinkURL() . "'>{$completeUserName}</a> -> " . Html::convDateTime($this->fields['date_mod']);
     $msg .= "</td><td nowrap>";
     if ($showAskUnlock) {
         $msg .= "<a class='vsubmit' onclick='javascript:askUnlock();'>" . __('Ask for unlock') . "</a>";
     }
     $msg .= "</td><td>&nbsp;&nbsp;</td><td>" . __('Alert me when unlocked') . "</td><td>&nbsp;" . Html::getCheckbox(array('id' => 'alertMe')) . "</td></tr></table>";
     $this->displayLockMessage($msg);
 }
Example #9
0
 static function view_settings_general()
 {
     // General settings
     self::$objTemplate->addBlockfile('SHOP_SETTINGS_FILE', 'settings_block', 'module_shop_settings_general.html');
     // TODO: Temporary.  Remove in release with working update
     // Returns NULL on missing entries even when other settings are properly loaded
     $test = \Cx\Core\Setting\Controller\Setting::getValue('shopnavbar_on_all_pages', 'Shop');
     if ($test === NULL) {
         ShopSettings::errorHandler();
         \Cx\Core\Setting\Controller\Setting::init('Shop', 'config');
     }
     self::$objTemplate->setVariable(array('SHOP_CONFIRMATION_EMAILS' => \Cx\Core\Setting\Controller\Setting::getValue('email_confirmation', 'Shop'), 'SHOP_CONTACT_EMAIL' => \Cx\Core\Setting\Controller\Setting::getValue('email', 'Shop'), 'SHOP_CONTACT_COMPANY' => \Cx\Core\Setting\Controller\Setting::getValue('company', 'Shop'), 'SHOP_CONTACT_ADDRESS' => \Cx\Core\Setting\Controller\Setting::getValue('address', 'Shop'), 'SHOP_CONTACT_TEL' => \Cx\Core\Setting\Controller\Setting::getValue('telephone', 'Shop'), 'SHOP_CONTACT_FAX' => \Cx\Core\Setting\Controller\Setting::getValue('fax', 'Shop'), 'SHOP_GENERAL_COUNTRY_MENUOPTIONS' => \Cx\Core\Country\Controller\Country::getMenuoptions(\Cx\Core\Setting\Controller\Setting::getValue('country_id', 'Shop')), 'SHOP_THUMBNAIL_MAX_WIDTH' => \Cx\Core\Setting\Controller\Setting::getValue('thumbnail_max_width', 'Shop'), 'SHOP_THUMBNAIL_MAX_HEIGHT' => \Cx\Core\Setting\Controller\Setting::getValue('thumbnail_max_height', 'Shop'), 'SHOP_THUMBNAIL_QUALITY' => \Cx\Core\Setting\Controller\Setting::getValue('thumbnail_quality', 'Shop'), 'SHOP_WEIGHT_ENABLE_CHECKED' => \Cx\Core\Setting\Controller\Setting::getValue('weight_enable', 'Shop') ? \Html::ATTRIBUTE_CHECKED : '', 'SHOP_SHOW_PRODUCTS_DEFAULT_OPTIONS' => Products::getDefaultViewMenuoptions(\Cx\Core\Setting\Controller\Setting::getValue('show_products_default', 'Shop')), 'SHOP_PRODUCT_SORTING_MENUOPTIONS' => Products::getProductSortingMenuoptions(), 'SHOP_ORDERITEMS_AMOUNT_MAX' => Currency::formatPrice(\Cx\Core\Setting\Controller\Setting::getValue('orderitems_amount_max', 'Shop')), 'SHOP_ORDERITEMS_AMOUNT_MIN' => Currency::formatPrice(\Cx\Core\Setting\Controller\Setting::getValue('orderitems_amount_min', 'Shop')), 'SHOP_CURRENCY_CODE' => Currency::getCurrencyCodeById(Currency::getDefaultCurrencyId()), 'SHOP_SETTING_CART_USE_JS' => \Html::getCheckbox('use_js_cart', 1, false, \Cx\Core\Setting\Controller\Setting::getValue('use_js_cart', 'Shop')), 'SHOP_SETTING_SHOPNAVBAR_ON_ALL_PAGES' => \Html::getCheckbox('shopnavbar_on_all_pages', 1, false, \Cx\Core\Setting\Controller\Setting::getValue('shopnavbar_on_all_pages', 'Shop')), 'SHOP_SETTING_REGISTER' => \Html::getSelectCustom('register', ShopLibrary::getRegisterMenuoptions(\Cx\Core\Setting\Controller\Setting::getValue('register', 'Shop')), false, '', 'style="width: 270px;"'), 'SHOP_SETTING_NUMOF_PRODUCTS_PER_PAGE_BACKEND' => \Cx\Core\Setting\Controller\Setting::getValue('numof_products_per_page_backend', 'Shop'), 'SHOP_SETTING_NUMOF_ORDERS_PER_PAGE_BACKEND' => \Cx\Core\Setting\Controller\Setting::getValue('numof_orders_per_page_backend', 'Shop'), 'SHOP_SETTING_NUMOF_CUSTOMERS_PER_PAGE_BACKEND' => \Cx\Core\Setting\Controller\Setting::getValue('numof_customers_per_page_backend', 'Shop'), 'SHOP_SETTING_NUMOF_MANUFACTURERS_PER_PAGE_BACKEND' => \Cx\Core\Setting\Controller\Setting::getValue('numof_manufacturers_per_page_backend', 'Shop'), 'SHOP_SETTING_NUMOF_MAILTEMPLATE_PER_PAGE_BACKEND' => \Cx\Core\Setting\Controller\Setting::getValue('numof_mailtemplate_per_page_backend', 'Shop'), 'SHOP_SETTING_NUMOF_COUPON_PER_PAGE_BACKEND' => \Cx\Core\Setting\Controller\Setting::getValue('numof_coupon_per_page_backend', 'Shop'), 'SHOP_SETTING_NUMOF_PRODUCTS_PER_PAGE_FRONTEND' => \Cx\Core\Setting\Controller\Setting::getValue('numof_products_per_page_frontend', 'Shop'), 'SHOP_SETTING_USERGROUP_ID_CUSTOMER' => \Html::getSelect('usergroup_id_customer', \UserGroup::getNameArray(), \Cx\Core\Setting\Controller\Setting::getValue('usergroup_id_customer', 'Shop'), '', '', 'tabindex="0" style="width: 270px;"'), 'SHOP_SETTING_USERGROUP_ID_RESELLER' => \Html::getSelect('usergroup_id_reseller', \UserGroup::getNameArray(), \Cx\Core\Setting\Controller\Setting::getValue('usergroup_id_reseller', 'Shop'), '', '', 'tabindex="0" style="width: 270px;"'), 'SHOP_SETTING_USER_PROFILE_ATTRIBUTE_CUSTOMER_GROUP_ID' => \Html::getSelect('user_profile_attribute_customer_group_id', \User_Profile_Attribute::getCustomAttributeNameArray(), \Cx\Core\Setting\Controller\Setting::getValue('user_profile_attribute_customer_group_id', 'Shop'), '', '', 'tabindex="0" style="width: 270px;"'), 'SHOP_SETTING_USER_PROFILE_ATTRIBUTE_NOTES' => \Html::getSelect('user_profile_attribute_notes', \User_Profile_Attribute::getCustomAttributeNameArray(), \Cx\Core\Setting\Controller\Setting::getValue('user_profile_attribute_notes', 'Shop'), '', '', 'tabindex="0" style="width: 270px;"')));
 }
 /**
  * Show the selected mail template for editing
  *
  * Stores the MailTemplate if the 'bsubmit' parameter has been posted.
  * If the $key argument is empty, tries to pick the value from
  * $_REQUEST['key'].
  * @param   mixed     $section      The section of the mail template
  *                                  to be edited
  * @param   string    $key          The optional key of the mail template
  *                                  to be edited
  * @param   string    $act          The action of the mail template
  * @return  \Cx\Core\Html\Sigma     The template object
  */
 static function edit($section, $key = '', $useDefaultActs = true, $act = 'mailtemplate_overview')
 {
     global $_CORELANG;
     // If the $key parameter is empty, check the request
     if (empty($key)) {
         if (isset($_REQUEST['key'])) {
             $key = $_REQUEST['key'];
         }
     }
     // Try to load an existing template for any non-empty key
     $arrTemplate = null;
     if ($key != '') {
         $arrTemplate = self::get($section, $key, FRONTEND_LANG_ID);
     }
     // If there is none, get an empty template
     $new = false;
     if (!$arrTemplate) {
         $new = true;
         $arrTemplate = self::getEmpty($key);
     }
     // Copy the template?
     if (isset($_REQUEST['copy'])) {
         $arrTemplate['key'] = '';
         $new = true;
     }
     $objTemplate = new \Cx\Core\Html\Sigma(\Env::get('cx')->getCodeBaseCorePath() . '/MailTemplate/View/Template/Generic');
     $objTemplate->setErrorHandling(PEAR_ERROR_DIE);
     \Cx\Core\Csrf\Controller\Csrf::add_placeholder($objTemplate);
     if (!$objTemplate->loadTemplateFile('Edit.html')) {
         die("Failed to load template Edit.html");
     }
     $uri = \Html::getRelativeUri_entities();
     \Html::stripUriParam($uri, 'key');
     $uriAppendix = '';
     if ($useDefaultActs) {
         \Html::stripUriParam($uri, 'act');
         $uriAppendix = '&amp;act=' . $act;
     }
     $tab_index = \Cx\Core\Setting\Controller\Setting::tab_index();
     \Html::replaceUriParameter($uri, 'active_tab=' . $tab_index);
     \Html::replaceUriParameter($uri, 'userFrontendLangId=' . FRONTEND_LANG_ID);
     $objTemplate->setGlobalVariable($_CORELANG + array('CORE_MAILTEMPLATE_EDIT_TITLE' => $new ? $_CORELANG['TXT_CORE_MAILTEMPLATE_ADD'] : $_CORELANG['TXT_CORE_MAILTEMPLATE_EDIT'], 'CORE_MAILTEMPLATE_CMD' => isset($_REQUEST['cmd']) ? $_REQUEST['cmd'] : '', 'CORE_MAILTEMPLATE_ACTIVE_TAB' => $tab_index, 'URI_BASE' => $uri . $uriAppendix));
     $i = 0;
     foreach ($arrTemplate as $name => $value) {
         // See if there is a posted parameter value
         if (isset($_POST[$name])) {
             $value = $_POST[$name];
         }
         // IDs are set up as hidden fields.
         // They *MUST NOT* be edited!
         if (preg_match('/(?:_id)$/', $name)) {
             // For copies, IDs *MUST NOT* be reused!
             if (isset($_REQUEST['copy'])) {
                 $value = 0;
             }
             $objTemplate->setVariable('MAILTEMPLATE_HIDDEN', \Html::getHidden($name, $value));
             $objTemplate->parse('core_mailtemplate_hidden');
             continue;
         }
         // Regular inputs of various kinds
         $input = '';
         $attribute = '';
         //            $arrMimetype = '';
         switch ($name) {
             case 'available':
                 continue 2;
                 /*
                 TODO: WARNING: FCKEditor v2.x f***s up the blocks in the mail template!
                 Use plain text areas instead.  See below.
                 */
             /*
             TODO: WARNING: FCKEditor v2.x f***s up the blocks in the mail template!
             Use plain text areas instead.  See below.
             */
             case 'message_html':
                 // Show WYSIWYG only if HTML is enabled
                 if (empty($arrTemplate['html'])) {
                     continue 2;
                 }
                 $objTemplate->setVariable(array('MAILTEMPLATE_ROWCLASS' => ++$i % 2 + 1, 'MAILTEMPLATE_SPECIAL' => $_CORELANG['TXT_CORE_MAILTEMPLATE_' . strtoupper($name)]));
                 $objTemplate->touchBlock('core_mailtemplate_special');
                 $objTemplate->parse('core_mailtemplate_special');
                 $objTemplate->setVariable(array('MAILTEMPLATE_ROWCLASS' => ++$i % 2 + 1, 'MAILTEMPLATE_SPECIAL' => new \Cx\Core\Wysiwyg\Wysiwyg($name, $value, 'fullpage')));
                 $objTemplate->touchBlock('core_mailtemplate_special');
                 $objTemplate->parse('core_mailtemplate_special');
                 continue 2;
                 //$objTemplate->replaceBlock('core_mailtemplate_special', '', true);
                 //              case 'message_html':
             //$objTemplate->replaceBlock('core_mailtemplate_special', '', true);
             //              case 'message_html':
             case 'message':
                 $input = \Html::getTextarea($name, $value, '', 10, 'style="width: 600px;"');
                 break;
             case 'protected':
                 $attribute = \Html::ATTRIBUTE_DISABLED;
                 $input = \Html::getCheckbox($name, 1, '', $value, '', $attribute);
                 break;
             case 'html':
                 $input = \Html::getCheckbox($name, 1, '', $value, '', $attribute) . '&nbsp;' . $_CORELANG['TXT_CORE_MAILTEMPLATE_STORE_TO_SWITCH_EDITOR'];
                 break;
             case 'inline':
             case 'attachments':
                 continue 2;
                 // TODO: These do not work properly yet
                 /*
                               // These are identical except for the MIME types
                               case 'inline':
                                 $arrMimetype = \Filetype::getImageMimetypes();
                               case 'attachments':
                                 $arrAttachments = self::attachmentsToArray($arrTemplate[$name]);
                                 // Show at least one empty attachment/inline row
                                 if (empty($arrAttachments))
                                     $arrAttachments = array(array('path' => '', ), );
                                 $i = 0;
                                 foreach ($arrAttachments as $arrAttachment) {
                                     $div_id = $name.'-'.(++$i);
                                     $element_name = $name.'['.$i.']';
                                     $input .=
                                         '<div id="'.$div_id.'">'.
                                           \Html::getHidden(
                                               $element_name.'[old]', $arrAttachment['path'],
                                               $name.'-hidden-'.$i).
                                           $arrAttachment['path'].'&nbsp;'.
                                           $_CORELANG['TXT_CORE_MAILTEMPLATE_ATTACHMENT_UPLOAD'].
                                           \Html::getInputFileupload(
                                               $element_name.'[new]', $name.'-file-'.$i,
                                               \Filetype::MAXIMUM_UPLOAD_FILE_SIZE,
                                               $arrMimetype).
                                           // Links for adding/removing inputs
                                           \Html::getRemoveAddLinks($div_id).
                                         '</div>';
                                 }
                 //echo("$name => ".htmlentities($input)."<hr />");
                                 break;
                 */
                 // Once the key is defined, it cannot be changed.
                 // To fix a wrong key, copy the old template and enter a new key,
                 // then delete the old one.
             // TODO: These do not work properly yet
             /*
                           // These are identical except for the MIME types
                           case 'inline':
                             $arrMimetype = \Filetype::getImageMimetypes();
                           case 'attachments':
                             $arrAttachments = self::attachmentsToArray($arrTemplate[$name]);
                             // Show at least one empty attachment/inline row
                             if (empty($arrAttachments))
                                 $arrAttachments = array(array('path' => '', ), );
                             $i = 0;
                             foreach ($arrAttachments as $arrAttachment) {
                                 $div_id = $name.'-'.(++$i);
                                 $element_name = $name.'['.$i.']';
                                 $input .=
                                     '<div id="'.$div_id.'">'.
                                       \Html::getHidden(
                                           $element_name.'[old]', $arrAttachment['path'],
                                           $name.'-hidden-'.$i).
                                       $arrAttachment['path'].'&nbsp;'.
                                       $_CORELANG['TXT_CORE_MAILTEMPLATE_ATTACHMENT_UPLOAD'].
                                       \Html::getInputFileupload(
                                           $element_name.'[new]', $name.'-file-'.$i,
                                           \Filetype::MAXIMUM_UPLOAD_FILE_SIZE,
                                           $arrMimetype).
                                       // Links for adding/removing inputs
                                       \Html::getRemoveAddLinks($div_id).
                                     '</div>';
                             }
             //echo("$name => ".htmlentities($input)."<hr />");
                             break;
             */
             // Once the key is defined, it cannot be changed.
             // To fix a wrong key, copy the old template and enter a new key,
             // then delete the old one.
             case 'key':
                 $input = $arrTemplate['key'] ? $value . \Html::getHidden($name, $value) : \Html::getInputText($name, $value, '', 'style="width: 300px;"');
                 //echo("Key /$key/ -> attr $attribute<br />");
                 break;
             default:
                 $input = \Html::getInputText($name, $value, '', 'style="width: 300px;"');
         }
         $name_upper = strtoupper($name);
         $objTemplate->setVariable(array('MAILTEMPLATE_ROWCLASS' => ++$i % 2 + 1, 'MAILTEMPLATE_NAME' => $_CORELANG['TXT_CORE_MAILTEMPLATE_' . $name_upper], 'MAILTEMPLATE_VALUE' => $input));
         // Add note with helpful hints, if available
         if (isset($_CORELANG['TXT_CORE_MAILTEMPLATE_NOTE_' . $name_upper])) {
             $objTemplate->setVariable('MAILTEMPLATE_VALUE_NOTE', $_CORELANG['TXT_CORE_MAILTEMPLATE_NOTE_' . $name_upper]);
         }
         $objTemplate->parse('core_mailtemplate_row');
     }
     // Send the (possibly edited and now stored) mail, if requested
     if (empty($_POST['to_test'])) {
         return $objTemplate;
     }
     if (empty($key)) {
         \Message::error($_CORELANG['TXT_CORE_MAILTEMPLATE_ERROR_NO_KEY']);
         return $objTemplate;
     }
     $to_test = contrexx_input2raw($_POST['to_test']);
     $objTemplate->setVariable('CORE_MAILTEMPLATE_TO_TEST', $to_test);
     self::sendTestMail($section, $key, $to_test);
     return $objTemplate;
 }