Ejemplo n.º 1
0
 /**
  * Method to get the field input markup for a generic list.
  * Use the multiple attribute to enable multiselect.
  *
  * @return  string  The field input markup.
  */
 protected function getInput()
 {
     // Initialize variables.
     $attributes = array('type' => 'text', 'value' => htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8'), 'name' => $this->name, 'id' => $this->id, 'size' => $this->element['size'] ? (int) $this->element['size'] : '', 'maxlength' => $this->element['maxlength'] ? (int) $this->element['maxlength'] : '', 'class' => 'orcid' . ($this->element['class'] ? (string) $this->element['class'] : ''), 'autocomplete' => (string) $this->element['autocomplete'] == 'off' ? 'off' : '', 'readonly' => (string) $this->element['readonly'] == 'true' ? 'readonly' : '', 'disabled' => (string) $this->element['disabled'] == 'true' ? 'disabled' : '', 'onchange' => $this->element['onchange'] ? (string) $this->element['onchange'] : '');
     $attr = array();
     foreach ($attributes as $key => $value) {
         if ($key != 'value' && !$value) {
             continue;
         }
         $attr[] = $key . '="' . $value . '"';
     }
     $attr = implode(' ', $attr);
     $html = array();
     $html[] = '<div class="grid">';
     $html[] = '	<div class="col span9">';
     $html[] = '		<input ' . $attr . ' placeholder="####-####-####-####" />';
     $html[] = '		<input type="hidden" name="base_uri" id="base_uri" value="' . rtrim(Request::base(true), '/') . '" />';
     $html[] = '	</div>';
     $html[] = '	<div class="col span3 omega">';
     $html[] = '		<a class="btn button icon-search orcid-fetch" data-base="' . rtrim(Request::base(true), '/') . '" data-id="' . $this->id . '" href="' . Request::base() . '/' . Route::url('index.php?option=com_members&controller=orcid') . '">' . Lang::txt('COM_MEMBERS_PROFILE_ORCID_FIND') . '</a>';
     $html[] = '	</div>';
     $html[] = '</div>';
     $html[] = '<p><img src="' . Request::root() . '/core/components/com_members/site/assets/img/orcid-logo.png" width="80" alt="ORCID" /> ' . Lang::txt('COM_MEMBERS_PROFILE_ORCID_ABOUT') . '</p>';
     Behavior::framework(true);
     Behavior::modal();
     if (file_exists(PATH_ROOT . '/core/components/com_members/site/assets/js/orcid.js')) {
         Document::addScript('/core/components/com_members/site/assets/js/orcid.js?t=' . filemtime(PATH_ROOT . '/core/components/com_members/site/assets/js/orcid.js'));
     }
     return implode($html);
 }
Ejemplo n.º 2
0
 /**
  * Method to get the field input markup for a combo box field.
  *
  * @return  string  The field input markup.
  */
 protected function getInput()
 {
     // Initialize variables.
     $html = array();
     $attr = '';
     // Initialize some field attributes.
     $attr .= $this->element['class'] ? ' class="combobox ' . (string) $this->element['class'] . '"' : ' class="combobox"';
     $attr .= (string) $this->element['readonly'] == 'true' ? ' readonly="readonly"' : '';
     $attr .= (string) $this->element['disabled'] == 'true' ? ' disabled="disabled"' : '';
     $attr .= $this->element['size'] ? ' size="' . (int) $this->element['size'] . '"' : '';
     // Initialize JavaScript field attributes.
     $attr .= $this->element['onchange'] ? ' onchange="' . (string) $this->element['onchange'] . '"' : '';
     // Get the field options.
     $options = $this->getOptions();
     // Load the combobox behavior.
     Behavior::combobox();
     // Build the input for the combo box.
     $html[] = '<input type="text" name="' . $this->name . '" id="' . $this->id . '"' . ' value="' . htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') . '"' . $attr . '/>';
     // Build the list for the combo box.
     $html[] = '<ul id="combobox-' . $this->id . '" style="display:none;">';
     foreach ($options as $option) {
         $html[] = '<li>' . $option->text . '</li>';
     }
     $html[] = '</ul>';
     return implode($html);
 }
Ejemplo n.º 3
0
 /**
  * Fetch a calendar element
  *
  * @param   string  $name          Element name
  * @param   string  $value         Element value
  * @param   object  &$node         XMLElement node object containing the settings for the element
  * @param   string  $control_name  Control name
  * @return  string
  */
 public function fetchElement($name, $value, &$node, $control_name)
 {
     // Load the calendar behavior
     Behavior::calendar();
     $format = $node->attributes('format') ? $node->attributes('format') : '%Y-%m-%d';
     $class = $node->attributes('class') ? $node->attributes('class') : 'inputbox';
     return Input::calendar($name, $value, array('format' => $format, 'class' => $class));
 }
Ejemplo n.º 4
0
 /**
  * Fetch the HTML for the button
  *
  * @param   string   $type     Unused string, formerly button type.
  * @param   string   $name     Button name
  * @param   string   $text     The link text
  * @param   string   $url      URL for popup
  * @param   integer  $width    Width of popup
  * @param   integer  $height   Height of popup
  * @param   integer  $top      Top attribute.
  * @param   integer  $left     Left attribute
  * @param   string   $onClose  JavaScript for the onClose event.
  * @return  string   HTML string for the button
  */
 public function fetchButton($type = 'Popup', $name = '', $text = '', $url = '', $width = 640, $height = 480, $top = 0, $left = 0, $onClose = '')
 {
     Behavior::modal();
     $text = \Lang::txt($text);
     $class = $this->fetchIconClass($name);
     $doTask = $this->_getCommand($name, $url, $width, $height, $top, $left);
     $html = "<a data-title=\"{$text}\" class=\"modal\" href=\"{$doTask}\" rel=\"{size: {width: {$width}, height: {$height}}, onClose: function() {" . $onClose . "}}\">\n";
     $html .= "<span class=\"{$class}\">\n";
     $html .= "{$text}\n";
     $html .= "</span>\n";
     $html .= "</a>\n";
     return $html;
 }
Ejemplo n.º 5
0
 /**
  * Method to get the field input markup for a generic list.
  * Use the multiple attribute to enable multiselect.
  *
  * @return  string  The field input markup.
  */
 protected function getInput()
 {
     // Initialize variables.
     $attributes = array('type' => 'text', 'value' => htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8'), 'name' => $this->name, 'id' => $this->id, 'size' => $this->element['size'] ? (int) $this->element['size'] : '', 'maxlength' => $this->element['maxlength'] ? (int) $this->element['maxlength'] : '', 'class' => $this->element['class'] ? (string) $this->element['class'] : '', 'readonly' => (string) $this->element['readonly'] == 'true' ? 'readonly' : '', 'disabled' => (string) $this->element['disabled'] == 'true' ? 'disabled' : '');
     Behavior::framework(true);
     $results = App::get('dispatcher')->trigger('hubzero.onGetMultiEntry', array(array('tags', $this->name, $this->id, $attributes['class'], $this->value, null, null, 'multi', $attributes['disabled'] ? true : null)));
     if (count($results) > 0) {
         $results = implode("\n", $results);
     } else {
         $results = self::getInput();
     }
     return $results;
 }
Ejemplo n.º 6
0
 /**
  * Method to get the field input markup.
  *
  * @return  string  The field input markup.
  */
 protected function getInput()
 {
     if (empty($this->value)) {
         // A color field can't be empty, we default to black. This is the same as the HTML5 spec.
         $this->value = '#000000';
     }
     $this->value = '#' . ltrim($this->value, '#');
     // Initialize some field attributes.
     $attributes = array('type' => 'text', 'value' => htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8'), 'name' => $this->name, 'id' => $this->id, 'size' => $this->element['size'] ? (int) $this->element['size'] : '', 'maxlength' => $this->element['maxlength'] ? (int) $this->element['maxlength'] : '', 'class' => $this->element['class'] ? (string) $this->element['class'] : '', 'autocomplete' => (string) $this->element['autocomplete'] == 'off' ? 'off' : '', 'readonly' => (string) $this->element['readonly'] == 'true' ? 'readonly' : '', 'disabled' => (string) $this->element['disabled'] == 'true' ? 'disabled' : '', 'onchange' => $this->element['onchange'] ? (string) $this->element['onchange'] : '');
     if (!$attributes['disabled']) {
         Behavior::colorpicker();
         $attributes['class'] .= ' input-colorpicker';
     }
     return '<span class="input-color"><input ' . $attr . ' /></span>';
 }
Ejemplo n.º 7
0
 /**
  * Returns an action on a grid
  *
  * @param   integer  $i               The row index
  * @param   string   $task            The task to fire
  * @param   mixed    $prefix          An optional task prefix or an array of options
  * @param   string   $text            An optional text to display
  * @param   string   $active_title    An optional active tooltip to display if $enable is true
  * @param   string   $inactive_title  An optional inactive tooltip to display if $enable is true
  * @param   boolean  $tip             An optional setting for tooltip
  * @param   string   $active_class    An optional active HTML class
  * @param   string   $inactive_class  An optional inactive HTML class
  * @param   boolean  $enabled         An optional setting for access control on the action.
  * @param   boolean  $translate       An optional setting for translation.
  * @param   string   $checkbox        An optional prefix for checkboxes.
  * @return  string   The Html code
  */
 public static function action($i, $task, $prefix = '', $text = '', $active_title = '', $inactive_title = '', $tip = false, $active_class = '', $inactive_class = '', $enabled = true, $translate = true, $checkbox = 'cb')
 {
     if (is_array($prefix)) {
         $options = $prefix;
         $text = array_key_exists('text', $options) ? $options['text'] : $text;
         $active_title = array_key_exists('active_title', $options) ? $options['active_title'] : $active_title;
         $inactive_title = array_key_exists('inactive_title', $options) ? $options['inactive_title'] : $inactive_title;
         $tip = array_key_exists('tip', $options) ? $options['tip'] : $tip;
         $active_class = array_key_exists('active_class', $options) ? $options['active_class'] : $active_class;
         $inactive_class = array_key_exists('inactive_class', $options) ? $options['inactive_class'] : $inactive_class;
         $enabled = array_key_exists('enabled', $options) ? $options['enabled'] : $enabled;
         $translate = array_key_exists('translate', $options) ? $options['translate'] : $translate;
         $checkbox = array_key_exists('checkbox', $options) ? $options['checkbox'] : $checkbox;
         $prefix = array_key_exists('prefix', $options) ? $options['prefix'] : '';
     }
     if ($tip) {
         Behavior::tooltip();
     }
     if ($enabled) {
         $html[] = '<a class="jgrid' . ($tip ? ' hasTip' : '') . '"';
         $html[] = ' href="javascript:void(0);" onclick="return listItemTask(\'' . $checkbox . $i . '\',\'' . $prefix . $task . '\')"';
         $html[] = ' title="' . addslashes(htmlspecialchars($translate ? Lang::txt($active_title) : $active_title, ENT_COMPAT, 'UTF-8')) . '">';
         $html[] = '<span class="state ' . $active_class . '">';
         $html[] = $text ? '<span class="text">' . ($translate ? Lang::txt($text) : $text) . '</span>' : '';
         $html[] = '</span>';
         $html[] = '</a>';
     } else {
         $html[] = '<a class="jgrid' . ($tip ? ' hasTip' : '') . '"';
         $html[] = ' title="' . addslashes(htmlspecialchars($translate ? Lang::txt($inactive_title) : $inactive_title, ENT_COMPAT, 'UTF-8')) . '">';
         $html[] = '<span class="state ' . $inactive_class . '">';
         $html[] = $text ? '<span class="text">' . ($translate ? Lang::txt($text) : $text) . '</span>' : '';
         $html[] = '</span>';
         $html[] = '</a>';
     }
     return implode($html);
 }
Ejemplo n.º 8
0
 /**
  * Get the JavaScript command for the button
  *
  * @param   string   $name  The task name as seen by the user
  * @param   string   $task  The task used by the application
  * @param   boolean  $list  True is requires a list confirmation.
  * @return  string   JavaScript command string
  */
 protected function _getCommand($name, $task, $list)
 {
     Behavior::framework();
     $message = \Lang::txt('JLIB_HTML_PLEASE_MAKE_A_SELECTION_FROM_THE_LIST');
     $message = addslashes($message);
     if ($list) {
         $cmd = "if (document.adminForm.boxchecked.value==0){alert('{$message}');}else{ Joomla.submitbutton('{$task}')}";
     } else {
         $cmd = "Joomla.submitbutton('{$task}')";
     }
     return $cmd;
 }
Ejemplo n.º 9
0
 /**
  * Write a <script></script> element
  *
  * @param   string   $file            path to file
  * @param   boolean  $framework       load the JS framework
  * @param   boolean  $relative        path to file is relative to /core folder
  * @param   boolean  $path_only       return the path to the file only
  * @param   boolean  $detect_browser  detect browser to include specific browser js files
  * @param   boolean  $detect_debug    detect debug to search for compressed files if debug is on
  * @return  mixed  nothing if $path_only is false, null, path or array of path if specific js browser files were detected
  */
 public static function script($file, $framework = false, $relative = false, $path_only = false, $detect_browser = true, $detect_debug = true)
 {
     if ($framework) {
         Behavior::framework();
     }
     $includes = self::includeRelativeFiles('js', $file, $relative, $detect_browser, $detect_debug);
     // If only path is required
     if ($path_only) {
         if (count($includes) == 0) {
             return null;
         } elseif (count($includes) == 1) {
             return $includes[0];
         } else {
             return $includes;
         }
     } else {
         $document = App::get('document');
         foreach ($includes as $include) {
             $document->addScript($include);
         }
     }
 }
Ejemplo n.º 10
0
 /**
  * Method to get the field input markup for Access Control Lists.
  * Optionally can be associated with a specific component and section.
  *
  * TODO: Add access check.
  *
  * @return  string  The field input markup.
  */
 protected function getInput()
 {
     Behavior::tooltip();
     // Initialise some field attributes.
     $section = $this->element['section'] ? (string) $this->element['section'] : '';
     $component = $this->element['component'] ? (string) $this->element['component'] : '';
     $assetField = $this->element['asset_field'] ? (string) $this->element['asset_field'] : 'asset_id';
     // Get the actions for the asset.
     $actions = Access::getActions($component, $section);
     // Iterate over the children and add to the actions.
     foreach ($this->element->children() as $el) {
         if ($el->getName() == 'action') {
             $actions[] = (object) array('name' => (string) $el['name'], 'title' => (string) $el['title'], 'description' => (string) $el['description']);
         }
     }
     // Get the explicit rules for this asset.
     if ($section == 'component') {
         // Need to find the asset id by the name of the component.
         $db = App::get('db');
         $query = $db->getQuery(true);
         $query->select($db->quoteName('id'));
         $query->from($db->quoteName('#__assets'));
         $query->where($db->quoteName('name') . ' = ' . $db->quote($component));
         $db->setQuery($query);
         $assetId = (int) $db->loadResult();
         if ($error = $db->getErrorMsg()) {
             throw new Exception(500, $error);
         }
     } else {
         // Find the asset id of the content.
         // Note that for global configuration, com_config injects asset_id = 1 into the form.
         $assetId = $this->form->getValue($assetField);
     }
     // Full width format.
     // Get the rules for just this asset (non-recursive).
     $assetRules = Access::getAssetRules($assetId);
     // Get the available user groups.
     $groups = $this->getUserGroups();
     // Build the form control.
     $curLevel = 0;
     $lang = App::get('language');
     // Prepare output
     $html = array();
     $html[] = '<div id="permissions-sliders" class="pane-sliders">';
     $html[] = '<p class="rule-desc">' . $lang->txt('JLIB_RULES_SETTINGS_DESC') . '</p>';
     $html[] = '<div id="permissions-rules">';
     // Start a row for each user group.
     foreach ($groups as $group) {
         $difLevel = $group->level - $curLevel;
         $html[] = '<h3 class="pane-toggler title"><a href="javascript:void(0);"><span>';
         $html[] = str_repeat('<span class="level">|&ndash;</span> ', $curLevel = $group->level) . $group->text;
         $html[] = '</span></a></h3>';
         $html[] = '<div class="panel">';
         $html[] = '<div class="pane-slider content pane-hide">';
         $html[] = '<table class="group-rules">';
         $html[] = '<thead>';
         $html[] = '<tr>';
         $html[] = '<th class="actions" id="actions-th' . $group->value . '">';
         $html[] = '<span class="acl-action">' . $lang->txt('JLIB_RULES_ACTION') . '</span>';
         $html[] = '</th>';
         $html[] = '<th class="settings" id="settings-th' . $group->value . '">';
         $html[] = '<span class="acl-action">' . $lang->txt('JLIB_RULES_SELECT_SETTING') . '</span>';
         $html[] = '</th>';
         // The calculated setting is not shown for the root group of global configuration.
         $canCalculateSettings = $group->parent_id || !empty($component);
         if ($canCalculateSettings) {
             $html[] = '<th id="aclactionth' . $group->value . '">';
             $html[] = '<span class="acl-action">' . $lang->txt('JLIB_RULES_CALCULATED_SETTING') . '</span>';
             $html[] = '</th>';
         }
         $html[] = '</tr>';
         $html[] = '</thead>';
         $html[] = '<tbody>';
         foreach ($actions as $action) {
             $html[] = '<tr>';
             $html[] = '<td headers="actions-th' . $group->value . '">';
             $html[] = '<label class="hasTip" for="' . $this->id . '_' . $action->name . '_' . $group->value . '" title="' . htmlspecialchars($lang->txt($action->title) . '::' . $lang->txt($action->description), ENT_COMPAT, 'UTF-8') . '">';
             $html[] = $lang->txt($action->title);
             $html[] = '</label>';
             $html[] = '</td>';
             $html[] = '<td headers="settings-th' . $group->value . '">';
             $html[] = '<select name="' . $this->name . '[' . $action->name . '][' . $group->value . ']" id="' . $this->id . '_' . $action->name . '_' . $group->value . '" title="' . $lang->txt('JLIB_RULES_SELECT_ALLOW_DENY_GROUP', $lang->txt($action->title), trim($group->text)) . '">';
             $inheritedRule = Access::checkGroup($group->value, $action->name, $assetId);
             // Get the actual setting for the action for this group.
             $assetRule = $assetRules->allow($action->name, $group->value);
             // Build the dropdowns for the permissions sliders
             // The parent group has "Not Set", all children can rightly "Inherit" from that.
             $html[] = '<option value=""' . ($assetRule === null ? ' selected="selected"' : '') . '>' . $lang->txt(empty($group->parent_id) && empty($component) ? 'JLIB_RULES_NOT_SET' : 'JLIB_RULES_INHERITED') . '</option>';
             $html[] = '<option value="1"' . ($assetRule === true ? ' selected="selected"' : '') . '>' . $lang->txt('JLIB_RULES_ALLOWED') . '</option>';
             $html[] = '<option value="0"' . ($assetRule === false ? ' selected="selected"' : '') . '>' . $lang->txt('JLIB_RULES_DENIED') . '</option>';
             $html[] = '</select>&#160; ';
             // If this asset's rule is allowed, but the inherited rule is deny, we have a conflict.
             if ($assetRule === true && $inheritedRule === false) {
                 $html[] = $lang->txt('JLIB_RULES_CONFLICT');
             }
             $html[] = '</td>';
             // Build the Calculated Settings column.
             // The inherited settings column is not displayed for the root group in global configuration.
             if ($canCalculateSettings) {
                 $html[] = '<td headers="aclactionth' . $group->value . '">';
                 // This is where we show the current effective settings considering currrent group, path and cascade.
                 // Check whether this is a component or global. Change the text slightly.
                 if (Access::checkGroup($group->value, 'core.admin', $assetId) !== true) {
                     if ($inheritedRule === null) {
                         $html[] = '<span class="icon-16-unset">' . $lang->txt('JLIB_RULES_NOT_ALLOWED') . '</span>';
                     } elseif ($inheritedRule === true) {
                         $html[] = '<span class="icon-16-allowed">' . $lang->txt('JLIB_RULES_ALLOWED') . '</span>';
                     } elseif ($inheritedRule === false) {
                         if ($assetRule === false) {
                             $html[] = '<span class="icon-16-denied">' . $lang->txt('JLIB_RULES_NOT_ALLOWED') . '</span>';
                         } else {
                             $html[] = '<span class="icon-16-denied"><span class="icon-16-locked">' . $lang->txt('JLIB_RULES_NOT_ALLOWED_LOCKED') . '</span></span>';
                         }
                     }
                 } elseif (!empty($component)) {
                     $html[] = '<span class="icon-16-allowed"><span class="icon-16-locked">' . $lang->txt('JLIB_RULES_ALLOWED_ADMIN') . '</span></span>';
                 } else {
                     // Special handling for  groups that have global admin because they can't  be denied.
                     // The admin rights can be changed.
                     if ($action->name === 'core.admin') {
                         $html[] = '<span class="icon-16-allowed">' . $lang->txt('JLIB_RULES_ALLOWED') . '</span>';
                     } elseif ($inheritedRule === false) {
                         // Other actions cannot be changed.
                         $html[] = '<span class="icon-16-denied"><span class="icon-16-locked">' . $lang->txt('JLIB_RULES_NOT_ALLOWED_ADMIN_CONFLICT') . '</span></span>';
                     } else {
                         $html[] = '<span class="icon-16-allowed"><span class="icon-16-locked">' . $lang->txt('JLIB_RULES_ALLOWED_ADMIN') . '</span></span>';
                     }
                 }
                 $html[] = '</td>';
             }
             $html[] = '</tr>';
         }
         $html[] = '</tbody>';
         $html[] = '</table>';
         $html[] = '</div></div>';
     }
     $html[] = '</div><div class="rule-notes">';
     if ($section == 'component' || $section == null) {
         $html[] = $lang->txt('JLIB_RULES_SETTING_NOTES');
     } else {
         $html[] = $lang->txt('JLIB_RULES_SETTING_NOTES_ITEM');
     }
     $html[] = '</div>';
     $html[] = '</div>';
     $js = "jQuery(document).ready(function(\$){\n\t\t\t\t\$('div#permissions-rules').accordion({\n\t\t\t\t\theightStyle: 'content'\n\t\t\t\t});\n\t\t\t});";
     App::get('document')->addScriptDeclaration($js);
     return implode("\n", $html);
 }
Ejemplo n.º 11
0
 /**
  * Displays a color picker control field
  *
  * @param   string  $name
  * @param   string  $value
  * @param   array   $options
  * @return  string  HTML markup for a calendar field
  */
 public static function colorpicker($name, $value = null, $options = array())
 {
     static $done;
     if ($done === null) {
         $done = array();
     }
     $readonly = isset($options['readonly']) && $options['readonly'] == 'readonly';
     $disabled = isset($options['disabled']) && $options['disabled'] == 'disabled';
     $options['class'] = 'input-colorpicker';
     $value = $value ? '#' . ltrim($value, '#') : '';
     if (!$readonly && !$disabled) {
         $id = self::getIdAttribute($name, $options);
         // Only display the triggers once for each control.
         if (!in_array($id, $done)) {
             // Load the calendar behavior
             Behavior::colorpicker();
             $done[] = $id;
         }
         return '<span class="input-color">' . self::text($name, $value, $options) . '</span>';
     }
     return self::text($name . 'disabled', $value, $options) . self::hidden($name, $value, $options);
 }
Ejemplo n.º 12
0
 /**
  * Method to get the field input markup.
  *
  * @return  string  The field input markup.
  */
 protected function getInput()
 {
     // Initialize variables.
     $html = array();
     // Initialize some field attributes.
     $class = $this->element['class'] ? ' class="radio addresses-' . $this->id . ' ' . (string) $this->element['class'] . '"' : ' class="radio addresses-' . $this->id . '"';
     // Start the radio field output.
     $html[] = '<fieldset id="' . $this->id . '"' . $class . '>';
     // Get the field options.
     $options = $this->getOptions();
     $found = false;
     $values = $this->value;
     $values = is_array($values) ? $values : array($values);
     $lang = App::get('language');
     // Build the radio field output.
     foreach ($values as $i => $value) {
         if (is_string($value)) {
             $value = json_decode((string) $value, true);
         }
         if (!$value || json_last_error() !== JSON_ERROR_NONE) {
             $value = array();
             $value['address1'] = '';
             $value['address2'] = '';
             $value['postal'] = '';
             $value['city'] = '';
             $value['region'] = '';
             $value['country'] = '';
             $value['latitude'] = '';
             $value['longitude'] = '';
         }
         $html[] = '<div class="address-field-wrap">';
         $html[] = '<ul class="address-field">';
         $html[] = '<li>';
         $html[] = '<label for="' . $this->id . $i . '">' . $lang->txt('Street') . '</label>';
         $html[] = '<input type="text" id="' . $this->id . $i . '" name="' . $this->name . '[' . $i . '][address1]" placeholder="Street" value="' . htmlspecialchars($value['address1'], ENT_COMPAT, 'UTF-8') . '" />';
         $html[] = '</li>';
         $html[] = '<li>';
         $html[] = '<label for="' . $this->id . $i . '">' . $lang->txt('Street 2') . '</label>';
         $html[] = '<input type="text" id="' . $this->id . $i . '" name="' . $this->name . '[' . $i . '][address2]" placeholder="Street 2" value="' . htmlspecialchars($value['address2'], ENT_COMPAT, 'UTF-8') . '" />';
         $html[] = '</li>';
         $html[] = '<li>';
         $html[] = '<label for="' . $this->id . $i . '">' . $lang->txt('City') . '</label>';
         $html[] = '<input type="text" id="' . $this->id . $i . '" name="' . $this->name . '[' . $i . '][city]" placeholder="City" value="' . htmlspecialchars($value['city'], ENT_COMPAT, 'UTF-8') . '" />';
         $html[] = '</li>';
         $html[] = '<li>';
         $html[] = '<div class="grid">';
         $html[] = '<div class="col span6">';
         $html[] = '<label for="' . $this->id . $i . '">' . $lang->txt('Postal code') . '</label>';
         $html[] = '<input type="text" id="' . $this->id . $i . '" name="' . $this->name . '[' . $i . '][postal]" placeholder="Postal code" value="' . htmlspecialchars($value['postal'], ENT_COMPAT, 'UTF-8') . '" />';
         $html[] = '</div>';
         $html[] = '<div class="col span6 omega">';
         $html[] = '<label for="' . $this->id . $i . '">' . $lang->txt('State/Region') . '</label>';
         $html[] = '<input type="text" id="' . $this->id . $i . '" name="' . $this->name . '[' . $i . '][region]" placeholder="State/Region" value="' . htmlspecialchars($value['region'], ENT_COMPAT, 'UTF-8') . '" />';
         $html[] = '</div>';
         $html[] = '</div>';
         $html[] = '</li>';
         $html[] = '<li>';
         $html[] = '<label for="' . $this->id . $i . '">' . $lang->txt('Country') . '</label>';
         $html[] = Dropdown::genericlist($options, $this->name . '[' . $i . '][country]', '', 'value', 'text', $value['country'], $this->id . $i);
         $html[] = '<input type="hidden" id="' . $this->id . $i . '" name="' . $this->name . '[' . $i . '][latitude]" value="' . htmlspecialchars($value['latitude'], ENT_COMPAT, 'UTF-8') . '" />';
         $html[] = '<input type="hidden" id="' . $this->id . $i . '" name="' . $this->name . '[' . $i . '][longitude]" value="' . htmlspecialchars($value['longitude'], ENT_COMPAT, 'UTF-8') . '" />';
         $html[] = '</li>';
         $html[] = '</ul>';
         $html[] = '</div>';
     }
     // End the radio field output.
     $html[] = '</fieldset>';
     Behavior::framework(true);
     App::get('document')->addScriptDeclaration("\n\t\t\tfunction manageProfileAddresses() {\n\t\t\t\tif (\$('.addresses-" . $this->id . "').length > 0) {\n\t\t\t\t\tvar fieldset = \$('.addresses-" . $this->id . "');\n\t\t\t\t\tvar btn = \$('<p class=\"address-add\"><a class=\"icon-add\" href=\"#\">Add another address</a></p>').on('click', function(e){\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tvar grp = fieldset\n\t\t\t\t\t\t\t.find('.address-field-wrap')\n\t\t\t\t\t\t\t.last()\n\t\t\t\t\t\t\t.clone();\n\t\t\t\t\t\tgrp.find('input').each(function(){\n\t\t\t\t\t\t\tthis.name = this.name.replace(/\\[(\\d+)\\]/,function(str,p1){return '[' + (parseInt(p1,10)+1) + ']';});\n\t\t\t\t\t\t\tthis.value = '';\n\t\t\t\t\t\t});\n\t\t\t\t\t\tgrp.find('select').each(function(){\n\t\t\t\t\t\t\tthis.name = this.name.replace(/\\[(\\d+)\\]/,function(str,p1){return '[' + (parseInt(p1,10)+1) + ']';});\n\t\t\t\t\t\t\tthis.selectedIndex = 0;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (!grp.find('.address-remove').length) {\n\t\t\t\t\t\t\tvar rmv = \$('<a class=\"address-remove icon-remove\" href=\"#\">Remove</a>');\n\t\t\t\t\t\t\tgrp.append(rmv);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgrp.appendTo(fieldset);\n\n\t\t\t\t\t\tfieldset.find('.address-remove').off('click').on('click', function(e){\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\$(this).parent().remove();\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\tfieldset.after(btn);\n\t\t\t\t\tfieldset.find('.address-field-wrap').each(function(i, grp){\n\t\t\t\t\t\tif (i === 0) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgrp = \$(grp);\n\t\t\t\t\t\tif (!grp.find('.address-remove').length) {\n\t\t\t\t\t\t\tvar rmv = \$('<a class=\"address-remove icon-remove\" href=\"#\">Remove</a>').on('click', function(e){\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\$(this).parent().remove();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tgrp.append(rmv);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\t\t");
     App::get('document')->addScriptDeclaration("jQuery(document).ready(function(\$){\nmanageProfileAddresses();\n});");
     App::get('document')->addScriptDeclaration("jQuery(document).on('ajaxLoad', function(\$){\nmanageProfileAddresses();\n});");
     return implode($html);
 }
Ejemplo n.º 13
0
 /**
  * Displays a calendar control field
  *
  * @param   string  $name
  * @param   string  $value
  * @param   array   $options
  * @return  string  HTML markup for a calendar field
  */
 public static function calendar($name, $value = null, $options = array())
 {
     static $done;
     if ($done === null) {
         $done = array();
     }
     $readonly = isset($options['readonly']) && $options['readonly'] == 'readonly';
     $disabled = isset($options['disabled']) && $options['disabled'] == 'disabled';
     $format = 'yy-mm-dd';
     if (isset($options['format'])) {
         $format = $options['format'] ? $options['format'] : $format;
         unset($options['format']);
     }
     if (!isset($options['class'])) {
         $options['class'] = 'calendar-field';
     } else {
         $options['class'] = ' calendar-field';
     }
     if (!$readonly && !$disabled) {
         // Load the calendar behavior
         Behavior::calendar();
         Behavior::tooltip();
         $id = self::getIdAttribute($name, $options);
         // Only display the triggers once for each control.
         if (!in_array($id, $done)) {
             $format = $format == 'Y-m-d H:i:s' || $format == '%Y-%m-%d %H:%M:%S' || $format == 'Y-m-d' ? 'yy-mm-dd' : $format;
             \App::get('document')->addScriptDeclaration("\n\t\t\t\t\tjQuery(document).ready(function(\$){\n\t\t\t\t\t\t\$('#" . $id . "').datetimepicker({\n\t\t\t\t\t\t\tduration: '',\n\t\t\t\t\t\t\tshowTime: true,\n\t\t\t\t\t\t\tconstrainInput: false,\n\t\t\t\t\t\t\tstepMinutes: 1,\n\t\t\t\t\t\t\tstepHours: 1,\n\t\t\t\t\t\t\taltTimeField: '',\n\t\t\t\t\t\t\ttime24h: true,\n\t\t\t\t\t\t\tdateFormat: '" . $format . "',\n\t\t\t\t\t\t\ttimeFormat: 'HH:mm:00'\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t");
             $done[] = $id;
         }
         return '<span class="input-datetime">' . self::text($name, $value, $options) . '</span>';
     } else {
         $value = 0 !== (int) $value ? with(new Date($value))->format('Y-m-d H:i:s') : '';
         return self::text($name . 'disabled', 0 !== (int) $value ? with(new Date($value))->format('Y-m-d H:i:s') : '', $options) . self::hidden($name, $value, $options);
     }
 }