public function htmlFormElement($ps_property, $pa_attributes = null) { $vs_element = $vs_label = ''; $pa_attributes['class'] = 'timecodeBg'; if (!($vs_format = $pa_attributes['format'])) { $vs_format = $this->opo_config->get('form_element_display_format'); } if ($va_property_info = $this->getPropertyInfo($ps_property)) { switch ($va_property_info['fieldType']) { case 'FT_TIMECODE': $vs_label = $va_property_info['label']; if (!isset($pa_attributes['value'])) { $pa_attributes['value'] = $this->getProperty($ps_property); } if (!isset($pa_attributes['size'])) { $pa_attributes['size'] = $va_property_info['fieldWidth']; } $vs_element = caHTMLMakeLabeledFormElement(caHTMLTextInput($pa_attributes['name'] ? $pa_attributes['name'] : $ps_property, $pa_attributes), $vs_label, $pa_attributes['name'] ? $pa_attributes['name'] : $ps_property, $va_property_info['description'], $vs_format, false); break; default: return 'Invalid field type for \'' . $ps_property . '\''; break; } } return $vs_element; }
/** * Return HTML form element for specified property * */ public function htmlFormElement($ps_property, $pa_attributes = null) { $vs_element = $vs_label = ''; if (!($vs_format = $pa_attributes['format'])) { $vs_format = $this->opo_config->get('form_element_display_format'); } if ($va_property_info = $this->getPropertyInfo($ps_property)) { switch ($va_property_info['fieldType']) { case 'FT_TEXT': case 'FT_NUMBER': $vs_label = $va_property_info['label']; if (!isset($pa_attributes['value'])) { $pa_attributes['value'] = $this->getProperty($ps_property); } if (!isset($pa_attributes['size'])) { $pa_attributes['size'] = $va_property_info['fieldWidth']; } switch ($va_property_info['displayType']) { case 'DT_SELECT': $vs_element = caHTMLMakeLabeledFormElement(caHTMLSelect($pa_attributes['name'] ? $pa_attributes['name'] : $ps_property, $va_property_info['options'], $pa_attributes, array('height' => 1)), $vs_label, $pa_attributes['name'] ? $pa_attributes['name'] : $ps_property, $va_property_info['description'], $vs_format, false); break; default: $vs_element = caHTMLMakeLabeledFormElement(caHTMLTextInput($pa_attributes['name'] ? $pa_attributes['name'] : $ps_property, $pa_attributes), $vs_label, $pa_attributes['name'] ? $pa_attributes['name'] : $ps_property, $va_property_info['description'], $vs_format, false); break; } break; case 'FT_VARS': $vs_element = ''; // skip break; default: return 'Invalid field type for \'' . $ps_property . '\''; break; } } return $vs_element; }
?> <div id='caPaymentFields'> <H1><?php print _t("Payment Details"); ?> </H1> <div class="bgWhite"> <?php print "<div>" . $t_order->htmlFormElement('payment_method', $vs_form_element_format, array('width' => $vn_width, 'field_errors' => $va_errors[$vs_f], 'choiceList' => $va_payment_types, 'id' => 'caPaymentMethod')) . "</div>\n"; ?> <div id="caClientOrderCustomerCreditSubForm"> <?php print "<div style='float:left;'><b>" . _t("Credit card") . "</b><br/>" . caHTMLSelect('credit_card_type', $va_credit_card_types) . "</div>\n"; print "<div style='margin-left:15px; float:left;'><b>" . _t("Expiration date") . "</b><br/>" . caHTMLSelect('credit_card_exp_mon', $this->getVar('credit_card_exp_month_list')) . " " . caHTMLSelect('credit_card_exp_yr', $this->getVar('credit_card_exp_year_list')) . "</div>\n"; print "<div style='clear:left; float:left;'><b>" . _t("Credit card number") . "</b><br/>" . caHTMLTextInput('credit_card_number', array('size' => 30)) . "</div>\n"; print "<div style='margin-left:15px; float:left;'><b>" . _t("CCV") . "</b><br/>" . caHTMLTextInput('credit_card_ccv', array('size' => 4)) . "</div>\n"; print "<div id='caClientOrderProcessingIndicator'><img src='" . $this->request->getThemeUrlPath() . "/graphics/icons/indicator.gif'/> " . _t('Please wait while order is processed (this may take up to 60 seconds to complete)') . "</div>\n"; ?> <div style="clear:both; height:1px; margin:0px;"><!-- empty --></div> </div> <div id="caClientOrderCustomerPOSubForm"> Email your Purchase order to rnr@hsp.org or FAX it to 215-732-6200 </div> <div id="caClientOrderCustomerCheckSubForm"> Send your check for <?php print $vs_currency_symbol . $t_order->getTotal(); ?> to Rights and Reproductions, Historical Society of Pennsylvania, 1300 Locust Street, Philadelphia, PA 19107 </div> </div> </div><!-- end caPaymentFields -->
/** * Returns HTML form element for editing of setting * * Options: * * 'name' => sets the name of the HTML form element explicitly, otherwise 'setting_<name_of_setting>' is used * 'value' => sets the value of the HTML form element explicitly, otherwise the current value for the setting in the loaded row is used */ public function settingHTMLFormElement($ps_widget_id, $ps_setting, $pa_options = null) { if (!$this->isValidSetting($ps_setting)) { return false; } $va_available_settings = $this->getAvailableSettings(); $va_properties = $va_available_settings[$ps_setting]; if (isset($pa_options['name'])) { $vs_input_name = $pa_options['name']; } else { $vs_input_name = "setting_{$ps_setting}"; } if (isset($pa_options['value']) && !is_null($pa_options['value'])) { $vs_value = $pa_options['value']; } else { $vs_value = $this->getSetting(trim($ps_setting)); } $vs_element = ''; switch ($va_properties['displayType']) { # -------------------------------------------- case DT_FIELD: $vb_takes_locale = false; if (isset($va_properties['takesLocale']) && $va_properties['takesLocale']) { $vb_takes_locale = true; $va_locales = ca_locales::getLocaleList(array('sort_field' => '', 'sort_order' => 'asc', 'index_by_code' => true)); } else { $va_locales = array('_generic' => array()); } foreach ($va_locales as $vs_locale => $va_locale_info) { if ($vb_takes_locale) { $vs_locale_label = " (" . $va_locale_info['name'] . ")"; $vs_input_name_suffix = '_' . $vs_locale; } else { $vs_input_name_suffix = $vs_locale_label = ''; } $vs_element .= caHTMLTextInput($vs_input_name . $vs_input_name_suffix, array('size' => $va_properties["width"], 'height' => $va_properties["height"], 'value' => $vs_value, 'id' => $vs_input_name . $vs_input_name_suffix)) . "{$vs_locale_label}"; // focus code is needed by Firefox for some reason $vs_element .= "<script type='text/javascript'>jQuery('#" . $vs_input_name . $vs_input_name_suffix . "').click(function() { this.focus(); });</script>"; } break; # -------------------------------------------- # -------------------------------------------- case DT_CHECKBOXES: $va_attributes = array('value' => '1'); if ($vs_value) { $va_attributes['checked'] = '1'; } $vs_element .= caHTMLCheckboxInput($vs_input_name, $va_attributes); break; # -------------------------------------------- # -------------------------------------------- case DT_SELECT: if (!is_array($va_properties['options'])) { $va_properties['options'] = array(); } $vs_element .= caHTMLSelect($vs_input_name, $va_properties['options'], array(), array('value' => $vs_value)); break; # -------------------------------------------- # -------------------------------------------- default: break; # -------------------------------------------- } $vs_label = $va_properties['label']; $vb_element_is_part_of_label = false; if (strpos($vs_label, '^ELEMENT') !== false) { $vs_label = str_replace('^ELEMENT', $vs_element, $vs_label); $vb_element_is_part_of_label = true; } $vs_return = "\n" . '<div class="formLabel" id="_widget_setting_' . $ps_setting . '_' . $ps_widget_id . '"><span>' . $vs_label . '</span>'; if (!$vb_element_is_part_of_label) { $vs_return .= '<br />' . $vs_element; } $vs_return .= '</div>' . "\n"; TooltipManager::add('#_widget_setting_' . $ps_setting . '_' . $ps_widget_id, "<h3>" . str_replace('^ELEMENT', 'X', $va_properties["label"]) . "</h3>" . $va_properties["description"]); return $vs_return; }
/** * HTML Form element generation * Optional name parameter allows you to generate a form element for a field but give it a * name different from the field name * * @param string $ps_field field name * @param string $ps_format field format * @param array $pa_options additional options * TODO: document them. */ public function htmlFormElement($ps_field, $ps_format = null, $pa_options = null) { $o_db = $this->getDb(); // init options if (!is_array($pa_options)) { $pa_options = array(); } foreach (array('display_form_field_tips', 'classname', 'maxOptionLength', 'textAreaTagName', 'display_use_count', 'display_omit_items__with_zero_count', 'display_use_count_filters', 'display_use_count_filters', 'selection', 'name', 'value', 'dont_show_null_value', 'size', 'multiple', 'show_text_field_for_vars', 'nullOption', 'empty_message', 'displayMessageForFieldValues', 'DISPLAY_FIELD', 'WHERE', 'select_item_text', 'hide_select_if_only_one_option', 'field_errors', 'display_form_field_tips', 'form_name', 'no_tooltips', 'tooltip_namespace', 'extraLabelText', 'width', 'height', 'label', 'list_code', 'hide_select_if_no_options', 'id', 'lookup_url', 'progress_indicator', 'error_icon', 'maxPixelWidth', 'displayMediaVersion', 'FIELD_TYPE', 'DISPLAY_TYPE', 'choiceList', 'readonly', 'description', 'hidden') as $vs_key) { if (!isset($pa_options[$vs_key])) { $pa_options[$vs_key] = null; } } $va_attr = $this->getFieldInfo($ps_field); foreach (array('DISPLAY_WIDTH', 'DISPLAY_USE_COUNT', 'DISPLAY_SHOW_COUNT', 'DISPLAY_OMIT_ITEMS_WITH_ZERO_COUNT', 'DISPLAY_TYPE', 'IS_NULL', 'DEFAULT_ON_NULL', 'DEFAULT', 'LIST_MULTIPLE_DELIMITER', 'FIELD_TYPE', 'LIST_CODE', 'DISPLAY_FIELD', 'WHERE', 'DISPLAY_WHERE', 'DISPLAY_ORDERBY', 'LIST', 'BOUNDS_CHOICE_LIST', 'BOUNDS_LENGTH', 'DISPLAY_DESCRIPTION', 'LABEL', 'DESCRIPTION', 'SUB_LABEL', 'SUB_DESCRIPTION', 'MAX_PIXEL_WIDTH') as $vs_key) { if (!isset($va_attr[$vs_key])) { $va_attr[$vs_key] = null; } } if (isset($pa_options['FIELD_TYPE'])) { $va_attr['FIELD_TYPE'] = $pa_options['FIELD_TYPE']; } if (isset($pa_options['DISPLAY_TYPE'])) { $va_attr['DISPLAY_TYPE'] = $pa_options['DISPLAY_TYPE']; } $vn_display_width = isset($pa_options['width']) && $pa_options['width'] > 0 ? $pa_options['width'] : $va_attr["DISPLAY_WIDTH"]; $vn_display_height = isset($pa_options['height']) && $pa_options['height'] > 0 ? $pa_options['height'] : $va_attr["DISPLAY_HEIGHT"]; $va_parsed_width = caParseFormElementDimension($vn_display_width); $va_parsed_height = caParseFormElementDimension($vn_display_height); $va_dim_styles = array(); if ($va_parsed_width['type'] == 'pixels') { $va_dim_styles[] = "width: " . $va_parsed_width['dimension'] . "px;"; } if ($va_parsed_height['type'] == 'pixels') { $va_dim_styles[] = "height: " . $va_parsed_height['dimension'] . "px;"; } //if ($vn_max_pixel_width) { // $va_dim_styles[] = "max-width: {$vn_max_pixel_width}px;"; //} $vs_dim_style = trim(join(" ", $va_dim_styles)); $vs_field_label = isset($pa_options['label']) && strlen($pa_options['label']) > 0 ? $pa_options['label'] : $va_attr["LABEL"]; $vs_errors = ''; // TODO: PULL THIS FROM A CONFIG FILE $pa_options["display_form_field_tips"] = true; if (isset($pa_options['classname'])) { $vs_css_class_attr = ' class="' . $pa_options['classname'] . '" '; } else { $vs_css_class_attr = ''; } if (!isset($pa_options['id'])) { $pa_options['id'] = $pa_options['name']; } if (!isset($pa_options['id'])) { $pa_options['id'] = $ps_field; } if (!isset($pa_options['maxPixelWidth']) || (int) $pa_options['maxPixelWidth'] <= 0) { $vn_max_pixel_width = $va_attr['MAX_PIXEL_WIDTH']; } else { $vn_max_pixel_width = (int) $pa_options['maxPixelWidth']; } if ($vn_max_pixel_width <= 0) { $vn_max_pixel_width = null; } if (!isset($pa_options["maxOptionLength"]) && isset($vn_display_width)) { $pa_options["maxOptionLength"] = isset($vn_display_width) ? $vn_display_width : null; } $vs_text_area_tag_name = 'textarea'; if (isset($pa_options["textAreaTagName"]) && $pa_options['textAreaTagName']) { $vs_text_area_tag_name = isset($pa_options['textAreaTagName']) ? $pa_options['textAreaTagName'] : null; } if (!isset($va_attr["DISPLAY_USE_COUNT"]) || !($vs_display_use_count = $va_attr["DISPLAY_USE_COUNT"])) { $vs_display_use_count = isset($pa_options["display_use_count"]) ? $pa_options["display_use_count"] : null; } if (!isset($va_attr["DISPLAY_SHOW_COUNT"]) || !($vb_display_show_count = (bool) $va_attr["DISPLAY_SHOW_COUNT"])) { $vb_display_show_count = isset($pa_options["display_show_count"]) ? (bool) $pa_options["display_show_count"] : null; } if (!isset($va_attr["DISPLAY_OMIT_ITEMS_WITH_ZERO_COUNT"]) || !($vb_display_omit_items__with_zero_count = (bool) $va_attr["DISPLAY_OMIT_ITEMS_WITH_ZERO_COUNT"])) { $vb_display_omit_items__with_zero_count = isset($pa_options["display_omit_items__with_zero_count"]) ? (bool) $pa_options["display_omit_items__with_zero_count"] : null; } if (!isset($va_attr["DISPLAY_OMIT_ITEMS_WITH_ZERO_COUNT"]) || !($va_display_use_count_filters = $va_attr["DISPLAY_USE_COUNT_FILTERS"])) { $va_display_use_count_filters = isset($pa_options["display_use_count_filters"]) ? $pa_options["display_use_count_filters"] : null; } if (!isset($va_display_use_count_filters) || !is_array($va_display_use_count_filters)) { $va_display_use_count_filters = null; } if (isset($pa_options["selection"]) && is_array($pa_options["selection"])) { $va_selection = isset($pa_options["selection"]) ? $pa_options["selection"] : null; } else { $va_selection = array(); } if (isset($pa_options["choiceList"]) && is_array($pa_options["choiceList"])) { $va_attr["BOUNDS_CHOICE_LIST"] = $pa_options["choiceList"]; } $vs_element = $vs_subelement = ""; if ($va_attr) { # --- Skip omitted fields completely if ($va_attr["DISPLAY_TYPE"] == DT_OMIT) { return ""; } if (!isset($pa_options["name"]) || !$pa_options["name"]) { $pa_options["name"] = htmlspecialchars($ps_field, ENT_QUOTES, 'UTF-8'); } $va_js = array(); $va_handlers = array("onclick", "onchange", "onkeypress", "onkeydown", "onkeyup"); foreach ($va_handlers as $vs_handler) { if (isset($pa_options[$vs_handler]) && $pa_options[$vs_handler]) { $va_js[] = "{$vs_handler}='" . $pa_options[$vs_handler] . "'"; } } $vs_js = join(" ", $va_js); if (!isset($pa_options["value"])) { // allow field value to be overriden with value from options array $vm_field_value = $this->get($ps_field, $pa_options); } else { $vm_field_value = $pa_options["value"]; } $vm_raw_field_value = $vm_field_value; $vb_is_null = isset($va_attr["IS_NULL"]) ? $va_attr["IS_NULL"] : false; if (isset($pa_options['dont_show_null_value']) && $pa_options['dont_show_null_value']) { $vb_is_null = false; } if (!is_array($vm_field_value) && strlen($vm_field_value) == 0 && (!isset($vb_is_null) || !$vb_is_null || (isset($va_attr["DEFAULT_ON_NULL"]) ? $va_attr["DEFAULT_ON_NULL"] : 0))) { $vm_field_value = isset($va_attr["DEFAULT"]) ? $va_attr["DEFAULT"] : ""; } # --- Return hidden fields if ($va_attr["DISPLAY_TYPE"] == DT_HIDDEN || caGetOption('hidden', $pa_options, false)) { return '<input type="hidden" name="' . $pa_options["name"] . '" value="' . $this->escapeHTML($vm_field_value) . '"/>'; } if (isset($pa_options["size"]) && $pa_options["size"] > 0) { $ps_size = " size='" . $pa_options["size"] . "'"; } else { if (($va_attr["DISPLAY_TYPE"] == DT_LIST_MULTIPLE || $va_attr["DISPLAY_TYPE"] == DT_LIST) && $vn_display_height > 1) { $ps_size = " size='" . $vn_display_height . "'"; } else { $ps_size = ''; } } $vs_multiple_name_extension = ''; if ($vs_is_multiple = isset($pa_options["multiple"]) && $pa_options["multiple"] || $va_attr["DISPLAY_TYPE"] == DT_LIST_MULTIPLE ? "multiple='1'" : "") { $vs_multiple_name_extension = '[]'; if (!($vs_list_multiple_delimiter = $va_attr['LIST_MULTIPLE_DELIMITER'])) { $vs_list_multiple_delimiter = ';'; } $va_selection = array_merge($va_selection, explode($vs_list_multiple_delimiter, $vm_field_value)); } # --- Return form element switch ($va_attr["FIELD_TYPE"]) { # ---------------------------- case FT_NUMBER: case FT_TEXT: case FT_VARS: if ($va_attr["FIELD_TYPE"] == FT_VARS) { if (!$pa_options['show_text_field_for_vars']) { break; } if (!is_string($vm_field_value) && !is_numeric($vm_field_value)) { $vm_value = ''; } } if ($va_attr['DISPLAY_TYPE'] == DT_COUNTRY_LIST) { $vs_element = caHTMLSelect($ps_field, caGetCountryList(), array('id' => $ps_field), array('value' => $vm_field_value)); if ($va_attr['STATEPROV_FIELD']) { $vs_element .= "<script type='text/javascript'>\n"; $vs_element .= "var caStatesByCountryList = " . json_encode(caGetStateList()) . ";\n"; $vs_element .= "\n\t\t\t\t\t\t\t\tjQuery('#{$ps_field}').click({countryID: '{$ps_field}', stateProvID: '" . $va_attr['STATEPROV_FIELD'] . "', value: '" . addslashes($this->get($va_attr['STATEPROV_FIELD'])) . "', statesByCountryList: caStatesByCountryList}, caUI.utils.updateStateProvinceForCountry);\n\t\t\t\t\t\t\t\tjQuery(document).ready(function() {\n\t\t\t\t\t\t\t\t\tcaUI.utils.updateStateProvinceForCountry({data: {countryID: '{$ps_field}', stateProvID: '" . $va_attr['STATEPROV_FIELD'] . "', value: '" . addslashes($this->get($va_attr['STATEPROV_FIELD'])) . "', statesByCountryList: caStatesByCountryList}});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t"; $vs_element .= "</script>\n"; } break; } if ($va_attr['DISPLAY_TYPE'] == DT_STATEPROV_LIST) { $vs_element = caHTMLSelect($ps_field . '_select', array(), array('id' => $ps_field . '_select'), array('value' => $vm_field_value)); $vs_element .= caHTMLTextInput($ps_field . '_name', array('id' => $ps_field . '_text', 'value' => $vm_field_value)); break; } if ($vn_display_width > 0 && in_array($va_attr["DISPLAY_TYPE"], array(DT_SELECT, DT_LIST, DT_LIST_MULTIPLE))) { # # Generate auto generated <select> (from foreign key, from ca_lists or from field-defined choice list) # # TODO: CLEAN UP THIS CODE, RUNNING VARIOUS STAGES THROUGH HELPER FUNCTIONS; ALSO FORMALIZE AND DOCUMENT VARIOUS OPTIONS // ----- // from ca_lists // ----- if (!($vs_list_code = $pa_options['list_code'])) { if (isset($va_attr['LIST_CODE']) && $va_attr['LIST_CODE']) { $vs_list_code = $va_attr['LIST_CODE']; } } if ($vs_list_code) { $va_many_to_one_relations = $this->_DATAMODEL->getManyToOneRelations($this->tableName()); if ($va_many_to_one_relations[$ps_field]) { $vs_key = 'item_id'; } else { $vs_key = 'item_value'; } $vs_null_option = null; if (!$pa_options["nullOption"] && $vb_is_null) { $vs_null_option = _t("- NONE -"); } else { if ($pa_options["nullOption"]) { $vs_null_option = $pa_options["nullOption"]; } } $t_list = new ca_lists(); $va_list_attrs = array('id' => $pa_options['id']); //if ($vn_max_pixel_width) { $va_list_attrs['style'] = $vs_width_style; } if (method_exists($this, 'getTypeFieldName') && $ps_field == $this->getTypeFieldName()) { $va_limit_list = caGetTypeListForUser($this->tableName(), array('access' => __CA_BUNDLE_ACCESS_EDIT__)); } // NOTE: "raw" field value (value passed into method, before the model default value is applied) is used so as to allow the list default to be used if needed $vs_element = $t_list->getListAsHTMLFormElement($vs_list_code, $pa_options["name"] . $vs_multiple_name_extension, $va_list_attrs, array('value' => $vm_raw_field_value, 'key' => $vs_key, 'nullOption' => $vs_null_option, 'readonly' => $pa_options['readonly'], 'restrictTypeListForTable' => $this->tableName(), 'limitToItemsWithID' => $va_limit_list ? $va_limit_list : null)); if (isset($pa_options['hide_select_if_no_options']) && $pa_options['hide_select_if_no_options'] && !$vs_element) { $vs_element = ""; $ps_format = '^ERRORS^ELEMENT'; } } else { // ----- // from related table // ----- $va_many_to_one_relations = $this->_DATAMODEL->getManyToOneRelations($this->tableName()); if (isset($va_many_to_one_relations[$ps_field]) && $va_many_to_one_relations[$ps_field]) { # # Use foreign key to populate <select> # $o_one_table = $this->_DATAMODEL->getTableInstance($va_many_to_one_relations[$ps_field]["one_table"]); $vs_one_table_primary_key = $o_one_table->primaryKey(); if ($o_one_table->isHierarchical()) { # # Hierarchical <select> # $va_hier = $o_one_table->getHierarchyAsList(0, $vs_display_use_count, $va_display_use_count_filters, $vb_display_omit_items__with_zero_count); if (!is_array($va_hier)) { return ''; } $va_display_fields = $va_attr["DISPLAY_FIELD"]; if (!in_array($vs_one_table_primary_key, $va_display_fields)) { $va_display_fields[] = $o_one_table->tableName() . "." . $vs_one_table_primary_key; } if (!is_array($va_display_fields) || sizeof($va_display_fields) < 1) { $va_display_fields = array("*"); } $vs_hier_parent_id_fld = $o_one_table->getProperty("HIER_PARENT_ID_FLD"); $va_options = array(); if ($pa_options["nullOption"]) { $va_options[""] = array($pa_options["nullOption"]); } $va_suboptions = array(); $va_suboption_values = array(); $vn_selected = 0; $vm_cur_top_level_val = null; $vm_selected_top_level_val = null; foreach ($va_hier as $va_option) { if (!$va_option["NODE"][$vs_hier_parent_id_fld]) { continue; } $vn_val = $va_option["NODE"][$o_one_table->primaryKey()]; $vs_selected = $vn_val == $vm_field_value ? 'selected="1"' : ""; $vn_indent = $va_option["LEVEL"] - 1; $va_display_data = array(); foreach ($va_display_fields as $vs_fld) { $va_bits = explode(".", $vs_fld); if ($va_bits[1] != $vs_one_table_primary_key) { $va_display_data[] = $va_option["NODE"][$va_bits[1]]; } } $vs_option_label = join(" ", $va_display_data); $va_options[$vn_val] = array($vs_option_label, $vn_indent, $va_option["HITS"], $va_option['NODE']); } if (sizeof($va_options) == 0) { $vs_element = isset($pa_options['empty_message']) ? $pa_options['empty_message'] : 'No options available'; } else { $vs_element = "<select name='" . $pa_options["name"] . $vs_multiple_name_extension . "' " . $vs_js . " " . $vs_is_multiple . " " . $ps_size . " id='" . $pa_options["id"] . $vs_multiple_name_extension . "' {$vs_css_class_attr} style='{$vs_dim_style}'" . ($pa_options['readonly'] ? ' disabled="disabled" ' : '') . ">\n"; if (!$pa_options["nullOption"] && $vb_is_null) { $vs_element .= "<option value=''>" . _t('- NONE -') . "</option>\n"; } else { if ($pa_options["nullOption"]) { $vs_element .= "<option value=''>" . $pa_options["nullOption"] . "</option>\n"; } } foreach ($va_options as $vn_val => $va_option_info) { $vs_selected = $vn_val == $vm_field_value || in_array($vn_val, $va_selection) ? "selected='selected'" : ""; $vs_element .= "<option value='" . $vn_val . "' {$vs_selected}>"; $vn_indent = $va_option_info[1] * 2; $vs_indent = ""; if ($vn_indent > 0) { $vs_indent = str_repeat(" ", ($vn_indent - 1) * 2) . " "; $vn_indent++; } $vs_option_text = $va_option_info[0]; $vs_use_count = ""; if ($vs_display_use_count && $vb_display_show_count && $vn_val != "") { $vs_use_count = " (" . intval($va_option_info[2]) . ")"; } $vs_display_message = ''; if (is_array($pa_options['displayMessageForFieldValues'])) { foreach ($pa_options['displayMessageForFieldValues'] as $vs_df => $va_df_vals) { if (isset($va_option_info[3][$vs_df]) && is_array($va_df_vals)) { $vs_tmp = $va_option_info[3][$vs_df]; if (isset($va_df_vals[$vs_tmp])) { $vs_display_message = ' ' . $va_df_vals[$vs_tmp]; } } } } if ($pa_options["maxOptionLength"] && strlen($vs_option_text) + strlen($vs_use_count) + $vn_indent > $pa_options["maxOptionLength"]) { if (($vn_strlen = $pa_options["maxOptionLength"] - strlen($vs_indent) - strlen($vs_use_count) - 3) < $pa_options["maxOptionLength"]) { $vn_strlen = $pa_options["maxOptionLength"]; } $vs_option_text = unicode_substr($vs_option_text, 0, $vn_strlen) . "..."; } $vs_element .= $vs_indent . $vs_option_text . $vs_use_count . $vs_display_message . "</option>\n"; } $vs_element .= "</select>\n"; } } else { # # "Flat" <select> # if (!is_array($va_display_fields = $pa_options["DISPLAY_FIELD"])) { $va_display_fields = $va_attr["DISPLAY_FIELD"]; } if (!is_array($va_display_fields)) { return "Configuration error: DISPLAY_FIELD directive for field '{$ps_field}' must be an array of field names in the format tablename.fieldname"; } if (!in_array($vs_one_table_primary_key, $va_display_fields)) { $va_display_fields[] = $o_one_table->tableName() . "." . $vs_one_table_primary_key; } if (!is_array($va_display_fields) || sizeof($va_display_fields) < 1) { $va_display_fields = array("*"); } $vs_sql = "\n\t\t\t\t\t\t\t\t\t\t\tSELECT *\n\t\t\t\t\t\t\t\t\t\t\tFROM " . $va_many_to_one_relations[$ps_field]["one_table"] . "\n\t\t\t\t\t\t\t\t\t\t\t"; if (isset($pa_options["WHERE"]) && (is_array($pa_options["WHERE"]) && ($vs_where = join(" AND ", $pa_options["WHERE"]))) || is_array($va_attr["DISPLAY_WHERE"]) && ($vs_where = join(" AND ", $va_attr["DISPLAY_WHERE"]))) { $vs_sql .= " WHERE {$vs_where} "; } if (isset($va_attr["DISPLAY_ORDERBY"]) && $va_attr["DISPLAY_ORDERBY"] && ($vs_orderby = join(",", $va_attr["DISPLAY_ORDERBY"]))) { $vs_sql .= " ORDER BY {$vs_orderby} "; } $qr_res = $o_db->query($vs_sql); if ($o_db->numErrors()) { $vs_element = "Error creating menu: " . join(';', $o_db->getErrors()); break; } $va_opts = array(); if (isset($pa_options["nullOption"]) && $pa_options["nullOption"]) { $va_opts[$pa_options["nullOption"]] = array($pa_options["nullOption"], null); } else { if ($vb_is_null) { $va_opts[_t("- NONE -")] = array(_t("- NONE -"), null); } } if ($pa_options["select_item_text"]) { $va_opts[$pa_options["select_item_text"]] = array($pa_options["select_item_text"], null); } $va_fields = array(); foreach ($va_display_fields as $vs_field) { $va_tmp = explode(".", $vs_field); $va_fields[] = $va_tmp[1]; } while ($qr_res->nextRow()) { $vs_display = ""; foreach ($va_fields as $vs_field) { if ($vs_field != $vs_one_table_primary_key) { $vs_display .= $qr_res->get($vs_field) . " "; } } $va_opts[] = array($vs_display, $qr_res->get($vs_one_table_primary_key), $qr_res->getRow()); } if (sizeof($va_opts) == 0) { $vs_element = isset($pa_options['empty_message']) ? $pa_options['empty_message'] : 'No options available'; } else { if (isset($pa_options['hide_select_if_only_one_option']) && $pa_options['hide_select_if_only_one_option'] && sizeof($va_opts) == 1) { $vs_element = "<input type='hidden' name='" . $pa_options["name"] . "' " . $vs_js . " " . $ps_size . " id='" . $pa_options["id"] . "' value='" . ($vm_field_value ? $vm_field_value : $va_opts[0][1]) . "' {$vs_css_class_attr}/>"; $ps_format = '^ERRORS^ELEMENT'; } else { $vs_element = "<select name='" . $pa_options["name"] . $vs_multiple_name_extension . "' " . $vs_js . " " . $vs_is_multiple . " " . $ps_size . " id='" . $pa_options["id"] . $vs_multiple_name_extension . "' {$vs_css_class_attr} style='{$vs_dim_style}'" . ($pa_options['readonly'] ? ' disabled="disabled" ' : '') . ">\n"; foreach ($va_opts as $va_opt) { $vs_option_text = $va_opt[0]; $vs_value = $va_opt[1]; $vs_selected = $vs_value == $vm_field_value || in_array($vs_value, $va_selection) ? "selected='selected'" : ""; $vs_use_count = ""; if ($vs_display_use_count && $vb_display_show_count && $vs_value != "") { //$vs_use_count = "(".intval($va_option_info[2]).")"; } if ($pa_options["maxOptionLength"] && strlen($vs_option_text) + strlen($vs_use_count) > $pa_options["maxOptionLength"]) { $vs_option_text = unicode_substr($vs_option_text, 0, $pa_options["maxOptionLength"] - 3 - strlen($vs_use_count)) . "..."; } $vs_display_message = ''; if (is_array($pa_options['displayMessageForFieldValues'])) { foreach ($pa_options['displayMessageForFieldValues'] as $vs_df => $va_df_vals) { if (isset($va_opt[2][$vs_df]) && is_array($va_df_vals)) { $vs_tmp = $va_opt[2][$vs_df]; if (isset($va_df_vals[$vs_tmp])) { $vs_display_message = ' ' . $va_df_vals[$vs_tmp]; } } } } $vs_element .= "<option value='{$vs_value}' {$vs_selected}>"; $vs_element .= $vs_option_text . $vs_use_count . $vs_display_message; $vs_element .= "</option>\n"; } $vs_element .= "</select>\n"; } } } } else { # # choice list # $vs_element = ''; // if 'LIST' is set try to stock over choice list with the contents of the list if (isset($va_attr['LIST']) && $va_attr['LIST']) { // NOTE: "raw" field value (value passed into method, before the model default value is applied) is used so as to allow the list default to be used if needed $vs_element = ca_lists::getListAsHTMLFormElement($va_attr['LIST'], $pa_options["name"] . $vs_multiple_name_extension, array('class' => $pa_options['classname'], 'id' => $pa_options['id']), array('key' => 'item_value', 'value' => $vm_raw_field_value, 'nullOption' => $pa_options['nullOption'], 'readonly' => $pa_options['readonly'])); } if (!$vs_element && (isset($va_attr["BOUNDS_CHOICE_LIST"]) && is_array($va_attr["BOUNDS_CHOICE_LIST"]))) { if (sizeof($va_attr["BOUNDS_CHOICE_LIST"]) == 0) { $vs_element = isset($pa_options['empty_message']) ? $pa_options['empty_message'] : 'No options available'; } else { $vs_element = "<select name='" . $pa_options["name"] . $vs_multiple_name_extension . "' " . $vs_js . " " . $vs_is_multiple . " " . $ps_size . " id='" . $pa_options['id'] . $vs_multiple_name_extension . "' {$vs_css_class_attr} style='{$vs_dim_style}'" . ($pa_options['readonly'] ? ' disabled="disabled" ' : '') . ">\n"; if ($pa_options["select_item_text"]) { $vs_element .= "<option value=''>" . $this->escapeHTML($pa_options["select_item_text"]) . "</option>\n"; } if (!$pa_options["nullOption"] && $vb_is_null) { $vs_element .= "<option value=''>" . _t('- NONE -') . "</option>\n"; } else { if ($pa_options["nullOption"]) { $vs_element .= "<option value=''>" . $pa_options["nullOption"] . "</option>\n"; } } foreach ($va_attr["BOUNDS_CHOICE_LIST"] as $vs_option => $vs_value) { $vs_selected = strval($vs_value) === strval($vm_field_value) || in_array($vs_value, $va_selection) ? "selected='selected'" : ""; if ($pa_options["maxOptionLength"] && strlen($vs_option) > $pa_options["maxOptionLength"]) { $vs_option = unicode_substr($vs_option, 0, $pa_options["maxOptionLength"] - 3) . "..."; } $vs_element .= "<option value='{$vs_value}' {$vs_selected}>" . $this->escapeHTML($vs_option) . "</option>\n"; } $vs_element .= "</select>\n"; } } } } } else { if ($va_attr["DISPLAY_TYPE"] === DT_COLORPICKER) { // COLORPICKER $vs_element = '<input name="' . $pa_options["name"] . '" type="hidden" size="' . ($pa_options['size'] ? $pa_options['size'] : $vn_display_width) . '" value="' . $this->escapeHTML($vm_field_value) . '" ' . $vs_js . ' id=\'' . $pa_options["id"] . "' style='{$vs_dim_style}'/>\n"; $vs_element .= '<div id="' . $pa_options["id"] . '_colorchip" class="colorpicker_chip" style="background-color: #' . $vm_field_value . '"><!-- empty --></div>'; $vs_element .= "<script type='text/javascript'>jQuery(document).ready(function() { jQuery('#" . $pa_options["name"] . "_colorchip').ColorPicker({\n\t\t\t\t\t\t\t\tonShow: function (colpkr) {\n\t\t\t\t\t\t\t\t\tjQuery(colpkr).fadeIn(500);\n\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tonHide: function (colpkr) {\n\t\t\t\t\t\t\t\t\tjQuery(colpkr).fadeOut(500);\n\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tonChange: function (hsb, hex, rgb) {\n\t\t\t\t\t\t\t\t\tjQuery('#" . $pa_options["name"] . "').val(hex);\n\t\t\t\t\t\t\t\t\tjQuery('#" . $pa_options["name"] . "_colorchip').css('backgroundColor', '#' + hex);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tcolor: jQuery('#" . $pa_options["name"] . "').val()\n\t\t\t\t\t\t\t})}); </script>\n"; if (method_exists('AssetLoadManager', 'register')) { AssetLoadManager::register('jquery', 'colorpicker'); } } else { # normal controls: all non-DT_SELECT display types are returned as DT_FIELD's. We could generate # radio-button controls for foreign key and choice lists, but we don't bother because it's never # really necessary. if ($vn_display_height > 1) { $vs_element = '<' . $vs_text_area_tag_name . ' name="' . $pa_options["name"] . '" rows="' . $vn_display_height . '" cols="' . $vn_display_width . '"' . ($pa_options['readonly'] ? ' readonly="readonly" disabled="disabled"' : '') . ' wrap="soft" ' . $vs_js . ' id=\'' . $pa_options["id"] . "' style='{$vs_dim_style}' " . $vs_css_class_attr . ">" . $this->escapeHTML($vm_field_value) . '</' . $vs_text_area_tag_name . '>' . "\n"; } else { $vs_element = '<input name="' . $pa_options["name"] . '" type="text" size="' . ($pa_options['size'] ? $pa_options['size'] : $vn_display_width) . '"' . ($pa_options['readonly'] ? ' readonly="readonly" ' : '') . ' value="' . $this->escapeHTML($vm_field_value) . '" ' . $vs_js . ' id=\'' . $pa_options["id"] . "' {$vs_css_class_attr} style='{$vs_dim_style}'/>\n"; } if (isset($va_attr['UNIQUE_WITHIN']) && is_array($va_attr['UNIQUE_WITHIN'])) { $va_within_fields = array(); foreach ($va_attr['UNIQUE_WITHIN'] as $vs_within_field) { $va_within_fields[$vs_within_field] = $this->get($vs_within_field); } $vs_element .= "<span id='" . $pa_options["id"] . '_uniqueness_status' . "'></span>"; $vs_element .= "<script type='text/javascript'>\n\tcaUI.initUniquenessChecker({\n\t\terrorIcon: '" . $pa_options['error_icon'] . "',\n\t\tprocessIndicator: '" . $pa_options['progress_indicator'] . "',\n\t\tstatusID: '" . $pa_options["id"] . "_uniqueness_status',\n\t\tlookupUrl: '" . $pa_options['lookup_url'] . "',\n\t\tformElementID: '" . $pa_options["id"] . "',\n\t\trow_id: " . intval($this->getPrimaryKey()) . ",\n\t\ttable_num: " . $this->tableNum() . ",\n\t\tfield: '" . $ps_field . "',\n\t\twithinFields: " . json_encode($va_within_fields) . ",\n\t\t\n\t\talreadyInUseMessage: '" . addslashes(_t('Value must be unique. Please try another.')) . "'\n\t});\n</script>"; } else { if (isset($va_attr['LOOKUP']) && $va_attr['LOOKUP']) { if (class_exists("AppController") && ($app = AppController::getInstance()) && ($req = $app->getRequest())) { AssetLoadManager::register('jquery', 'autocomplete'); $vs_element .= "<script type='text/javascript'>\n\tjQuery('#" . $pa_options["id"] . "').autocomplete({ source: '" . caNavUrl($req, 'lookup', 'Intrinsic', 'Get', array('bundle' => $this->tableName() . ".{$ps_field}", "max" => 500)) . "', minLength: 3, delay: 800});\n</script>"; } } } if (isset($pa_options['usewysiwygeditor']) && $pa_options['usewysiwygeditor']) { AssetLoadManager::register("ckeditor"); $vs_width = $vn_display_width; $vs_height = $vn_display_height; if (!preg_match("!^[\\d\\.]+px\$!i", $vs_width)) { $vs_width = (int) $vs_width * 6 . "px"; } if (!preg_match("!^[\\d\\.]+px\$!i", $vs_height)) { $vs_height = (int) $vs_height * 16 . "px"; } if (!is_array($va_toolbar_config = $this->getAppConfig()->getAssoc('wysiwyg_editor_toolbar'))) { $va_toolbar_config = array(); } $vs_element .= "<script type='text/javascript'>jQuery(document).ready(function() {\n\t\t\t\t\t\t\t\tvar ckEditor = CKEDITOR.replace( '" . $pa_options['id'] . "',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttoolbar : " . json_encode(array_values($va_toolbar_config)) . ",\n\t\t\t\t\t\t\t\t\twidth: '{$vs_width}',\n\t\t\t\t\t\t\t\t\theight: '{$vs_height}',\n\t\t\t\t\t\t\t\t\ttoolbarLocation: 'top',\n\t\t\t\t\t\t\t\t\tenterMode: CKEDITOR.ENTER_BR\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tckEditor.on('instanceReady', function(){ \n\t\t\t\t\t\t\t\t\t ckEditor.document.on( 'keydown', function(e) {if (caUI && caUI.utils) { caUI.utils.showUnsavedChangesWarning(true); } });\n\t\t\t\t\t\t\t\t});\n \t});\t\t\t\t\t\t\t\t\t\n</script>"; } } } break; # ---------------------------- # ---------------------------- case FT_TIMESTAMP: if ($this->get($ps_field)) { # is timestamp set? $vs_element = $this->escapeHTML($vm_field_value); # return printed date } else { $vs_element = "[Not set]"; # return text instead of 1969 date } break; # ---------------------------- # ---------------------------- case FT_DATETIME: case FT_HISTORIC_DATETIME: case FT_DATE: case FT_HISTORIC_DATE: if (!$vm_field_value) { $vm_field_value = $pa_options['value']; } switch ($va_attr["DISPLAY_TYPE"]) { case DT_TEXT: $vs_element = $vm_field_value ? $vm_field_value : "[Not set]"; break; default: $vn_max_length = $va_attr["BOUNDS_LENGTH"][1]; $vs_max_length = ''; if ($vn_max_length > 0) { $vs_max_length = 'maxlength="' . $vn_max_length . '"'; } if ($vn_display_height > 1) { $vs_element = '<' . $vs_text_area_tag_name . ' name="' . $pa_options["name"] . '" rows="' . $vn_display_height . '" cols="' . $vn_display_width . '" wrap="soft" ' . $vs_js . ' ' . $vs_css_class_attr . " style='{$vs_dim_style}'" . ($pa_options['readonly'] ? ' readonly="readonly" ' : '') . ">" . $this->escapeHTML($vm_field_value) . '</' . $vs_text_area_tag_name . '>'; } else { $vs_element = '<input type="text" name="' . $pa_options["name"] . '" value="' . $this->escapeHTML($vm_field_value) . "\" size='{$vn_display_width}' {$vs_max_length} {$vs_js} {$vs_css_class_attr} style='{$vs_dim_style}'" . ($pa_options['readonly'] ? ' readonly="readonly" ' : '') . "/>"; } break; } break; # ---------------------------- # ---------------------------- case FT_TIME: if (!$this->get($ps_field)) { $vm_field_value = ""; } switch ($va_attr["DISPLAY_TYPE"]) { case DT_TEXT: $vs_element = $vm_field_value ? $vm_field_value : "[Not set]"; break; default: $vn_max_length = $va_attr["BOUNDS_LENGTH"][1]; $vs_max_length = ''; if ($vn_max_length > 0) { $vs_max_length = 'maxlength="' . $vn_max_length . '"'; } if ($vn_display_height > 1) { $vs_element = '<' . $vs_text_area_tag_name . ' name="' . $pa_options["name"] . '" id="' . $pa_options["id"] . '" rows="' . $vn_display_height . '" cols="' . $vn_display_width . '" wrap="soft" ' . $vs_js . ' ' . $vs_css_class_attr . " style='{$vs_dim_style}'" . ($pa_options['readonly'] ? ' readonly="readonly" ' : '') . ">" . $this->escapeHTML($vm_field_value) . '</' . $vs_text_area_tag_name . '>'; } else { $vs_element = '<input type="text" name="' . $pa_options["name"] . '" id="' . $pa_options["id"] . '" value="' . $this->escapeHTML($vm_field_value) . "\" size='{$vn_display_width}' {$vs_max_length} {$vs_js} {$vs_css_class_attr}' style='{$vs_dim_style}'" . ($pa_options['readonly'] ? ' readonly="readonly" ' : '') . "/>"; } break; } break; # ---------------------------- # ---------------------------- case FT_DATERANGE: case FT_HISTORIC_DATERANGE: switch ($va_attr["DISPLAY_TYPE"]) { case DT_TEXT: $vs_element = $vm_field_value ? $vm_field_value : "[Not set]"; break; default: $vn_max_length = $va_attr["BOUNDS_LENGTH"][1]; $vs_max_length = ''; if ($vn_max_length > 0) { $vs_max_length = 'maxlength="' . $vn_max_length . '"'; } if ($vn_display_height > 1) { $vs_element = '<' . $vs_text_area_tag_name . ' name="' . $pa_options["name"] . '" id="' . $pa_options["id"] . '" rows="' . $vn_display_height . '" cols="' . $vn_display_width . '" wrap="soft" ' . $vs_js . ' ' . $vs_css_class_attr . " style='{$vs_dim_style}'" . ($pa_options['readonly'] ? ' readonly="readonly" ' : '') . ">" . $this->escapeHTML($vm_field_value) . '</' . $vs_text_area_tag_name . '>'; } else { $vs_element = '<input type="text" name="' . $pa_options["name"] . '" id="' . $pa_options["id"] . '" value="' . $this->escapeHTML($vm_field_value) . "\" size='{$vn_display_width}' {$vn_max_length} {$vs_js} {$vs_css_class_attr} style='{$vs_dim_style}'" . ($pa_options['readonly'] ? ' readonly="readonly" ' : '') . "/>"; } break; } break; # ---------------------------- # ---------------------------- case FT_TIMERANGE: switch ($va_attr["DISPLAY_TYPE"]) { case DT_TEXT: $vs_element = $vm_field_value ? $vm_field_value : "[Not set]"; break; default: $vn_max_length = $va_attr["BOUNDS_LENGTH"][1]; $vs_max_length = ''; if ($vn_max_length > 0) { $vs_max_length = 'maxlength="' . $vn_max_length . '"'; } if ($vn_display_height > 1) { $vs_element = '<' . $vs_text_area_tag_name . ' name="' . $pa_options["name"] . '" id="' . $pa_options["id"] . '" rows="' . $vn_display_height . '" cols="' . $vn_display_width . '" wrap="soft" ' . $vs_js . ' ' . $vs_css_class_attr . " style='{$vs_dim_style}'" . ($pa_options['readonly'] ? ' readonly="readonly" ' : '') . ">" . $this->escapeHTML($vm_field_value) . '</' . $vs_text_area_tag_name . '>'; } else { $vs_element = '<input type="text" name="' . $pa_options["name"] . '" id="' . $pa_options["id"] . '" value="' . $this->escapeHTML($vm_field_value) . "\" size='{$vn_display_width}' {$vs_max_length} {$vs_js} {$vs_css_class_attr} style='{$vs_dim_style}'" . ($pa_options['readonly'] ? ' readonly="readonly" ' : '') . "/>"; } break; } break; # ---------------------------- # ---------------------------- case FT_TIMECODE: $o_tp = new TimecodeParser(); $o_tp->setParsedValueInSeconds($vm_field_value); $vs_timecode = $o_tp->getText("COLON_DELIMITED", array("BLANK_ON_ZERO" => true)); $vn_max_length = $va_attr["BOUNDS_LENGTH"][1]; $vs_max_length = ''; if ($vn_max_length > 0) { $vs_max_length = 'maxlength="' . $vn_max_length . '"'; } if ($vn_display_height > 1) { $vs_element = '<' . $vs_text_area_tag_name . ' name="' . $pa_options["name"] . '" id="' . $pa_options["id"] . '" rows="' . $vn_display_height . '" cols="' . $vn_display_width . '" wrap="soft" ' . $vs_js . ' ' . $vs_css_class_attr . " style='{$vs_dim_style}'" . ($pa_options['readonly'] ? ' readonly="readonly" ' : '') . ">" . $this->escapeHTML($vs_timecode) . '</' . $vs_text_area_tag_name . '>'; } else { $vs_element = '<input type="text" NAME="' . $pa_options["name"] . '" id="' . $pa_options["id"] . '" value="' . $this->escapeHTML($vs_timecode) . "\" size='{$vn_display_width}' {$vs_max_length} {$vs_js} {$vs_css_class_attr} style='{$vs_dim_style}'" . ($pa_options['readonly'] ? ' readonly="readonly" ' : '') . "/>"; } break; # ---------------------------- # ---------------------------- case FT_MEDIA: case FT_FILE: $vs_element = '<input type="file" name="' . $pa_options["name"] . '" id="' . $pa_options["id"] . '" ' . $vs_js . '/>'; // show current media icon if ($vs_version = array_key_exists('displayMediaVersion', $pa_options) ? $pa_options['displayMediaVersion'] : 'icon') { $va_valid_versions = $this->getMediaVersions($ps_field); if (!in_array($vs_version, $va_valid_versions)) { $vs_version = $va_valid_versions[0]; } if ($vs_tag = $this->getMediaTag($ps_field, $vs_version)) { $vs_element .= $vs_tag; } } break; # ---------------------------- # ---------------------------- case FT_PASSWORD: $vn_max_length = $va_attr["BOUNDS_LENGTH"][1]; $vs_max_length = ''; if ($vn_max_length > 0) { $vs_max_length = 'maxlength="' . $vn_max_length . '"'; } $vs_element = '<input type="password" name="' . $pa_options["name"] . '" id="' . $pa_options["id"] . '" value="' . $this->escapeHTML($vm_field_value) . '" size="' . $vn_display_width . '" ' . $vs_max_length . ' ' . $vs_js . ' autocomplete="off" ' . $vs_css_class_attr . " style='{$vs_dim_style}'" . ($pa_options['readonly'] ? ' readonly="readonly" ' : '') . "/>"; break; # ---------------------------- # ---------------------------- case FT_BIT: switch ($va_attr["DISPLAY_TYPE"]) { case DT_FIELD: $vs_element = '<input type="text" name="' . $pa_options["name"] . "\" value='{$vm_field_value}' maxlength='1' size='2' {$vs_js} style='{$vs_dim_style}'" . ($pa_options['readonly'] ? ' readonly="readonly" ' : '') . "/>"; break; case DT_SELECT: $vs_element = "<select name='" . $pa_options["name"] . "' " . $vs_js . " id='" . $pa_options["id"] . "' {$vs_css_class_attr} style='{$vs_dim_style}'" . ($pa_options['readonly'] ? ' disabled="disabled" ' : '') . ">\n"; foreach (array("Yes" => 1, "No" => 0) as $vs_option => $vs_value) { $vs_selected = $vs_value == $vm_field_value ? "selected='selected'" : ""; $vs_element .= "<option value='{$vs_value}' {$vs_selected}" . ($pa_options['readonly'] ? ' disabled="disabled" ' : '') . ">" . _t($vs_option) . "</option>\n"; } $vs_element .= "</select>\n"; break; case DT_CHECKBOXES: $vs_element = '<input type="checkbox" name="' . $pa_options["name"] . '" value="1" ' . ($vm_field_value ? 'checked="1"' : '') . ' ' . $vs_js . ($pa_options['readonly'] ? ' disabled="disabled" ' : '') . ' id="' . $pa_options["id"] . '"/>'; break; case DT_RADIO_BUTTONS: $vs_element = 'Radio buttons not supported for bit-type fields'; break; } break; # ---------------------------- } # Apply format $vs_formatting = ""; if (isset($pa_options['field_errors']) && is_array($pa_options['field_errors']) && sizeof($pa_options['field_errors'])) { $va_field_errors = array(); foreach ($pa_options['field_errors'] as $o_e) { $va_field_errors[] = $o_e->getErrorDescription(); } $vs_errors = join('; ', $va_field_errors); } else { $vs_errors = ''; } if (is_null($ps_format)) { if (isset($pa_options['field_errors']) && is_array($pa_options['field_errors']) && sizeof($pa_options['field_errors'])) { $ps_format = $this->_CONFIG->get('form_element_error_display_format'); } else { $ps_format = $this->_CONFIG->get('form_element_display_format'); } } if ($ps_format != '') { $ps_formatted_element = $ps_format; $ps_formatted_element = str_replace("^ELEMENT", $vs_element, $ps_formatted_element); if ($vs_subelement) { $ps_formatted_element = str_replace("^SUB_ELEMENT", $vs_subelement, $ps_formatted_element); } $vb_fl_display_form_field_tips = false; if ($pa_options["display_form_field_tips"] || !isset($pa_options["display_form_field_tips"]) && $va_attr["DISPLAY_DESCRIPTION"] || !isset($pa_options["display_form_field_tips"]) && !isset($va_attr["DISPLAY_DESCRIPTION"]) && $vb_fl_display_form_field_tips) { if (preg_match("/\\^DESCRIPTION/", $ps_formatted_element)) { $ps_formatted_element = str_replace("^LABEL", $vs_field_label, $ps_formatted_element); $ps_formatted_element = str_replace("^DESCRIPTION", isset($pa_options["description"]) && $pa_options["description"] ? $pa_options["description"] : $va_attr["DESCRIPTION"], $ps_formatted_element); } else { // no explicit placement of description text, so... $vs_field_id = '_' . $this->tableName() . '_' . $this->getPrimaryKey() . '_' . $pa_options["name"] . '_' . $pa_options['form_name']; $ps_formatted_element = str_replace("^LABEL", '<span id="' . $vs_field_id . '">' . $vs_field_label . '</span>', $ps_formatted_element); if (!isset($pa_options['no_tooltips']) || !$pa_options['no_tooltips']) { TooltipManager::add('#' . $vs_field_id, "<h3>{$vs_field_label}</h3>" . (isset($pa_options["description"]) && $pa_options["description"] ? $pa_options["description"] : $va_attr["DESCRIPTION"]), $pa_options['tooltip_namespace']); } } if (!isset($va_attr["SUB_LABEL"])) { $va_attr["SUB_LABEL"] = ''; } if (!isset($va_attr["SUB_DESCRIPTION"])) { $va_attr["SUB_DESCRIPTION"] = ''; } if (preg_match("/\\^SUB_DESCRIPTION/", $ps_formatted_element)) { $ps_formatted_element = str_replace("^SUB_LABEL", $va_attr["SUB_LABEL"], $ps_formatted_element); $ps_formatted_element = str_replace("^SUB_DESCRIPTION", $va_attr["SUB_DESCRIPTION"], $ps_formatted_element); } else { // no explicit placement of description text, so... // ... make label text itself rollover for description text because no icon was specified $ps_formatted_element = str_replace("^SUB_LABEL", $va_attr["SUB_LABEL"], $ps_formatted_element); } } else { $ps_formatted_element = str_replace("^LABEL", $vs_field_label, $ps_formatted_element); $ps_formatted_element = str_replace("^DESCRIPTION", "", $ps_formatted_element); if ($vs_subelement) { $ps_formatted_element = str_replace("^SUB_LABEL", $va_attr["SUB_LABEL"], $ps_formatted_element); $ps_formatted_element = str_replace("^SUB_DESCRIPTION", "", $ps_formatted_element); } } $ps_formatted_element = str_replace("^ERRORS", $vs_errors, $ps_formatted_element); $ps_formatted_element = str_replace("^EXTRA", isset($pa_options['extraLabelText']) ? $pa_options['extraLabelText'] : '', $ps_formatted_element); $vs_element = $ps_formatted_element; } else { $vs_element .= "<br/>" . $vs_subelement; } return $vs_element; } else { $this->postError(716, _t("'%1' does not exist in this object", $ps_field), "BaseModel->formElement()"); return ""; } return ""; }
/** * Generates HTML form element widget for preference based upon settings in preference definition file. * By calling this method for a series of preference names, one can quickly create an HTML-based configuration form. * * @access public * @param string $ps_pref Name of user preference * @param string $ps_format Format string containing simple tags to be replaced with preference information. Tags supported are: * ^LABEL = name of preference * ^ELEMENT = HTML code to generate form widget * If you omit $ps_format, the element code alone (content of ^ELEMENT) is returned. * @param array $pa_options Array of options. Support options are: * field_errors = array of error messages to display on preference element * useTable = if true and displayType for element in DT_CHECKBOXES checkboxes will be formatted in a table with numTableColumns columns * numTableColumns = Number of columns to use when formatting checkboxes as a table. Default, if omitted, is 3 * genericUIList = forces FT_*_EDITOR_UI to return single UI list for table rather than by type * classname = class to assign to form element * @return string HTML code to generate form widget */ public function preferenceHtmlFormElement($ps_pref, $ps_format = null, $pa_options = null) { if ($this->isValidPreference($ps_pref)) { if (!is_array($pa_options)) { $pa_options = array(); } $o_db = $this->getDb(); $va_pref_info = $this->getPreferenceInfo($ps_pref); if (is_null($vs_current_value = $this->getPreference($ps_pref))) { $vs_current_value = $this->getPreferenceDefault($ps_pref); } $vs_output = ""; $vs_class = ""; $vs_classname = ""; if (isset($pa_options['classname']) && $pa_options['classname']) { $vs_classname = $pa_options['classname']; $vs_class = " class='" . $pa_options['classname'] . "'"; } foreach (array('displayType', 'displayWidth', 'displayHeight', 'length', 'formatType', 'choiceList', 'label', 'description') as $vs_k) { if (!isset($va_pref_info[$vs_k])) { $va_pref_info[$vs_k] = null; } } switch ($va_pref_info["displayType"]) { # --------------------------------- case 'DT_FIELD': if (($vn_display_width = $va_pref_info["displayWidth"]) < 1) { $vn_display_width = 20; } if (($vn_display_height = $va_pref_info["displayHeight"]) < 1) { $vn_display_height = 1; } if (isset($va_pref_info["length"]["maximum"])) { $vn_max_input_length = $va_pref_info["length"]["maximum"]; } else { $vn_max_input_length = $vn_display_width; } if ($vn_display_height > 1) { $vs_output = "<textarea name='pref_{$ps_pref}' rows='" . $vn_display_height . "' cols='" . $vn_display_width . "'>" . htmlspecialchars($vs_current_value, ENT_QUOTES, 'UTF-8') . "</textarea>\n"; } else { $vs_output = "<input type='text' name='pref_{$ps_pref}' size='{$vn_display_width}' maxlength='{$vn_max_input_length}'" . $vs_class . " value='" . htmlspecialchars($vs_current_value, ENT_QUOTES, 'UTF-8') . "'/>\n"; } break; # --------------------------------- # --------------------------------- case 'DT_SELECT': switch ($va_pref_info['formatType']) { case 'FT_UI_LOCALE': $va_locales = array(); if ($r_dir = opendir(__CA_APP_DIR__ . '/locale/')) { while (($vs_locale_dir = readdir($r_dir)) !== false) { if ($vs_locale_dir[0] == '.') { continue; } if (sizeof($va_tmp = explode('_', $vs_locale_dir)) == 2) { $va_locales[$vs_locale_dir] = $va_tmp; } } } $va_opts = array(); $t_locale = new ca_locales(); foreach ($va_locales as $vs_code => $va_parts) { try { $vs_lang_name = Zend_Locale::getTranslation(strtolower($va_parts[0]), 'language', strtolower($va_parts[0])); $vs_country_name = Zend_Locale::getTranslation($va_parts[1], 'Country', $vs_code); } catch (Exception $e) { $vs_lang_name = strtolower($va_parts[0]); $vs_country_name = $vs_code; } $va_opts[($vs_lang_name ? $vs_lang_name : $vs_code) . ($vs_country_name ? ' (' . $vs_country_name . ')' : '')] = $vs_code; } break; case 'FT_LOCALE': $qr_locales = $o_db->query("\n\t\t\t\t\t\t\t\tSELECT *\n\t\t\t\t\t\t\t\tFROM ca_locales\n\t\t\t\t\t\t\t\tORDER BY \n\t\t\t\t\t\t\t\t\tname\n\t\t\t\t\t\t\t"); $va_opts = array(); while ($qr_locales->nextRow()) { $va_opts[$qr_locales->get('name')] = $qr_locales->get('language') . '_' . $qr_locales->get('country'); } break; case 'FT_THEME': if ($r_dir = opendir($this->_CONFIG->get('themes_directory'))) { $va_opts = array(); while (($vs_theme_dir = readdir($r_dir)) !== false) { if ($vs_theme_dir[0] == '.') { continue; } $o_theme_info = Configuration::load($this->_CONFIG->get('themes_directory') . '/' . $vs_theme_dir . '/themeInfo.conf'); $va_opts[$o_theme_info->get('name')] = $vs_theme_dir; } } break; case 'FT_OBJECT_EDITOR_UI': case 'FT_OBJECT_LOT_EDITOR_UI': case 'FT_ENTITY_EDITOR_UI': case 'FT_PLACE_EDITOR_UI': case 'FT_OCCURRENCE_EDITOR_UI': case 'FT_COLLECTION_EDITOR_UI': case 'FT_STORAGE_LOCATION_EDITOR_UI': case 'FT_OBJECT_REPRESENTATION_EDITOR_UI': case 'FT_REPRESENTATION_ANNOTATION_EDITOR_UI': case 'FT_SET_EDITOR_UI': case 'FT_SET_ITEM_EDITOR_UI': case 'FT_LIST_EDITOR_UI': case 'FT_LIST_ITEM_EDITOR_UI': case 'FT_LOAN_EDITOR_UI': case 'FT_MOVEMENT_EDITOR_UI': case 'FT_TOUR_EDITOR_UI': case 'FT_TOUR_STOP_EDITOR_UI': case 'FT_SEARCH_FORM_EDITOR_UI': case 'FT_BUNDLE_DISPLAY_EDITOR_UI': case 'FT_RELATIONSHIP_TYPE_EDITOR_UI': case 'FT_USER_INTERFACE_EDITOR_UI': case 'FT_USER_INTERFACE_SCREEN_EDITOR_UI': case 'FT_IMPORT_EXPORT_MAPPING_EDITOR_UI': case 'FT_IMPORT_EXPORT_MAPPING_GROUP_EDITOR_UI': $vn_table_num = $this->_editorPrefFormatTypeToTableNum($va_pref_info['formatType']); $t_instance = $this->getAppDatamodel()->getInstanceByTableNum($vn_table_num, true); $va_values = $this->getPreference($ps_pref); if (!is_array($va_values)) { $va_values = array(); } if (method_exists($t_instance, 'getTypeFieldName') && $t_instance->getTypeFieldName() && (!isset($pa_options['genericUIList']) || !$pa_options['genericUIList'])) { $vs_output = ''; $va_ui_list_by_type = $this->_getUIListByType($vn_table_num); $va_types = array(); if ((bool) $t_instance->getFieldInfo($t_instance->getTypeFieldName(), 'IS_NULL')) { $va_types['_NONE_'] = array('LEVEL' => 0, 'name_singular' => _t('NONE'), 'name_plural' => _t('NONE')); } $va_types += $t_instance->getTypeList(array('returnHierarchyLevels' => true)); if (!is_array($va_types) || !sizeof($va_types)) { $va_types = array(1 => array()); } // force ones with no types to get processed for __all__ foreach ($va_types as $vn_type_id => $va_type) { $va_opts = array(); // print out type-specific if (is_array($va_ui_list_by_type[$vn_type_id])) { foreach (caExtractValuesByUserLocale($va_ui_list_by_type[$vn_type_id]) as $vn_ui_id => $vs_label) { $va_opts[$vn_ui_id] = $vs_label; } } // print out generic if (is_array($va_ui_list_by_type['__all__'])) { foreach (caExtractValuesByUserLocale($va_ui_list_by_type['__all__']) as $vn_ui_id => $vs_label) { $va_opts[$vn_ui_id] = $vs_label; } } if (!is_array($va_opts) || sizeof($va_opts) == 0) { continue; } $vs_output .= "<tr><td>" . str_repeat(" ", (int) $va_type['LEVEL']) . $va_type['name_singular'] . "</td><td><select name='pref_{$ps_pref}_{$vn_type_id}'>\n"; foreach ($va_opts as $vs_val => $vs_opt) { $vs_selected = $vs_val == $va_values[$vn_type_id] ? "SELECTED" : ""; $vs_output .= "<option value='" . htmlspecialchars($vs_val, ENT_QUOTES, 'UTF-8') . "' {$vs_selected}>{$vs_opt}</option>\n"; } $vs_output .= "</select></td></tr>\n"; } } else { $va_opts = $this->_getUIList($vn_table_num); if (!is_array($va_opts) || sizeof($va_opts) == 0) { $vs_output = ''; break 2; } $vs_output = "<tr><td> </td><td><select name='pref_{$ps_pref}'>\n"; foreach ($va_opts as $vs_val => $vs_opt) { $vs_selected = $vs_val == $vs_current_value ? "SELECTED" : ""; $vs_output .= "<option value='" . htmlspecialchars($vs_val, ENT_QUOTES, 'UTF-8') . "' {$vs_selected}>" . $vs_opt . "</option>\n"; } $vs_output .= "</select></td></tr>\n"; } break 2; default: $va_opts = $va_pref_info["choiceList"]; break; } if (!is_array($va_opts) || sizeof($va_opts) == 0) { $vs_output = ''; break; } $vs_output = "<select name='pref_{$ps_pref}'" . $vs_class . ">\n"; foreach ($va_opts as $vs_opt => $vs_val) { $vs_selected = $vs_val == $vs_current_value ? "selected='1'" : ""; $vs_output .= "<option value='" . htmlspecialchars($vs_val, ENT_QUOTES, 'UTF-8') . "' {$vs_selected}>" . $vs_opt . "</option>\n"; } $vs_output .= "</select>\n"; break; # --------------------------------- # --------------------------------- case 'DT_CHECKBOXES': if ($va_pref_info["formatType"] == 'FT_BIT') { $vs_selected = $vs_current_value ? "CHECKED" : ""; $vs_output .= "<input type='checkbox' name='pref_{$ps_pref}' value='1'" . $vs_class . " {$vs_selected}>\n"; } else { if ($vb_use_table = isset($pa_options['useTable']) && (bool) $pa_options['useTable']) { $vs_output .= "<table width='100%'>"; } $vn_num_table_columns = isset($pa_options['numTableColumns']) && (int) $pa_options['numTableColumns'] > 0 ? (int) $pa_options['numTableColumns'] : 3; $vn_c = 0; foreach ($va_pref_info["choiceList"] as $vs_opt => $vs_val) { if (is_array($vs_current_value)) { $vs_selected = in_array($vs_val, $vs_current_value) ? "CHECKED" : ""; } else { $vs_selected = ''; } if ($vb_use_table && $vn_c == 0) { $vs_output .= "<tr>"; } if ($vb_use_table) { $vs_output .= "<td width='" . floor(100 / $vn_num_table_columns) . "%'>"; } $vs_output .= "<input type='checkbox' name='pref_" . $ps_pref . "[]' value='" . htmlspecialchars($vs_val, ENT_QUOTES, 'UTF-8') . "'" . $vs_class . " {$vs_selected}> " . $vs_opt . " \n"; if ($vb_use_table) { $vs_output .= "</td>"; } $vn_c++; if ($vb_use_table && !($vn_c % $vn_num_table_columns)) { $vs_output .= "</tr>\n"; $vn_c = 0; } } if ($vb_use_table) { $vs_output .= "</table>"; } } break; # --------------------------------- # --------------------------------- case 'DT_STATEPROV_LIST': $vs_output .= caHTMLSelect("pref_{$ps_pref}_select", array(), array('id' => "pref_{$ps_pref}_select", 'class' => $vs_classname), array('value' => $vs_current_value)); $vs_output .= caHTMLTextInput("pref_{$ps_pref}_name", array('id' => "pref_{$ps_pref}_text", 'value' => $vs_current_value, 'class' => $vs_classname)); break; # --------------------------------- # --------------------------------- case 'DT_COUNTRY_LIST': $vs_output .= caHTMLSelect("pref_{$ps_pref}", caGetCountryList(), array('id' => "pref_{$ps_pref}", 'class' => $vs_classname), array('value' => $vs_current_value)); if ($va_pref_info['stateProvPref']) { $vs_output .= "<script type='text/javascript'>\n"; $vs_output .= "var caStatesByCountryList = " . json_encode(caGetStateList()) . ";\n"; $vs_output .= "\n\t\t\t\t\t\t\tjQuery('#pref_{$ps_pref}').click({countryID: 'pref_{$ps_pref}', stateProvID: 'pref_" . $va_pref_info['stateProvPref'] . "', value: '" . addslashes($this->getPreference($va_pref_info['stateProvPref'])) . "', statesByCountryList: caStatesByCountryList}, caUI.utils.updateStateProvinceForCountry);\n\t\t\t\t\t\t\tjQuery(document).ready(function() {\n\t\t\t\t\t\t\t\tcaUI.utils.updateStateProvinceForCountry({data: {countryID: 'pref_{$ps_pref}', stateProvID: 'pref_" . $va_pref_info['stateProvPref'] . "', value: '" . addslashes($this->getPreference($va_pref_info['stateProvPref'])) . "', statesByCountryList: caStatesByCountryList}});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t"; $vs_output .= "</script>\n"; } break; # --------------------------------- # --------------------------------- case 'DT_CURRENCIES': $vs_output .= caHTMLSelect("pref_{$ps_pref}", caAvailableCurrenciesForConversion(), array('id' => "pref_{$ps_pref}", 'class' => $vs_classname), array('value' => $vs_current_value)); break; # --------------------------------- # --------------------------------- case 'DT_RADIO_BUTTONS': foreach ($va_pref_info["choiceList"] as $vs_opt => $vs_val) { $vs_selected = $vs_val == $vs_current_value ? "CHECKED" : ""; $vs_output .= "<input type='radio' name='pref_{$ps_pref}'" . $vs_class . " value='" . htmlspecialchars($vs_val, ENT_QUOTES, 'UTF-8') . "' {$vs_selected}> " . $vs_opt . " \n"; } break; # --------------------------------- # --------------------------------- case 'DT_PASSWORD': if (($vn_display_width = $va_pref_info["displayWidth"]) < 1) { $vn_display_width = 20; } if (isset($va_pref_info["length"]["maximum"])) { $vn_max_input_length = $va_pref_info["length"]["maximum"]; } else { $vn_max_input_length = $vn_display_width; } $vs_output = "<input type='password' name='pref_{$ps_pref}' size='{$vn_display_width}' maxlength='{$vn_max_input_length}'" . $vs_class . " value='" . htmlspecialchars($vs_current_value, ENT_QUOTES, 'UTF-8') . "'/>\n"; break; # --------------------------------- # --------------------------------- default: return "Configuration error: Invalid display type for {$ps_pref}"; # --------------------------------- } if (is_null($ps_format)) { if (isset($pa_options['field_errors']) && is_array($pa_options['field_errors']) && sizeof($pa_options['field_errors'])) { $ps_format = $this->_CONFIG->get('form_element_error_display_format'); $va_field_errors = array(); foreach ($pa_options['field_errors'] as $o_e) { $va_field_errors[] = $o_e->getErrorDescription(); } $vs_errors = join('; ', $va_field_errors); } else { $ps_format = $this->_CONFIG->get('form_element_display_format'); $vs_errors = ''; } } if ($ps_format && $vs_output) { $vs_format = $ps_format; $vs_format = str_replace("^ELEMENT", $vs_output, $vs_format); } else { $vs_format = $vs_output; } $vs_format = str_replace("^EXTRA", '', $vs_format); if (preg_match("/\\^DESCRIPTION/", $vs_format)) { $vs_format = str_replace("^LABEL", _t($va_pref_info["label"]), $vs_format); $vs_format = str_replace("^DESCRIPTION", _t($va_pref_info["description"]), $vs_format); } else { // no explicit placement of description text, so... $vs_field_id = "pref_{$ps_pref}_container"; $vs_format = str_replace("^LABEL", '<span id="' . $vs_field_id . '">' . _t($va_pref_info["label"]) . '</span>', $vs_format); TooltipManager::add('#' . $vs_field_id, "<h3>" . $va_pref_info["label"] . "</h3>" . $va_pref_info["description"]); } return $vs_format; } else { return ""; } }
/** * Return HTML form element for editing. * * @param array $pa_element_info An array of information about the metadata element being edited * @param array $pa_options array Options include: * class = the CSS class to apply to all visible form elements [Default=lookupBg] * width = the width of the form element [Default=field width defined in metadata element definition] * height = the height of the form element [Default=field height defined in metadata element definition] * request = the RequestHTTP object for the current request; required for lookups to work [Default is null] * * @return string */ public function htmlFormElement($pa_element_info, $pa_options = null) { $o_config = Configuration::load(); $va_settings = $this->getSettingValuesFromElementArray($pa_element_info, array('fieldWidth')); $vs_class = trim(isset($pa_options['class']) && $pa_options['class'] ? $pa_options['class'] : 'lookupBg'); $vs_element = "<div id='{fieldNamePrefix}{$pa_element_info['element_id']}_display{n}' style='float: right;'> </div>" . caHTMLTextInput("{fieldNamePrefix}{$pa_element_info['element_id']}_autocomplete{n}", array('size' => isset($pa_options['width']) && $pa_options['width'] > 0 ? $pa_options['width'] : $va_settings['fieldWidth'], 'height' => isset($pa_options['height']) && $pa_options['height'] > 0 ? $pa_options['height'] : 1, 'value' => '{{' . $pa_element_info['element_id'] . '}}', 'maxlength' => 512, 'id' => "{fieldNamePrefix}{$pa_element_info['element_id']}_autocomplete{n}", 'class' => $vs_class)) . caHTMLHiddenInput("{fieldNamePrefix}{$pa_element_info['element_id']}_{n}", array('value' => '{{' . $pa_element_info['element_id'] . '}}', 'id' => "{fieldNamePrefix}{$pa_element_info['element_id']}_{n}")); $va_params = array('max' => 50); if ($pa_options['request']) { if ($vs_restrict_to_type = caGetOption('restrictTo' . $this->ops_name_singular . 'TypeIdno', $pa_element_info['settings'], null)) { $va_params = array("type" => $vs_restrict_to_type); } else { $va_params = null; } $vs_url = caNavUrl($pa_options['request'], 'lookup', $this->ops_name_singular, 'Get', $va_params); } else { // no lookup is possible return $this->getDisplayValue(); } $vs_element .= "\n\t\t\t\t<script type='text/javascript'>\n\t\t\t\t\tjQuery(document).ready(function() {\n\t\t\t\t\t\tvar v = jQuery('#{fieldNamePrefix}{$pa_element_info['element_id']}_autocomplete{n}').val();\t\n\t\t\t\t\t\tv=v.replace(/(<\\/?[^>]+>)/gi, function(m, p1, offset, val) {\n\t\t\t\t\t\t\tjQuery('#{fieldNamePrefix}{$pa_element_info['element_id']}_display{n}').html(p1);\n\t\t\t\t\t\t\treturn '';\n\t\t\t\t\t\t});\n\t\t\t\t\t\tv=v.replace(/\\[([\\d]+)\\]\$/gi, function(m, p1, offset, val) {\n\t\t\t\t\t\t\tjQuery('#{fieldNamePrefix}{$pa_element_info['element_id']}_{n}').val(parseInt(p1));\n\t\t\t\t\t\t\treturn '';\n\t\t\t\t\t\t});\n\t\t\t\t\t\tjQuery('#{fieldNamePrefix}{$pa_element_info['element_id']}_autocomplete{n}').val(v.trim());\n\t\t\t\t\t\t\n\t\t\t\t\t\tjQuery('#{fieldNamePrefix}{$pa_element_info['element_id']}_autocomplete{n}').autocomplete( \n\t\t\t\t\t\t\t{ minLength: 3, delay: 800, html: true,\n\t\t\t\t\t\t\t\tsource: function( request, response ) {\n\t\t\t\t\t\t\t\t\t\$.ajax({\n\t\t\t\t\t\t\t\t\t\turl: '{$vs_url}',\n\t\t\t\t\t\t\t\t\t\tdataType: 'json',\n\t\t\t\t\t\t\t\t\t\tdata: { term: request.term, quickadd: 0, noInline: 1 },\n\t\t\t\t\t\t\t\t\t\tsuccess: function( data ) {\n\t\t\t\t\t\t\t\t\t\t\tresponse(data);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}, \n\t\t\t\t\t\t\t\tselect: function( event, ui ) {\n\t\t\t\t\t\t\t\t\tif(!parseInt(ui.item.id) || (ui.item.id <= 0)) {\n\t\t\t\t\t\t\t\t\t\tjQuery('#{fieldNamePrefix}{$pa_element_info['element_id']}_autocomplete{n}').val(''); // no matches so clear text input\n\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tjQuery('#{fieldNamePrefix}{$pa_element_info['element_id']}_{n}').val(ui.item.id);\n\t\t\t\t\t\t\t\t\tjQuery('#{fieldNamePrefix}{$pa_element_info['element_id']}_autocomplete{n}').val(jQuery.trim(ui.item.label.replace(/<\\/?[^>]+>/gi, '')));\n\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tchange: function( event, ui ) {\n\t\t\t\t\t\t\t\t\t//If nothing has been selected remove all content from text input\n\t\t\t\t\t\t\t\t\tif(!jQuery('#{fieldNamePrefix}{$pa_element_info['element_id']}_{n}').val()) {\n\t\t\t\t\t\t\t\t\t\tjQuery('#{fieldNamePrefix}{$pa_element_info['element_id']}_autocomplete{n}').val('');\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t).click(function() { this.select(); });\n\t\t\t\t\t});\n\t\t\t\t</script>\n\t\t\t"; return $vs_element; }
/** * Returns HTML form input widget for bundle specified by standard "get" bundle code (eg. <table_name>.<bundle_name> format) suitable * for use in a simple data entry form, such as the front-end "contribute" user-provided content submission form * * This method handles generation of search form widgets for (1) related tables (eg. ca_places), preferred and non-preferred labels for both the * primary and related tables, and all other types of elements for related tables. If this method can't handle the bundle it will pass the request to the * superclass implementation of htmlFormElementForSearch() * * @param $po_request HTTPRequest * @param $ps_field string * @param $pa_options array * @return string HTML text of form element. Will return null (from superclass) if it is not possible to generate an HTML form widget for the bundle. * */ public function htmlFormElementForSimpleForm($po_request, $ps_field, $pa_options = null) { $vb_as_array_element = (bool) caGetOption('asArrayElement', $pa_options, false); $va_tmp = explode('.', $ps_field); $vs_buf = ''; if ($vs_rel_type = caGetOption('relationshipType', $pa_options, null)) { $vs_buf .= caHTMLHiddenInput($ps_field . '_relationship_type' . ($vb_as_array_element ? "[]" : ""), array('value' => $vs_rel_type)); } if ($vs_type = caGetOption('type', $pa_options, null)) { $vs_buf .= caHTMLHiddenInput($ps_field . '_type' . ($vb_as_array_element ? "[]" : ""), array('value' => $vs_type)); } switch (sizeof($va_tmp)) { # ------------------------------------- case 1: // table_name if ($va_tmp[0] != $this->tableName()) { if (!is_array($pa_options)) { $pa_options = array(); } if (!isset($pa_options['width'])) { $pa_options['width'] = 30; } if (!isset($pa_options['values'])) { $pa_options['values'] = array(); } if (!isset($pa_options['values'][$ps_field])) { $pa_options['values'][$ps_field] = ''; } return $vs_buf . caHTMLTextInput($ps_field . ($vb_as_array_element ? "[]" : ""), array('value' => $pa_options['values'][$ps_field], 'size' => $pa_options['width'], 'class' => $pa_options['class'], 'id' => str_replace('.', '_', $ps_field))); } break; # ------------------------------------- # ------------------------------------- case 2: // table_name.field_name // table_name.field_name case 3: // table_name.field_name.sub_element if (!($t_instance = $this->_DATAMODEL->getInstanceByTableName($va_tmp[0], true))) { return null; } switch ($va_tmp[1]) { # -------------------- case 'preferred_labels': case 'nonpreferred_labels': return $vs_buf . caHTMLTextInput($ps_field . ($vb_as_array_element ? "[]" : ""), array('value' => $pa_options['values'][$ps_field], 'size' => $pa_options['width'], 'class' => $pa_options['class'], 'id' => str_replace('.', '_', $ps_field))); break; # -------------------- # -------------------- default: if ($va_tmp[0] != $this->tableName()) { switch (sizeof($va_tmp)) { case 1: return $vs_buf . caHTMLTextInput($ps_field . ($vb_as_array_element ? "[]" : ""), array('value' => $pa_options['values'][$ps_field], 'size' => $pa_options['width'], 'class' => $pa_options['class'], 'id' => str_replace('.', '_', $ps_field))); case 2: case 3: return $vs_buf . $t_instance->htmlFormElementForSearch($po_request, $ps_field, $pa_options); break; } } break; # -------------------- } break; # ------------------------------------- } return parent::htmlFormElementForSimpleForm($po_request, $ps_field, $pa_options); }
/** * Return HTML form element for editing. * * @param array $pa_element_info An array of information about the metadata element being edited * @param array $pa_options array Options include: * forSearch = simple text entry is returned for use with search forms [Default=false] * class = the CSS class to apply to all visible form elements [Default=lookupBg] * width = the width of the form element [Default=field width defined in metadata element definition] * height = the height of the form element [Default=field height defined in metadata element definition] * request = the RequestHTTP object for the current request; required for lookups to work [Default is null] * disableMap = don't show map with Geonames data [Default=false] * * @return string */ public function htmlFormElement($pa_element_info, $pa_options = null) { $vs_class = trim(isset($pa_options['class']) && $pa_options['class'] ? $pa_options['class'] : ''); if (isset($pa_options['forSearch']) && $pa_options['forSearch']) { return caHTMLTextInput("{fieldNamePrefix}" . $pa_element_info['element_id'] . "_{n}", array('id' => "{fieldNamePrefix}" . $pa_element_info['element_id'] . "_{n}", 'value' => $pa_options['value']), $pa_options); } $o_config = Configuration::load(); $va_settings = $this->getSettingValuesFromElementArray($pa_element_info, array('fieldWidth', 'fieldHeight', 'disableMap', 'maxResults', 'gnElements', 'gnDelimiter')); $vn_max_results = isset($va_settings['maxResults']) ? intval($va_settings['maxResults']) : 20; $vs_gn_elements = $va_settings['gnElements']; $vs_gn_delimiter = $va_settings['gnDelimiter']; if ($pa_options['request']) { $vs_url = caNavUrl($pa_options['request'], 'lookup', 'GeoNames', 'Get', array('maxRows' => $vn_max_results, 'gnElements' => urlencode($vs_gn_elements), 'gnDelimiter' => urlencode($vs_gn_delimiter))); } $vs_element = '<div id="geonames_' . $pa_element_info['element_id'] . '_input{n}">' . caHTMLTextInput('{fieldNamePrefix}' . $pa_element_info['element_id'] . '_autocomplete{n}', array('size' => isset($pa_options['width']) && $pa_options['width'] > 0 ? $pa_options['width'] : $va_settings['fieldWidth'], 'height' => isset($pa_options['height']) && $pa_options['height'] > 0 ? $pa_options['height'] : $va_settings['fieldHeight'], 'value' => '{{' . $pa_element_info['element_id'] . '}}', 'maxlength' => 512, 'id' => "geonames_" . $pa_element_info['element_id'] . "_autocomplete{n}", 'class' => $vs_class ? $vs_class : 'lookupBg')) . caHTMLHiddenInput('{fieldNamePrefix}' . $pa_element_info['element_id'] . '_{n}', array('value' => '{{' . $pa_element_info['element_id'] . '}}', 'id' => '{fieldNamePrefix}' . $pa_element_info['element_id'] . '_{n}')); $vs_element .= '</div>'; $vs_element .= "\n\t\t\t<script type='text/javascript'>\n\t\t\t\tjQuery(document).ready(function() {\n\t\t\t\t\tjQuery('#geonames_" . $pa_element_info['element_id'] . "_autocomplete{n}').autocomplete(\n\t\t\t\t\t\t{ \n\t\t\t\t\t\t\tsource: '{$vs_url}',\n\t\t\t\t\t\t\tminLength: 3, delay: 800,\n\t\t\t\t\t\t\tselect: function(event, ui) {\n\t\t\t\t\t\t\t\tjQuery('#{fieldNamePrefix}" . $pa_element_info['element_id'] . "_{n}').val(ui.item.label + ' [id:' + ui.item.id + ']');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t).click(function() { this.select(); });\n\t\t\t\t});\n\t\t\t</script>\n\t\t"; if (!caGetOption("disableMap", $va_settings, false) && !caGetOption("disableMap", $pa_options, false)) { JavascriptLoadManager::register('maps'); $vs_element .= "\n\t\t\t\t<div id='map_" . $pa_element_info['element_id'] . "{n}' style='width:700px; height:160px;'>\n\n\t\t\t\t</div>\n\t\t\t\t<script type='text/javascript'>\n\t\t\t\t\tif ('{n}'.substring(0,3) == 'new') {\n\t\t\t\t\t\tjQuery('#map_" . $pa_element_info['element_id'] . "{n}').hide();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery(document).ready(function() {\n\t\t\t"; $vs_element .= "\n\t\t\t\t\tvar re = /\\[([\\d\\.\\-,; ]+)\\]/;\n\t\t\t\t\tvar r = re.exec('{{" . $pa_element_info['element_id'] . "}}');\n\t\t\t\t\tvar latlong = (r) ? r[1] : null;\n\n\t\t\t\t\tif (latlong) {\n\t\t\t\t\t\t// map vars are global\n\t\t\t\t\t\tmap_" . $pa_element_info['element_id'] . "{n} = new google.maps.Map(document.getElementById('map_" . $pa_element_info['element_id'] . "{n}'), {\n\t\t\t\t\t\t\tdisableDefaultUI: false,\n\t\t\t\t\t\t\tmapTypeId: google.maps.MapTypeId.SATELLITE\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tvar tmp = latlong.split(',');\n\t\t\t\t\t\tvar pt = new google.maps.LatLng(tmp[0], tmp[1]);\n\t\t\t\t\t\tmap_" . $pa_element_info['element_id'] . "{n}.setCenter(pt);\n\t\t\t\t\t\tmap_" . $pa_element_info['element_id'] . "{n}.setZoom(15);\t\t// todo: make this a user preference of some sort\n\t\t\t\t\t\tvar marker = new google.maps.Marker({\n\t\t\t\t\t\t\tposition: pt,\n\t\t\t\t\t\t\tmap: map_" . $pa_element_info['element_id'] . "{n}\n\t\t\t\t\t\t});\n\t\t\t\t\t}"; $vs_element .= "\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t</script>"; } return $vs_element; }
/** * Return HTML form element for editing. * * @param array $pa_element_info An array of information about the metadata element being edited * @param array $pa_options array Options include: * usewysiwygeditor = overrides element level setting for visual text editor [Default=false] * forSearch = settings and options regarding visual text editor are ignored [Default=false] * class = the CSS class to apply to all visible form elements [Default=null] * width = the width of the form element [Default=field width defined in metadata element definition] * height = the height of the form element [Default=field height defined in metadata element definition] * t_subject = an instance of the model to which the attribute belongs; required if suggestExistingValues lookups are enabled [Default is null] * request = the RequestHTTP object for the current request; required if suggestExistingValues lookups are enabled [Default is null] * suggestExistingValues = suggest values based on existing input for this element as user types [Default is false] * * @return string */ public function htmlFormElement($pa_element_info, $pa_options = null) { $va_settings = $this->getSettingValuesFromElementArray($pa_element_info, array('fieldWidth', 'fieldHeight', 'minChars', 'maxChars', 'suggestExistingValues', 'usewysiwygeditor', 'isDependentValue', 'dependentValueTemplate')); if (isset($pa_options['usewysiwygeditor'])) { $va_settings['usewysiwygeditor'] = $pa_options['usewysiwygeditor']; } if (isset($pa_options['forSearch']) && $pa_options['forSearch']) { unset($va_settings['usewysiwygeditor']); } $vs_width = trim(isset($pa_options['width']) && $pa_options['width'] > 0 ? $pa_options['width'] : $va_settings['fieldWidth']); $vs_height = trim(isset($pa_options['height']) && $pa_options['height'] > 0 ? $pa_options['height'] : $va_settings['fieldHeight']); $vs_class = trim(isset($pa_options['class']) && $pa_options['class'] ? $pa_options['class'] : ''); $vs_element = ''; if (!preg_match("!^[\\d\\.]+px\$!i", $vs_width)) { $vs_width = (int) $vs_width * 6 . "px"; } if (!preg_match("!^[\\d\\.]+px\$!i", $vs_height)) { $vs_height = (int) $vs_height * 16 . "px"; } if ($va_settings['usewysiwygeditor']) { $o_config = Configuration::load(); if (!is_array($va_toolbar_config = $o_config->getAssoc('wysiwyg_editor_toolbar'))) { $va_toolbar_config = array(); } AssetLoadManager::register("ckeditor"); $vs_element = "<script type='text/javascript'>jQuery(document).ready(function() {\n\t\t\t\t\t\tvar ckEditor = CKEDITOR.replace( '{fieldNamePrefix}" . $pa_element_info['element_id'] . "_{n}',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttoolbar : " . json_encode(array_values($va_toolbar_config)) . ", /* this does the magic */\n\t\t\t\t\t\t\twidth: '{$vs_width}',\n\t\t\t\t\t\t\theight: '{$vs_height}',\n\t\t\t\t\t\t\ttoolbarLocation: 'top',\n\t\t\t\t\t\t\tenterMode: CKEDITOR.ENTER_BR\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\tckEditor.on('instanceReady', function(){ \n\t\t\t\t\t\t\t ckEditor.document.on( 'keydown', function(e) {if (caUI && caUI.utils) { caUI.utils.showUnsavedChangesWarning(true); } });\n\t\t\t\t\t\t});\n \t});\t\t\t\t\t\t\t\t\t\n</script>"; } $va_opts = array('size' => $vs_width, 'height' => $vs_height, 'value' => '{{' . $pa_element_info['element_id'] . '}}', 'maxlength' => $va_settings['maxChars'], 'class' => $vs_class, 'id' => '{fieldNamePrefix}' . $pa_element_info['element_id'] . '_{n}', 'class' => "{$vs_class}" . ($va_settings['usewysiwygeditor'] ? " ckeditor" : '')); if (caGetOption('readonly', $pa_options, false)) { $va_opts['disabled'] = 1; } $vs_element .= caHTMLTextInput('{fieldNamePrefix}' . $pa_element_info['element_id'] . '_{n}', $va_opts); if ($va_settings['isDependentValue']) { AssetLoadManager::register('displayTemplateParser'); $t_element = new ca_metadata_elements($pa_element_info['element_id']); $va_elements = $t_element->getElementsInSet($t_element->getHierarchyRootID()); $va_element_dom_ids = array(); foreach ($va_elements as $vn_i => $va_element) { if ($va_element['datatype'] == __CA_ATTRIBUTE_VALUE_CONTAINER__) { continue; } $va_element_dom_ids[$va_element['element_code']] = "#{fieldNamePrefix}" . $va_element['element_id'] . "_{n}"; } $vs_element .= "<script type='text/javascript'>jQuery(document).ready(function() {\n \t\t\t\t\tjQuery('#{fieldNamePrefix}" . $pa_element_info['element_id'] . "_{n}').html(caDisplayTemplateParser.processDependentTemplate('" . addslashes($va_settings['dependentValueTemplate']) . "', " . json_encode($va_element_dom_ids, JSON_FORCE_OBJECT) . "));\n \t\t\t\t"; $vs_element .= "jQuery('" . join(", ", $va_element_dom_ids) . "').bind('keyup', function(e) { \n \t\t\t\t\tjQuery('#{fieldNamePrefix}" . $pa_element_info['element_id'] . "_{n}').html(caDisplayTemplateParser.processDependentTemplate('" . addslashes($va_settings['dependentValueTemplate']) . "', " . json_encode($va_element_dom_ids, JSON_FORCE_OBJECT) . "));\n \t\t\t\t});"; $vs_element .= "});</script>"; } $vs_bundle_name = $vs_lookup_url = null; if (isset($pa_options['t_subject']) && is_object($pa_options['t_subject'])) { $vs_bundle_name = $pa_options['t_subject']->tableName() . '.' . $pa_element_info['element_code']; if ($pa_options['request']) { if (isset($pa_options['lookupUrl']) && $pa_options['lookupUrl']) { $vs_lookup_url = $pa_options['lookupUrl']; } else { $vs_lookup_url = caNavUrl($pa_options['request'], 'lookup', 'AttributeValue', 'Get', array('max' => 500, 'bundle' => $vs_bundle_name)); } } } if ($va_settings['suggestExistingValues'] && $vs_lookup_url && $vs_bundle_name) { $vs_element .= "<script type='text/javascript'>\n \t\t\t\t\tjQuery('#{fieldNamePrefix}" . $pa_element_info['element_id'] . "_{n}').autocomplete( \n\t\t\t\t\t\t{ \n\t\t\t\t\t\t\tsource: '{$vs_lookup_url}',\n\t\t\t\t\t\t\tminLength: 3, delay: 800\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n \t\t\t\t</script>\n"; } return $vs_element; }
/** * Returns HTML form element for editing of setting * * Options: * * 'name' => sets the name of the HTML form element explicitly, otherwise 'setting_<name_of_setting>' is used * 'id' => sets the id of the HTML form element explicitly, otherwise 'setting_<name_of_setting>' is used * 'value' => sets the value of the HTML form element explicitly, otherwise the current value for the setting in the loaded row is used * 'label_id' => sets the id of the label for the setting form element (used to link tools tips to the label); if not set then the default is to set it to 'setting_<name_of_setting>_label' */ public function settingHTMLFormElement($ps_setting, $pa_options = null) { if (!$this->isValidSetting($ps_setting)) { return false; } $va_available_settings = $this->getAvailableSettings(); $va_properties = $va_available_settings[$ps_setting]; if (isset($pa_options['name'])) { $vs_input_name = $pa_options['name']; } else { $vs_input_name = "setting_{$ps_setting}"; } if (isset($pa_options['id'])) { $vs_input_id = $pa_options['id']; } else { $vs_input_id = "setting_{$ps_setting}"; } if (isset($pa_options['value'])) { $vs_value = $pa_options['value']; } else { $vs_value = $this->getSetting(trim($ps_setting)); } if (isset($pa_options['label_id'])) { $vs_label_id = $pa_options['label_id']; } else { $vs_label_id = "setting_{$ps_setting}_label"; } $vs_return = "\n" . '<div class="formLabel" id="' . $vs_input_id . '_container">' . "\n"; $vs_return .= '<span id="' . $vs_label_id . '" class="' . $vs_label_id . '">' . $va_properties['label'] . '</span>'; if ($vs_help_text = $pa_options['helpText']) { $vs_return .= "<a href='#' onclick='jQuery(\"#" . str_replace(".", "_", $vs_label_id) . "_help_text\").slideToggle(250); return false;' class='settingsKeyButton'>" . _t('Key') . "</a>"; } $vs_return .= '<br />' . "\n"; if ($vs_help_text) { $vs_return .= "\n<div id='" . str_replace(".", "_", $vs_label_id) . "_help_text' class='settingsKey'>{$vs_help_text}</div>\n"; } switch ($va_properties['displayType']) { # -------------------------------------------- case DT_FIELD: $vb_takes_locale = false; if (isset($va_properties['takesLocale']) && $va_properties['takesLocale']) { $vb_takes_locale = true; $va_locales = ca_locales::getLocaleList(array('sort_field' => '', 'sort_order' => 'asc', 'index_by_code' => true, 'available_for_cataloguing_only' => true)); } else { $va_locales = array('_generic' => array()); } foreach ($va_locales as $vs_locale => $va_locale_info) { if ($vb_takes_locale && sizeof($va_locales) > 1) { $vs_locale_label = " (" . $va_locale_info['name'] . ")"; $vs_input_name_suffix = '_' . $vs_locale; } else { if ($vb_takes_locale) { $vs_input_name_suffix = '_' . $vs_locale; } else { $vs_input_name_suffix = $vs_locale_label = ''; } } if ($vs_locale != '_generic' && is_array($vs_value)) { // _generic means this setting doesn't take a locale if (!($vs_text_value = $vs_value[$va_locale_info['locale_id']])) { $vs_text_value = is_array($vs_value) && isset($vs_value[$va_locale_info['code']]) ? $vs_value[$va_locale_info['code']] : ''; } } else { $vs_text_value = $vs_value; } $vs_return .= caHTMLTextInput($vs_input_name . $vs_input_name_suffix, array('size' => $va_properties["width"], 'height' => $va_properties["height"], 'value' => $vs_text_value, 'id' => $vs_input_id)) . "{$vs_locale_label}<br/>\n"; } break; # -------------------------------------------- # -------------------------------------------- case DT_CHECKBOXES: $va_attributes = array('value' => '1', 'id' => $vs_input_id); if ((int) $vs_value === 1) { $va_attributes['checked'] = '1'; } if (isset($va_properties['hideOnSelect'])) { if (!is_array($va_properties['hideOnSelect'])) { $va_properties['hideOnSelect'] = array($va_properties['hideOnSelect']); } $va_ids = array(); foreach ($va_properties['hideOnSelect'] as $vs_n) { $va_ids[] = "#" . $pa_options['id_prefix'] . "_{$vs_n}_container"; } $va_attributes['onchange'] = 'jQuery(this).prop("checked") ? jQuery("' . join(",", $va_ids) . '").slideUp(250).find("input, textarea").val("") : jQuery("' . join(",", $va_ids) . '").slideDown(250);'; } $vs_return .= caHTMLCheckboxInput($vs_input_name, $va_attributes, array()); break; # -------------------------------------------- # -------------------------------------------- case DT_COLORPICKER: $va_attributes = array('value' => $vs_value, 'id' => $vs_input_id); $vs_return .= caHTMLHiddenInput($vs_input_name, $va_attributes, array()); $vs_return .= "<div id='{$vs_input_id}_colorchip' class='colorpicker_chip' style='background-color: #{$vs_value}'><!-- empty --></div>"; $vs_return .= "<script type='text/javascript'>jQuery(document).ready(function() { jQuery('#{$vs_input_name}_colorchip').ColorPicker({\n\t\t\t\t\t\t\t\tonShow: function (colpkr) {\n\t\t\t\t\t\t\t\t\tjQuery(colpkr).fadeIn(500);\n\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tonHide: function (colpkr) {\n\t\t\t\t\t\t\t\t\tjQuery(colpkr).fadeOut(500);\n\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tonChange: function (hsb, hex, rgb) {\n\t\t\t\t\t\t\t\t\tjQuery('#{$vs_input_name}').val(hex);\n\t\t\t\t\t\t\t\t\tjQuery('#{$vs_input_name}_colorchip').css('backgroundColor', '#' + hex);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tcolor: jQuery('#" . $pa_options["name"] . "').val()\n\t\t\t\t\t\t\t})}); </script>\n"; JavascriptLoadManager::register('jquery', 'colorpicker'); break; # -------------------------------------------- # -------------------------------------------- case DT_SELECT: include_once __CA_MODELS_DIR__ . '/ca_relationship_types.php'; $vn_width = isset($va_properties['width']) && strlen($va_properties['width']) > 0 ? $va_properties['width'] : "100px"; $vn_height = isset($va_properties['height']) && strlen($va_properties['height']) > 0 ? $va_properties['height'] : "50px"; $vs_select_element = ''; if (($vs_rel_table = $va_properties['useRelationshipTypeList']) || ($vb_locale_list = (bool) $va_properties['useLocaleList']) || ($vs_list_code = $va_properties['useList']) || ($vb_show_lists = (bool) $va_properties['showLists'] || (bool) $va_properties['showVocabularies'])) { if ($vs_rel_table) { $t_rel = new ca_relationship_types(); $va_rels = $t_rel->getRelationshipInfo($vs_rel_table); $va_rel_opts = array(); if (isset($va_properties['allowNull']) && $va_properties['allowNull']) { $va_rel_opts['-'] = null; } foreach ($va_rels as $vn_type_id => $va_rel_type_info) { if (!$va_rel_type_info['parent_id']) { continue; } $va_rel_opts[$va_rel_type_info['typename'] . '/' . $va_rel_type_info['typename_reverse']] = $va_rel_type_info['type_id']; } } else { if ($vb_locale_list) { include_once __CA_MODELS_DIR__ . '/ca_locales.php'; $va_rel_opts = array_flip(ca_locales::getLocaleList(array('return_display_values' => true))); } else { if ($vb_show_lists) { include_once __CA_MODELS_DIR__ . '/ca_lists.php'; $t_list = new ca_lists(); $va_lists = caExtractValuesByUserLocale($t_list->getListOfLists()); $va_rel_opts = array(); foreach ($va_lists as $vn_list_id => $va_list_info) { if ($va_properties['showVocabularies'] && !$va_list_info['use_as_vocabulary']) { continue; } $va_rel_opts[$va_list_info['name'] . ' (' . $va_list_info['list_code'] . ')'] = $vn_list_id; } } } } $va_attr = array(); if ($vn_height > 1) { $va_attr['multiple'] = 1; $vs_input_name .= '[]'; } $va_opts = array('id' => $vs_input_id, 'width' => $vn_width, 'height' => $vn_height); if ($vn_height > 1) { if ($vs_value && !is_array($vs_value)) { $vs_value = array($vs_value); } $va_opts['values'] = $vs_value; } else { if (is_array($vs_value)) { $va_opts['value'] = array_pop($vs_value); } else { if ($vs_value) { $va_opts['value'] = $vs_value; } else { $va_opts['value'] = null; } } } if ($vs_list_code) { $t_list = new ca_lists(); if (!isset($va_opts['value'])) { $va_opts['value'] = -1; } // make sure default list item is never selected $vs_select_element = $t_list->getListAsHTMLFormElement($vs_list_code, $vs_input_name, $va_attr, $va_opts); } else { if (!isset($va_opts['value'])) { $va_opts['value'] = -1; } // make sure default list item is never selected $vs_select_element = caHTMLSelect($vs_input_name, $va_rel_opts, $va_attr, $va_opts); } } else { if (strlen($va_properties['showSortableBundlesFor']) > 0) { require_once __CA_MODELS_DIR__ . '/ca_metadata_elements.php'; $o_dm = Datamodel::load(); if (!($t_rel = $o_dm->getInstanceByTableName($va_properties['showSortableBundlesFor'], true))) { break; } $va_elements = ca_metadata_elements::getSortableElements($va_properties['showSortableBundlesFor']); $va_select_opts = array(_t('User defined sort order') => '', _t('Order created') => 'relation_id', _t('Preferred label') => $va_properties['showSortableBundlesFor'] . ".preferred_labels." . $t_rel->getLabelDisplayField()); foreach ($va_elements as $vn_element_id => $va_element) { if (!$va_element['display_label']) { continue; } $va_select_opts[_t('Element: %1', $va_element['display_label'])] = $va_properties['showSortableBundlesFor'] . "." . $va_element['element_code']; } $va_opts = array('id' => $vs_input_id, 'width' => $vn_width, 'height' => $vn_height, 'value' => is_array($vs_value) ? $vs_value[0] : $vs_value, 'values' => is_array($vs_value) ? $vs_value : array($vs_value)); $vs_select_element = caHTMLSelect($vs_input_name, $va_select_opts, array(), $va_opts); } elseif ((int) $va_properties['showSortableElementsFor'] > 0) { require_once __CA_MODELS_DIR__ . '/ca_metadata_elements.php'; $t_element = new ca_metadata_elements($va_properties['showSortableElementsFor']); if (!$t_element->getPrimaryKey()) { return ''; } $va_elements = $t_element->getElementsInSet(); $va_select_opts = array(_t('Order created') => ''); foreach ($va_elements as $vn_i => $va_element) { if ((int) $va_element['element_id'] == (int) $va_properties['showSortableElementsFor']) { continue; } if (!$va_element['display_label']) { continue; } $va_select_opts[_t('Element: %1', $va_element['display_label'])] = $va_element['element_code']; } $va_opts = array('id' => $vs_input_id, 'width' => $vn_width, 'height' => $vn_height, 'value' => is_array($vs_value) ? $vs_value[0] : $vs_value, 'values' => is_array($vs_value) ? $vs_value : array($vs_value)); $vs_select_element = caHTMLSelect($vs_input_name, $va_select_opts, array(), $va_opts); } elseif ((int) $va_properties['showMetadataElementsWithDataType'] > 0) { require_once __CA_MODELS_DIR__ . '/ca_metadata_elements.php'; $va_rep_elements = ca_metadata_elements::getElementsAsList(true, $va_properties['table'], null, true, false, true, array($va_properties['showMetadataElementsWithDataType'])); if (is_array($va_rep_elements)) { $va_select_opts = array(); foreach ($va_rep_elements as $vs_element_code => $va_element_info) { $va_select_opts[$va_element_info['display_label']] = $vs_element_code; } $va_opts = array('id' => $vs_input_id, 'width' => $vn_width, 'height' => $vn_height, 'value' => is_array($vs_value) ? $vs_value[0] : $vs_value, 'values' => is_array($vs_value) ? $vs_value : array($vs_value)); $vs_select_element = caHTMLSelect($vs_input_name, $va_select_opts, array(), $va_opts); } } else { // Regular drop-down with configured options if ($vn_height > 1) { $va_attr['multiple'] = 1; $vs_input_name .= '[]'; } $va_opts = array('id' => $vs_input_id, 'width' => $vn_width, 'height' => $vn_height, 'value' => is_array($vs_value) ? $vs_value[0] : $vs_value, 'values' => is_array($vs_value) ? $vs_value : array($vs_value)); if (!isset($va_opts['value'])) { $va_opts['value'] = -1; } // make sure default list item is never selected $vs_select_element = caHTMLSelect($vs_input_name, $va_properties['options'], array(), $va_opts); } } if ($vs_select_element) { $vs_return .= $vs_select_element; } else { return ''; } break; # -------------------------------------------- # -------------------------------------------- default: break; # -------------------------------------------- } $vs_return .= '</div>' . "\n"; TooltipManager::add('.' . $vs_label_id, "<h3>" . $va_properties["label"] . "</h3>" . $va_properties["description"]); return $vs_return; }
print caHTMLTextInput('sourceUrl', array('id' => 'caSourceUrl', 'class' => 'urlBg'), array('width' => '300px')); ?> </p> </div> </div> </div> <div class='bundleLabel' id="caSourceTextContainer"> <span class="formLabelText"><?php print _t('Data as text'); ?> </span> <div class="bundleContainer"> <div class="caLabelList" > <p> <?php print caHTMLTextInput('sourceText', array('id' => 'caSourceText'), array('width' => '600px', 'height' => 3)); ?> </p> </div> </div> </div> <div class='bundleLabel'> <span class="formLabelText"><?php print _t('Log level'); ?> </span> <div class="bundleContainer"> <div class="caLabelList"> <p> <?php print caHTMLSelect('logLevel', caGetLogLevels(), array('id' => 'caLogLevel'), array('value' => $va_last_settings['logLevel']));
/** * Return HTML form element for editing. * * @param array $pa_element_info An array of information about the metadata element being edited * @param array $pa_options array Options include: * forSearch = settings and options regarding visual text editor are ignored [Default=false] * class = the CSS class to apply to all visible form elements [Default=lookupBg] * width = the width of the form element [Default=field width defined in metadata element definition] * height = the height of the form element [Default=field height defined in metadata element definition] * request = the RequestHTTP object for the current request; required for lookups to work [Default is null] * * @return string */ public function htmlFormElement($pa_element_info, $pa_options = null) { $vs_class = trim(isset($pa_options['class']) && $pa_options['class'] ? $pa_options['class'] : ''); if (isset($pa_options['forSearch']) && $pa_options['forSearch']) { return caHTMLTextInput("{fieldNamePrefix}" . $pa_element_info['element_id'] . "_{n}", array('id' => "{fieldNamePrefix}" . $pa_element_info['element_id'] . "_{n}", 'value' => $pa_options['value'], 'class' => $vs_class), $pa_options); } $o_config = Configuration::load(); $va_settings = $this->getSettingValuesFromElementArray($pa_element_info, array('fieldWidth', 'fieldHeight')); $vs_element = '<div id="lcsh_' . $pa_element_info['element_id'] . '_input{n}">' . caHTMLTextInput('{fieldNamePrefix}' . $pa_element_info['element_id'] . '_autocomplete{n}', array('size' => isset($pa_options['width']) && $pa_options['width'] > 0 ? $pa_options['width'] : $va_settings['fieldWidth'], 'height' => isset($pa_options['height']) && $pa_options['height'] > 0 ? $pa_options['height'] : $va_settings['fieldHeight'], 'value' => '{{' . $pa_element_info['element_id'] . '}}', 'maxlength' => 512, 'id' => "lcsh_" . $pa_element_info['element_id'] . "_autocomplete{n}", 'class' => $vs_class ? $vs_class : 'lookupBg')) . caHTMLHiddenInput('{fieldNamePrefix}' . $pa_element_info['element_id'] . '_{n}', array('value' => '{{' . $pa_element_info['element_id'] . '}}', 'id' => '{fieldNamePrefix}' . $pa_element_info['element_id'] . '_{n}')); if ($pa_options['request']) { $vs_url = caNavUrl($pa_options['request'], 'lookup', 'LCSH', 'Get', array('max' => 100, 'element_id' => (int) $pa_element_info['element_id'])); } else { // hardcoded default for testing. $vs_url = '/index.php/lookup/LCSH/Get'; } $vs_element .= " <a href='#' class='caLCSHServiceMoreLink' id='{fieldNamePrefix}" . $pa_element_info['element_id'] . "_link{n}' target='_lcsh_details'>" . _t("More ›") . "</a>"; $vs_element .= '</div>'; $vs_element .= "\n\t\t\t\t<script type='text/javascript'>\n\t\t\t\t\tjQuery(document).ready(function() {\n\t\t\t\t\t\tjQuery('#lcsh_" . $pa_element_info['element_id'] . "_autocomplete{n}').autocomplete(\n\t\t\t\t\t\t\t{ source: '{$vs_url}', minLength: 3, delay: 800, \n\t\t\t\t\t\t\t\tselect: function( event, ui ) {\n\t\t\t\t\t\t\t\t\tjQuery('#{fieldNamePrefix}" . $pa_element_info['element_id'] . "_{n}').val(ui.item.label + ' [' + ui.item.idno + ']|' + ui.item.url);\n \t\t\t\t\t\t\t}\n \t\t\t\t\t\t}\n\t\t\t\t\t\t).click(function() { this.select(); });\n\t\t\t\t\t\t\n\t\t\t\t\t\tif ('{{" . $pa_element_info['element_id'] . "}}') {\n\t\t\t\t\t\t\tvar re = /\\[info:lc([^\\]]+)\\]/; \n\t\t\t\t\t\t\tvar r = re.exec('{{" . $pa_element_info['element_id'] . "}}');\n\t\t\t\t\t\t\tvar lcsh_id = (r) ? r[1] : null;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (!lcsh_id) {\n\t\t\t\t\t\t\t\tre = /\\[sh([^\\]]+)\\]/; \n\t\t\t\t\t\t\t\tvar r = re.exec('{{" . $pa_element_info['element_id'] . "}}');\n\t\t\t\t\t\t\t\tvar lcsh_id = (r) ? '/authorities/subjects/sh' + r[1] : null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (lcsh_id) {\n\t\t\t\t\t\t\t\tjQuery('#{fieldNamePrefix}" . $pa_element_info['element_id'] . "_link{n}').css('display', 'inline').attr('href', 'http://id.loc.gov' + lcsh_id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t</script>\n\t\t\t"; return $vs_element; }
public function htmlFormElement($pa_element_info, $pa_options = null) { $vn_width = isset($pa_options['width']) && $pa_options['width'] > 0 ? $pa_options['width'] : 30; $vn_max_length = 255; return caHTMLTextInput('{fieldNamePrefix}' . $pa_element_info['element_id'] . '_{n}', array('id' => '{fieldNamePrefix}' . $pa_element_info['element_id'] . '_{n}', 'size' => $vn_width, 'value' => '{{' . $pa_element_info['element_id'] . '}}', 'maxlength' => $vn_max_length, 'class' => 'timecodeBg')); }
print _t("Toggle checked"); ?> </a></div> </form> </div> <br class="clear"/> <?php } ?> <div class="col"> <?php print "<span class='header'>" . _t("Create set") . ":</span><br/>"; ?> <form id="caCreateSetFromResults"> <?php print caHTMLTextInput('set_name', array('id' => 'caCreateSetFromResultsInput', 'class' => 'searchSetsTextInput', 'value' => $o_result_context->getSearchExpression()), array('width' => '150px')); print " "; print caHTMLSelect('set_create_mode', array(_t('from results') => 'from_results', _t('from checked') => 'from_checked'), array('id' => 'caCreateSetFromResultsMode', 'class' => 'searchSetsSelect'), array('value' => null, 'width' => '140px')); if ($t_list->getAppConfig()->get('enable_set_type_controls')) { print $t_list->getListAsHTMLFormElement('set_types', 'set_type', array('id' => 'caCreateSetTypeID', 'class' => 'searchSetsSelect'), array('value' => null, 'width' => '140px')); } print caBusyIndicatorIcon($this->request, array('id' => 'caCreateSetFromResultsIndicator')) . "\n"; ?> <a href='#' onclick="caCreateSetFromResults(); return false;" class="button"><?php print _t('Create'); ?> ›</a> <?php if ($this->request->user->canDoAction('can_batch_edit_' . $t_subject->tableName())) { print '<div class="searchSetsBatchEdit">' . caHTMLCheckboxInput('batch_edit', array('id' => 'caCreateSetBatchEdit', 'value' => 1)) . " " . _t('Open set for batch editing') . "</div>\n"; }
<td class="formLabel"><?php print $t_group->getFieldInfo('ca_base_path', 'LABEL'); ?> </td> <td class="formLabel"><?php print _t("Base path for %1 target", $t_mapping->get('target')); ?> </td> </tr> <tr> <td class="caMappingGroupInfo"> <span id="<?php print $vs_id_prefix; ?> _group_name_{n}" style="display: none;"><?php print caHTMLTextInput('{fieldNamePrefix}name_{n}', array('id' => '{fieldNamePrefix}name_{n}', 'value' => '{name}'), array('width' => 30)); ?> </span> <span id="<?php print $vs_id_prefix; ?> _name_display_{n}">{name}</span> </td> <td class="caMappingGroupInfo"> <span id="<?php print $vs_id_prefix; ?> _ca_base_path_{n}" style="display: none;"><em><?php print _t('Not set'); ?> </em></span>
print caHTMLRadioButtonInput("{$vs_id_prefix}_derivative_options_mode", array('value' => 'timecode', 'id' => "{$vs_id_prefix}derivative_options_mode_timecode")) . ' ' . _t('Update using frame at timecode') . ' '; print caHTMLTextInput("{$vs_id_prefix}_derivative_options_mode_timecode_value", array('id' => "{$vs_id_prefix}_derivative_options_mode_timecode_value", 'class' => 'timecodeBg', 'onclick' => "jQuery('#{$vs_id_prefix}derivative_options_mode_timecode').attr('checked', '1');"), array("width" => 30, "height" => 1)); ?> </td> <td> </td> </tr> <?php break; case 'Document': ?> <tr> <td><?php print caHTMLRadioButtonInput("{$vs_id_prefix}_derivative_options_mode", array('value' => 'page', 'id' => "{$vs_id_prefix}_derivative_options_mode_page")) . ' ' . _t('Update using page #') . ' '; print caHTMLTextInput("{$vs_id_prefix}_derivative_options_mode_page_value", array('id' => "{$vs_id_prefix}_derivative_options_mode_page_value", 'onclick' => "jQuery('#{$vs_id_prefix}_derivative_options_mode_page').attr('checked', '1');"), array("width" => 4, "height" => 1)); ?> </td> <td> </td> </tr> <?php break; } ?> </table> <div class="objectRepresentationMediaDisplayDerivativeHeader"><?php print _t("Update preview versions") . ":"; ?>
<h1><?php print _t('Check out: choose user'); ?> </h1> <div class=""caLibraryUIContainer"> <div class="caLibraryFindAutocompleteContainer"> <form> <div class="caLibraryFindAutocompleteLabel"><?php print _t('Name of user checking out item'); ?> </div> <?php print caHTMLTextInput('user', array('id' => 'user_autocomplete'), array('width' => '500px', 'autocomplete' => 'off')); ?> </form> </div> <div class="caLibrarySubmitListContainer"> <?php print caJSButton($this->request, __CA_NAV_BUTTON_SAVE__, _t('Next'), 'nextButton', array(), array()); ?> </div> </div> <script type="text/javascript"> jQuery(document).ready(function() { jQuery('#nextButton').hide(); jQuery('#user_autocomplete').autocomplete( { source: '<?php
/** * * */ public function htmlFormElement($pa_element_info, $pa_options = null) { $o_config = Configuration::load(); $va_settings = $this->getSettingValuesFromElementArray($pa_element_info, array('fieldWidth', 'fieldHeight')); $vs_element = '<div id="infoservice_' . $pa_element_info['element_id'] . '_input{n}">' . caHTMLTextInput('{fieldNamePrefix}' . $pa_element_info['element_id'] . '_autocomplete{n}', array('size' => isset($pa_options['width']) && $pa_options['width'] > 0 ? $pa_options['width'] : $va_settings['fieldWidth'], 'height' => isset($pa_options['height']) && $pa_options['height'] > 0 ? $pa_options['height'] : $va_settings['fieldHeight'], 'value' => '{{' . $pa_element_info['element_id'] . '}}', 'maxlength' => 512, 'id' => "infoservice_" . $pa_element_info['element_id'] . "_autocomplete{n}", 'class' => 'lookupBg')) . caHTMLHiddenInput('{fieldNamePrefix}' . $pa_element_info['element_id'] . '_{n}', array('value' => '{{' . $pa_element_info['element_id'] . '}}', 'id' => '{fieldNamePrefix}' . $pa_element_info['element_id'] . '_{n}')); if ($pa_options['request']) { $vs_url = caNavUrl($pa_options['request'], 'lookup', 'InformationService', 'Get', array('max' => 100, 'element_id' => $pa_element_info['element_id'])); $vs_detail_url = caNavUrl($pa_options['request'], 'lookup', 'InformationService', 'GetDetail', array('element_id' => $pa_element_info['element_id'])); } else { // hardcoded default for testing. $vs_url = '/index.php/lookup/InformationService/Get'; $vs_detail_url = '/index.php/lookup/InformationService/GetDetail'; } $vs_element .= " <a href='#' class='caInformationServiceMoreLink' id='{fieldNamePrefix}" . $pa_element_info['element_id'] . "_link{n}'>" . _t("More ›") . "</a>"; $vs_element .= "<div id='{fieldNamePrefix}" . $pa_element_info['element_id'] . "_detail{n}' class='caInformationServiceDetail'>" . ($pa_options['request'] ? caBusyIndicatorIcon($pa_options['request']) : '') . "</div></div>"; $vs_element .= "\n\t\t\t\t<script type='text/javascript'>\n\t\t\t\t\tjQuery(document).ready(function() {\n\t\t\t\t\t\tjQuery('#infoservice_" . $pa_element_info['element_id'] . "_autocomplete{n}').autocomplete(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tminLength: 3,delay: 800,\n\t\t\t\t\t\t\t\tsource: '{$vs_url}',\n\t\t\t\t\t\t\t\tselect: function(event, ui) {\n\t\t\t\t\t\t\t\t\tjQuery('#{fieldNamePrefix}" . $pa_element_info['element_id'] . "_{n}').val(ui.item.label + '|' + ui.item.idno + '|' + ui.item.url);\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t).click(function() { this.select(); });\n\t\t\t\t\t\t\n\t\t\t\t\t\tif ('{{" . $pa_element_info['element_id'] . "}}') {\n\t\t\t\t\t\t\tvar re = /\\[([A-Za-z]+:\\/\\/[^\\]]+)\\]/; \n\t\t\t\t\t\t\tvar infoservice = re.exec('{{" . $pa_element_info['element_id'] . "}}');\n\t\t\t\t\t\t\tif (infoservice && infoservice.length > 1) { \n\t\t\t\t\t\t\t\tjQuery('#{fieldNamePrefix}" . $pa_element_info['element_id'] . "_link{n}').css('display', 'inline').on('click', function(e) {\n\t\t\t\t\t\t\t\t\tif (jQuery('#{fieldNamePrefix}" . $pa_element_info['element_id'] . "_detail{n}').css('display') == 'none') {\n\t\t\t\t\t\t\t\t\t\tjQuery('#{fieldNamePrefix}" . $pa_element_info['element_id'] . "_detail{n}').slideToggle(250, function() { \n\t\t\t\t\t\t\t\t\t\t\tjQuery('#{fieldNamePrefix}" . $pa_element_info['element_id'] . "_detail{n}').load('{$vs_detail_url}/id/{n}');\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tjQuery('#{fieldNamePrefix}" . $pa_element_info['element_id'] . "_link{n}').html('" . addslashes(_t("Less ›")) . "');\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tjQuery('#{fieldNamePrefix}" . $pa_element_info['element_id'] . "_detail{n}').slideToggle(250);\n\t\t\t\t\t\t\t\t\t\tjQuery('#{fieldNamePrefix}" . $pa_element_info['element_id'] . "_link{n}').html('" . addslashes(_t("More ›")) . "');\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t</script>\n\t\t\t"; return $vs_element; }
* http://www.CollectiveAccess.org * * ---------------------------------------------------------------------- */ $vs_id_prefix = 'caClientLibraryCheckin'; $t_order_item = new ca_commerce_order_items(); $va_initial_values = array(); ?> <div class="sectionBox"> <?php print $vs_control_box = caFormControlBox(caFormSubmitButton($this->request, __CA_NAV_BUTTON_SAVE__, _t("Check-in"), 'caClientLibraryCheckinForm') . ' ' . caNavButton($this->request, __CA_NAV_BUTTON_CANCEL__, _t("Cancel"), 'client/library', 'CheckIn', 'Index', array()), '', ''); print caFormTag($this->request, 'Save', 'caClientLibraryCheckinForm', null, 'post', 'multipart/form-data', '_top', array()); ?> <div class="formLabel"> <?php print _t('Item') . ': ' . caHTMLTextInput('search', array('value' => '', 'width' => '300px', 'id' => 'caCheckInObjectSearch')); ?> <a href="#" id='caCheckInButton' class='button' id='caClientLibraryCustomerInfoMoreButton'><?php print _t('Find'); ?> ›</a> </div> <div id="<?php print $vs_id_prefix . '_item'; ?> "> <?php // // Template to generate controls for creating new item
/** * Return HTML form element for editing. * * @param array $pa_element_info An array of information about the metadata element being edited * @param array $pa_options array Options include: * class = the CSS class to apply to all visible form elements [Default=currencyBg] * width = the width of the form element [Default=field width defined in metadata element definition] * height = the height of the form element [Default=field height defined in metadata element definition] * * @return string */ public function htmlFormElement($pa_element_info, $pa_options = null) { $va_settings = $this->getSettingValuesFromElementArray($pa_element_info, array('fieldWidth', 'fieldHeight', 'minValue', 'maxValue')); $vs_class = trim(isset($pa_options['class']) && $pa_options['class'] ? $pa_options['class'] : 'currencyBg'); return caHTMLTextInput('{fieldNamePrefix}' . $pa_element_info['element_id'] . '_{n}', array('size' => isset($pa_options['width']) && $pa_options['width'] > 0 ? $pa_options['width'] : $va_settings['fieldWidth'], 'height' => isset($pa_options['height']) && $pa_options['height'] > 0 ? $pa_options['height'] : $va_settings['fieldHeight'], 'value' => '{{' . $pa_element_info['element_id'] . '}}', 'maxlength' => $va_settings['maxChars'], 'id' => '{fieldNamePrefix}' . $pa_element_info['element_id'] . '_{n}', 'class' => $vs_class)); }
<h2><?php print _t('Vimeo integration is set up and ready to go!'); ?> </h2> <?php break; case 'request': default: ?> <div><?php print _t("If you authorized our app on the Vimeo page, please enter the verification code here."); ?> </div> <?php print caFormTag($this->request, 'verify', 'vimeo_verify_form', 'vimeo/Auth'); print caHTMLTextInput('verify_code'); print caFormSubmitButton($this->request, __CA_NAV_BUTTON_GO__, _t("Submit"), 'vimeo_verify_form'); ?> </form> <div><?php print _t('Here is the link to the Vimeo authorization page again: %1', '<a href="' . $this->getVar('authorize_link') . '" target="_blank">Vimeo</a>'); ?> </div> <?php break; } } else { ?> <div><?php print _t('You need to go to the Vimeo page and authorize our app to use your account.'); ?>
</div> <div id="caClientOrderCustomerPOSubForm" style="display: none;"> <table> <?php print "<tr><td>" . _t('Purchase order date') . "</td><td>" . caHTMLTextInput('purchase_order_date', array('width' => 40, 'class' => 'dateBg', 'value' => $va_payment_info['purchase_order_date'])) . "</td></tr>\n"; print "<tr><td>" . _t('Purchase order #') . "</td><td>" . caHTMLTextInput('purchase_order_number', array('width' => 40, 'value' => $va_payment_info['purchase_order_number'])) . "</td></tr>\n"; ?> </table> </div> <div id="caClientOrderCustomerCheckSubForm" style="display: none;"> <table> <?php print "<tr><td>" . _t('Payee') . "</td><td>" . caHTMLTextInput('check_payee', array('width' => 60, 'value' => $va_payment_info['check_payee'])) . "</td></tr>\n"; print "<tr><td>" . _t('Bank') . "</td><td>" . caHTMLTextInput('check_bank', array('width' => 60, 'value' => $va_payment_info['check_bank'])) . "</td></tr>\n"; print "<tr><td>" . _t('Check date') . "</td><td>" . caHTMLTextInput('check_date', array('width' => 40, 'class' => 'dateBg', 'value' => $va_payment_info['check_date'])) . "</td></tr>\n"; print "<tr><td>" . _t('Check #') . "</td><td>" . caHTMLTextInput('check_number', array('width' => 40, 'value' => $va_payment_info['check_number'])) . "</td></tr>\n"; ?> </table> </div> </div> <div id='caPaymentStatusContainer'> <?php print $t_order->htmlFormElement('payment_received_on', $vs_form_element_format, array('width' => $vn_width, 'field_errors' => $va_errors[$vs_f], 'id' => 'caPaymentDate', 'classname' => 'dateBg')); print $t_order->htmlFormElement('payment_status', $vs_form_element_format, array('width' => $vn_width, 'field_errors' => $va_errors[$vs_f], 'id' => 'caPaymentStatus')); ?> </div> <?php } else { // // Simple read-only type display when user is not allowed to change payment details //
?> </td><td> <?php print $t_order->htmlFormElement('shipped_on_date', null, array('FIELD_TYPE' => 'FT_DATETIME', 'DISPLAY_TYPE' => DT_FIELD, 'value' => $va_filter_options['shipped_on_date'])); ?> </td> <td align="right" valign="top"> <?php print caNavHeaderButton($this->request, __CA_NAV_BUTTON_ADD_LARGE__, _t("New order"), 'client', 'OrderEditor', 'CustomerInfo', array('order_id' => 0)); ?> </td> </tr> <tr> <td colspan="3"> <div class="formLabel"><?php print _t('Search') . "<br/>" . caHTMLTextInput('search', array('value' => $va_filter_options['search']), array('width' => '400px')); ?> </div> </td><td> <?php print $t_order->htmlFormElement('shipping_method', null, array('nullOption' => '-')); ?> </td> <td align="right" valign="bottom"> <?php print caFormSubmitButton($this->request, __CA_NAV_BUTTON_GO__, _t('Filter'), 'caViewOptions', array()); print caJSButton($this->request, __CA_NAV_BUTTON_CANCEL__, _t('Reset'), 'caViewOptions', array('onclick' => 'jQuery("#searchToolsBox input").val("");')); ?> </td> </tr> </table>
* http://www.CollectiveAccess.org * * ---------------------------------------------------------------------- */ $va_events_list = $this->getVar('events_list'); ?> <script language="JavaScript" type="text/javascript"> /* <![CDATA[ */ $(document).ready(function(){ $('#caEventList').caFormatListTable(); }); /* ]]> */ </script> <div class="sectionBox"> <?php print caFormControlBox('<div class="list-filter">' . _t('Filter') . ': <input type="text" name="filter" value="" onkeyup="$(\'#caEventList\').caFilterTable(this.value); return false;" size="20"/></div>', '', _t('Date range') . ': ' . caFormTag($this->request, 'Index', 'eventsLogSearch') . caHTMLTextInput('search', array('size' => 25, 'value' => $this->getVar('events_list_search'))) . "</form>"); ?> <table id="caEventList" class="listtable" width="100%" border="0" cellpadding="0" cellspacing="1"> <thead> <tr> <th class="list-header-unsorted"> <?php print _t('Date/time'); ?> </th> <th class="list-header-unsorted"> <?php print _t('Type'); ?> </th>
print caHTMLTextInput("{fieldNamePrefix}media_url_{n}", array('id' => '{fieldNamePrefix}media_url_{n}', 'class' => 'urlBg uploadInput'), array('width' => '410px')); ?> </td> </tr> <?php } if ((bool) $this->request->getAppConfig()->get($t_subject->tableName() . '_allow_relationships_to_existing_representations')) { ?> <tr> <td class='formLabel'><?php print caHTMLRadioButtonInput('{fieldNamePrefix}upload_type{n}', array('id' => '{fieldNamePrefix}upload_type_search{n}', 'class' => '{fieldNamePrefix}upload_type{n}', 'value' => 'search'), array('checked' => $vs_default_upload_type == 'search' ? 1 : 0)) . ' ' . _t('using existing'); ?> </td> <td class='formLabel'> <?php print caHTMLTextInput('{fieldNamePrefix}autocomplete{n}', array('value' => '{{label}}', 'id' => '{fieldNamePrefix}autocomplete{n}', 'class' => 'lookupBg uploadInput'), array('width' => '425px')); if ($t_item_rel && $t_item_rel->hasField('type_id')) { ?> <select name="<?php print $vs_id_prefix; ?> _type_id{n}" id="<?php print $vs_id_prefix; ?> _type_id{n}" style="display: none; width: 72px;"></select> <?php } ?> <input type="hidden" name="<?php print $vs_id_prefix; ?>
/** * */ function caDeleteRemapper($po_request, $t_instance) { $vs_instance_table = $t_instance->tableName(); $vn_count = 0; $va_buf = array(); switch ($vs_instance_table) { case 'ca_relationship_types': // get # of relationships using this type $vn_rel_count = $t_instance->getRelationshipCountForType(); $t_rel_instance = $t_instance->getAppDatamodel()->getInstanceByTableNum($t_instance->get('table_num')); if (!$t_rel_instance->load($t_instance->get('table_num'))) { return ''; } if ($vn_rel_count == 1) { $va_buf[] = _t("Type is used by %1 %2", $vn_rel_count, $t_rel_instance->getProperty('NAME_PLURAL')) . "<br>\n"; } else { $va_buf[] = _t("Type is used by %1 %2", $vn_rel_count, $t_rel_instance->getProperty('NAME_PLURAL')) . "<br>\n"; } $vn_count += $vn_rel_count; $vs_typename = _t('relationship type'); break; default: // Check relationships $va_tables = array('ca_objects', 'ca_object_lots', 'ca_entities', 'ca_places', 'ca_occurrences', 'ca_collections', 'ca_storage_locations', 'ca_list_items', 'ca_loans', 'ca_movements', 'ca_tours', 'ca_tour_stops', 'ca_object_representations'); if (!in_array($t_instance->tableName(), $va_tables)) { return null; } foreach ($va_tables as $vs_table) { $va_items = $t_instance->getRelatedItems($vs_table); if (!($vn_c = sizeof($va_items))) { continue; } if ($vn_c == 1) { $va_buf[] = _t("Has %1 relationship to %2", $vn_c, caGetTableDisplayName($vs_table, true)) . "<br>\n"; } else { $va_buf[] = _t("Has %1 relationships to %2", $vn_c, caGetTableDisplayName($vs_table, true)) . "<br>\n"; } $vn_count += $vn_c; } // Check attributes if ($vn_datatype = $t_instance->authorityElementDatatype()) { if ($vn_c = $t_instance->getAuthorityElementReferences(array('countOnly' => true))) { if ($vn_c == 1) { $va_buf[] = _t("Is referenced %1 time", $vn_c) . "<br>\n"; } else { $va_buf[] = _t("Is referenced %1 times", $vn_c) . "<br>\n"; } $vn_count += $vn_c; } } $vs_typename = $t_instance->getTypeName(); } $vs_output = ''; if (sizeof($va_buf)) { // add autocompleter for remapping if ($vn_count == 1) { $vs_output .= "<h3 id='caDeleteReferenceCount'>" . _t('This %1 is referenced %2 time', $vs_typename, $vn_count) . ". " . _t('When deleting this %1:', $vs_typename) . "</h3>\n"; } else { $vs_output .= "<h3 id='caDeleteReferenceCount'>" . _t('This %1 is referenced %2 times', $vs_typename, $vn_count) . ". " . _t('When deleting this %1:', $vs_typename) . "</h3>\n"; } $vs_output .= caHTMLRadioButtonInput('referenceHandling', array('value' => 'delete', 'checked' => 1, 'id' => 'caReferenceHandlingDelete')) . ' ' . _t('remove all references') . "<br/>\n"; $vs_output .= caHTMLRadioButtonInput('referenceHandling', array('value' => 'remap', 'id' => 'caReferenceHandlingRemap')) . ' ' . _t('transfer references to') . ' ' . caHTMLTextInput('remapTo', array('value' => '', 'size' => 40, 'id' => 'remapTo', 'class' => 'lookupBg', 'disabled' => 1)); $vs_output .= "<a href='#' class='button' onclick='jQuery(\"#remapToID\").val(\"\"); jQuery(\"#remapTo\").val(\"\"); jQuery(\"#caReferenceHandlingClear\").css(\"display\", \"none\"); return false;' style='display: none;' id='caReferenceHandlingClear'>" . _t('Clear') . '</a>'; $vs_output .= caHTMLHiddenInput('remapToID', array('value' => '', 'id' => 'remapToID')); $vs_output .= "<script type='text/javascript'>"; $va_service_info = caJSONLookupServiceUrl($po_request, $t_instance->tableName(), array('noSymbols' => 1, 'noInline' => 1, 'exclude' => (int) $t_instance->getPrimaryKey(), 'table_num' => (int) $t_instance->get('table_num'))); $vs_output .= "jQuery(document).ready(function() {"; $vs_output .= "jQuery('#remapTo').autocomplete(\n\t\t\t\t\t{\n\t\t\t\t\t\tsource: '" . $va_service_info['search'] . "', html: true,\n\t\t\t\t\t\tminLength: 3, delay: 800,\n\t\t\t\t\t\tselect: function(event, ui) {\n\t\t\t\t\t\t\tjQuery('#remapToID').val(ui.item.id);\n\t\t\t\t\t\t\tjQuery('#caReferenceHandlingClear').css('display', 'inline');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);"; $vs_output .= "jQuery('#caReferenceHandlingRemap').click(function() {\n\t\t\t\tjQuery('#remapTo').attr('disabled', false);\n\t\t\t});\n\t\t\tjQuery('#caReferenceHandlingDelete').click(function() {\n\t\t\t\tjQuery('#remapTo').attr('disabled', true);\n\t\t\t});\n\t\t\t"; $vs_output .= "});"; $vs_output .= "</script>\n"; TooltipManager::add('#caDeleteReferenceCount', "<h2>" . _t('References to this %1', $t_instance->getProperty('NAME_SINGULAR')) . "</h2>\n" . join("\n", $va_buf)); } return $vs_output; }
/** * Return HTML form element for editing. * * @param array $pa_element_info An array of information about the metadata element being edited * @param array $pa_options array Options include: * class = the CSS class to apply to all visible form elements [Default=urlBg] * width = the width of the form element [Default=field width defined in metadata element definition] * height = the height of the form element [Default=field height defined in metadata element definition] * t_subject = an instance of the model to which the attribute belongs; required if suggestExistingValues lookups are enabled [Default is null] * request = the RequestHTTP object for the current request; required if suggestExistingValues lookups are enabled [Default is null] * suggestExistingValues = suggest values based on existing input for this element as user types [Default is false] * * @return string */ public function htmlFormElement($pa_element_info, $pa_options = null) { $va_settings = $this->getSettingValuesFromElementArray($pa_element_info, array('fieldWidth', 'fieldHeight', 'minChars', 'maxChars', 'suggestExistingValues')); $vs_class = trim(isset($pa_options['class']) && $pa_options['class'] ? $pa_options['class'] : 'urlBg'); $vs_element = caHTMLTextInput('{fieldNamePrefix}' . $pa_element_info['element_id'] . '_{n}', array('size' => isset($pa_options['width']) && $pa_options['width'] > 0 ? $pa_options['width'] : $va_settings['fieldWidth'], 'height' => isset($pa_options['height']) && $pa_options['height'] > 0 ? $pa_options['height'] : $va_settings['fieldHeight'], 'value' => '{{' . $pa_element_info['element_id'] . '}}', 'maxlength' => $va_settings['maxChars'], 'id' => '{fieldNamePrefix}' . $pa_element_info['element_id'] . '_{n}', 'class' => $vs_class)); $vs_element .= " <a href='#' style='display: none; vertical-align: top;' id='{fieldNamePrefix}" . $pa_element_info['element_id'] . "_link{n}' target='_url_details'>" . _t("Open ›") . "</a>"; $vs_bundle_name = $vs_lookup_url = null; if (isset($pa_options['t_subject']) && is_object($pa_options['t_subject'])) { $vs_bundle_name = $pa_options['t_subject']->tableName() . '.' . $pa_element_info['element_code']; if ($pa_options['request']) { $vs_lookup_url = caNavUrl($pa_options['request'], 'lookup', 'AttributeValue', 'Get', array('bundle' => $vs_bundle_name, 'max' => 500)); } } if ($va_settings['suggestExistingValues'] && $vs_lookup_url && $vs_bundle_name) { $vs_element .= "<script type='text/javascript'>\n \t\t\t\t\tjQuery('#{fieldNamePrefix}" . $pa_element_info['element_id'] . "_{n}').autocomplete( \n\t\t\t\t\t\t{ source: '{$vs_lookup_url}', minLength: 3, delay: 800}\n\t\t\t\t\t);\n \t\t\t\t</script>\n"; } $vs_element .= "\n\t\t\t\t<script type='text/javascript'>\n\t\t\t\t\tif ('{{" . $pa_element_info['element_id'] . "}}') {\n\t\t\t\t\t\t\tjQuery('#{fieldNamePrefix}" . $pa_element_info['element_id'] . "_link{n}').css('display', 'inline').attr('href', '{{" . $pa_element_info['element_id'] . "}}');\n\t\t\t\t\t\t}\n\t\t\t\t</script>\n\t\t\t"; return $vs_element; }
* * This source code is free and modifiable under the terms of * GNU General Public License. (http://www.gnu.org/copyleft/gpl.html). See * the "license.txt" file for details, or visit the CollectiveAccess web site at * http://www.CollectiveAccess.org * * ---------------------------------------------------------------------- */ $va_importer_list = $this->getVar('importer_list'); $vb_importers_available = is_array($va_importer_list) && sizeof($va_importer_list); print $vs_control_box = caFormControlBox(($vb_importers_available ? caFormSubmitButton($this->request, __CA_NAV_BUTTON_SAVE__, _t("Import"), 'caWorldCatResultsForm') : '') . ' ' . caNavButton($this->request, __CA_NAV_BUTTON_CANCEL__, _t("Cancel"), '', '*', '*', 'Index'), '', ''); ?> <form action="#" id="caWorldCatSearchForm"> <div class="formLabel"> <?php print _t('Find in WorldCat') . ': ' . caHTMLTextInput("term", array('value' => '', 'id' => 'caWorldCatTerm'), array('width' => '250px')); ?> <a href="#" id="caWorldCatTermLookup" class="button"><?php print _t('Go'); ?> ›</a> </div> </form> <?php print caFormTag($this->request, 'Run', 'caWorldCatResultsForm', null, 'post', 'multipart/form-data', '_top', array('disableUnsavedChangesWarning' => true, 'noTimestamp' => true)); ?> <div class="<?php print $vb_importers_available ? 'formLabel' : 'formLabelError'; ?> ">
// // The bundle template - used to generate each bundle in the form // ?> <textarea class='caItemTemplate' style='display: none;'> <div id="<?php print $vs_id_prefix; ?> Item_{n}" class="labelInfo"> <span class="formLabelError">{error}</span> <table class="uiScreenItem"> <tr > <td width="200"> <div class="formLabel" id="{fieldNamePrefix}edit_name_{n}" style="display: none;"> <?php print _t("Name") . " " . caHTMLTextInput('{fieldNamePrefix}name_{n}', array('id' => '{fieldNamePrefix}name_{n}', 'value' => '{name}'), array('width' => 40)); ?> <?php print _t("Type") . " " . $t_stop->getTypeListAsHTMLFormElement('{fieldNamePrefix}type_id_{n}'); ?> </div> <span id="{fieldNamePrefix}screen_name_{n}"> {name} <span style="font-weight: normal;">{typename}</span> </span> </td> <td> <div style="float:right;"> <span id="{fieldNamePrefix}edit_{n}"><?php print urldecode(caNavLink($this->request, caNavIcon($this->request, __CA_NAV_BUTTON_EDIT__, null, null, array('graphicsPath' => $this->getVar('graphicsPath'))), '', 'editor/tour_stops', 'TourStopEditor', 'Edit', array('stop_id' => '{stop_id}')));