/** * Returns HTML bundle for picking representations to attach to an object-* relationship * * @param object $po_request The current request * @param $ps_form_name The name of the HTML form this bundle will be part of * * @return string HTML for bundle */ public function getRepresentationChooserHTMLFormBundle($po_request, $ps_form_name, $ps_placement_code, $pa_bundle_settings, $pa_options = null) { $o_view = new View($po_request, $po_request->getViewsDirectoryPath() . '/bundles/'); $o_view->setVar('lookup_urls', caJSONLookupServiceUrl($po_request, $this->getAppDatamodel()->getTableName($this->get('table_num')))); $o_view->setVar('t_subject', $this); $vn_object_id = $this->getLeftTableName() == 'ca_objects' ? $this->get($this->getLeftTableFieldName()) : $this->get($this->getRightTableFieldName()); $o_view->setVar('t_object', $t_object = new ca_objects($vn_object_id)); $o_view->setVar('id_prefix', $ps_form_name); $o_view->setVar('placement_code', $ps_placement_code); $o_view->setVar('element_code', caGetOption(array('elementCode', 'element_code'), $pa_bundle_settings, null)); $o_view->setVar('settings', $pa_bundle_settings); return $o_view->render('ca_object_representation_chooser_html.php'); }
break; } $vb_objects_x_collections_hierarchy_enabled = (bool) $t_subject->getAppConfig()->get('ca_objects_x_collections_hierarchy_enabled'); $vs_disabled_items_mode = $t_subject->getAppConfig()->get($t_subject->tableName() . '_hierarchy_browser_disabled_items_mode'); $vs_disabled_items_mode = $vs_disabled_items_mode ? $vs_disabled_items_mode : 'hide'; $t_object = new ca_objects(); $va_search_lookup_extra_params = array('noInline' => 1); if ($t_subject->getProperty('HIERARCHY_ID_FLD') && ($vn_hier_id = (int) $t_subject->get($t_subject->getProperty('HIERARCHY_ID_FLD')))) { $va_search_lookup_extra_params['currentHierarchyOnly'] = $vn_hier_id; } if (in_array($t_subject->tableName(), array('ca_objects', 'ca_collections')) && $vb_objects_x_collections_hierarchy_enabled) { $va_lookup_urls = array('search' => caNavUrl($this->request, 'lookup', 'ObjectCollectionHierarchy', 'Get', $va_search_lookup_extra_params), 'levelList' => caNavUrl($this->request, 'lookup', 'ObjectCollectionHierarchy', 'GetHierarchyLevel'), 'ancestorList' => caNavUrl($this->request, 'lookup', 'ObjectCollectionHierarchy', 'GetHierarchyAncestorList')); $vs_edit_url = caNavUrl($this->request, 'lookup', 'ObjectCollectionHierarchy', 'Edit') . '/id/'; $vn_init_id = $t_subject->tableName() . "-" . $pn_id; } else { $va_lookup_urls = caJSONLookupServiceUrl($this->request, $t_subject->tableName(), $va_search_lookup_extra_params); $vs_edit_url = caEditorUrl($this->request, $t_subject->tableName()); $vn_init_id = $pn_id; } $vb_strict_type_hierarchy = (bool) $this->request->config->get($t_subject->tableName() . '_enforce_strict_type_hierarchy'); $vs_type_selector = trim($t_subject->getTypeListAsHTMLFormElement("{$vs_id_prefix}type_id", array('id' => "{$vs_id_prefix}typeList"), array('childrenOfCurrentTypeOnly' => $vb_strict_type_hierarchy, 'includeSelf' => !$vb_strict_type_hierarchy, 'directChildrenOnly' => $vb_strict_type_hierarchy))); $pa_bundle_settings = $this->getVar('settings'); $vb_read_only = isset($pa_bundle_settings['readonly']) && $pa_bundle_settings['readonly'] || $this->request->user->getBundleAccessLevel($t_subject->tableName(), 'hierarchy_location') == __CA_BUNDLE_ACCESS_READONLY__; $va_errors = array(); if (is_array($va_action_errors = $this->request->getActionErrors('hierarchy_location'))) { foreach ($va_action_errors as $o_error) { $va_errors[] = $o_error->getErrorDescription(); } } ?>
/** * Return array of columns suitable for use with ca.tableview.js * (implements "spreadsheet" editing UI) * */ public function getInlineEditColumns($pa_display_list, $pa_options = null) { $po_request = isset($pa_options['request']) ? $pa_options['request'] : null; $va_bundle_names = caExtractValuesFromArrayList($pa_display_list, 'bundle_name', array('preserveKeys' => true)); $va_column_spec = array(); foreach ($va_bundle_names as $vn_placement_id => $vs_bundle_name) { if (!(bool) $pa_display_list[$vn_placement_id]['allowInlineEditing']) { // Read only $va_column_spec[] = array('data' => str_replace(".", "-", $vs_bundle_name), 'readOnly' => !(bool) $pa_display_list[$vn_placement_id]['allowInlineEditing']); continue; } switch ($pa_display_list[$vn_placement_id]['inlineEditingType']) { case DT_SELECT: $va_column_spec[] = array('data' => str_replace(".", "-", $vs_bundle_name), 'readOnly' => false, 'type' => 'DT_SELECT', 'source' => $pa_display_list[$vn_placement_id]['inlineEditingListValues'], 'strict' => true); break; case DT_LOOKUP: if ($po_request) { $va_urls = caJSONLookupServiceUrl($po_request, 'ca_list_items'); $va_column_spec[] = array('data' => str_replace(".", "-", $vs_bundle_name), 'readOnly' => false, 'type' => 'DT_LOOKUP', 'list' => $pa_display_list[$vn_placement_id]['inlineEditingList'], 'lookupURL' => $va_urls['search'], 'strict' => false); } break; default: $va_column_spec[] = array('data' => str_replace(".", "-", $vs_bundle_name), 'readOnly' => false, 'type' => 'DT_FIELD'); break; } } return $va_column_spec; }
</div> <div class="quickAddSectionBox" id="{$vs_form_name}Container<?php print $vs_field_name_prefix . $vs_n; ?> "> <div class="quickAddFormTopPadding"><!-- empty --></div> <div class="quickAddErrorContainer" id="<?php print $vs_form_name; ?> Errors<?php print $vs_field_name_prefix . $vs_n; ?> "> </div> <?php // Output hierarchy browser $va_lookup_urls = caJSONLookupServiceUrl($this->request, 'ca_storage_locations'); ?> <div class='bundleLabel'><span class="formLabelText" id="ObjectEditorForm_ca_entities"><?php print _t('Location in hierarchy'); ?> </span><br/> <div class="bundleContainer"> <div class="caItemList"> <div class="hierarchyBrowserContainer"> <div id="caQuickAdd<?php print $vs_form_name; ?> HierarchyBrowser" class="hierarchyBrowserSmall"> <!-- Content for hierarchy browser is dynamically inserted here by ca.hierbrowser --> </div><!-- end hierbrowser --> <div>
/** * Returns HTML bundle for adding/editing/deleting placements from a display * * @param object $po_request The current request * @param $ps_form_name The name of the HTML form this bundle will be part of * @return string HTML for bundle */ public function getBundleDisplayHTMLFormBundle($po_request, $ps_form_name, $ps_placement_code, $pa_options = null) { if (!$this->haveAccessToDisplay($po_request->getUserID(), __CA_BUNDLE_DISPLAY_EDIT_ACCESS__)) { return null; } $o_view = new View($po_request, $po_request->getViewsDirectoryPath() . '/bundles/'); $o_view->setVar('lookup_urls', caJSONLookupServiceUrl($po_request, $this->getAppDatamodel()->getTableName($this->get('table_num')))); $o_view->setVar('t_display', $this); $o_view->setVar('placement_code', $ps_placement_code); $o_view->setVar('id_prefix', $ps_form_name); return $o_view->render('ca_bundle_display_placements.php'); }
/** * @param string $ps_bundle_name * @param string $ps_placement_code * @param array $pa_bundle_settings * @param array $pa_options Supported options are: * config * viewPath * graphicsPath * request */ public function getBundleFormHTML($ps_bundle_name, $ps_placement_code, $pa_bundle_settings, $pa_options, &$ps_bundle_label = null) { global $g_ui_locale; $vb_batch = isset($pa_options['batch']) && $pa_options['batch'] ? true : false; // Check if user has access to this bundle if ($pa_options['request']->user->getBundleAccessLevel($this->tableName(), $ps_bundle_name) == __CA_BUNDLE_ACCESS_NONE__) { return; } $vb_read_only_because_deaccessioned = $this->hasField('is_deaccessioned') && (bool) $this->getAppConfig()->get('deaccession_dont_allow_editing') && (bool) $this->get('is_deaccessioned'); if ($vb_read_only_because_deaccessioned && $ps_bundle_name != 'ca_objects_deaccession') { $pa_bundle_settings['readonly'] = true; } // Check if user has access to this type // The type id is not set for batch edits so skip this check for those. if (!$vb_batch && (bool) $this->getAppConfig()->get('perform_type_access_checking')) { $vn_type_access = $pa_options['request']->user->getTypeAccessLevel($this->tableName(), $this->getTypeID()); if ($vn_type_access == __CA_BUNDLE_ACCESS_NONE__) { return; } if ($vn_type_access == __CA_BUNDLE_ACCESS_READONLY__) { $pa_bundle_settings['readonly'] = true; } } // Check if user has access to this source if ((bool) $this->getAppConfig()->get('perform_source_access_checking')) { $vn_source_access = $pa_options['request']->user->getSourceAccessLevel($this->tableName(), $this->getSourceID()); if ($vn_source_access == __CA_BUNDLE_ACCESS_NONE__) { return; } if ($vn_source_access == __CA_BUNDLE_ACCESS_READONLY__) { $pa_bundle_settings['readonly'] = true; } } if ((bool) $this->getAppConfig()->get('perform_item_level_access_checking') && $this->getPrimaryKey()) { $vn_item_access = $this->checkACLAccessForUser($pa_options['request']->user); if ($vn_item_access == __CA_ACL_NO_ACCESS__) { return; } if ($vn_item_access == __CA_ACL_READONLY_ACCESS__) { $pa_bundle_settings['readonly'] = true; } } $va_info = $this->getBundleInfo($ps_bundle_name); if (!($vs_type = $va_info['type'])) { return null; } if (isset($pa_options['config']) && is_object($pa_options['config'])) { $o_config = $pa_options['config']; } else { $o_config = $this->getAppConfig(); } if (!($vs_required_marker = $o_config->get('required_field_marker'))) { $vs_required_marker = '[' . _t('REQUIRED') . ']'; } $vs_label = $vs_label_text = null; $ps_bundle_name_proc = str_replace("ca_attribute_", "", $ps_bundle_name); $va_violations = null; if (($va_dictionary_entry = ca_metadata_dictionary_entries::getEntry($ps_bundle_name_proc, $pa_bundle_settings)) || ($va_dictionary_entry = ca_metadata_dictionary_entries::getEntry($this->tableName() . '.' . $ps_bundle_name_proc, $pa_bundle_settings))) { $pa_bundle_settings['definition'][$g_ui_locale] = $va_dictionary_entry['settings']['definition']; if ($va_dictionary_entry['settings']['mandatory']) { $pa_bundle_settings['definition'][$g_ui_locale] = $this->getAppConfig()->get('required_field_marker') . $pa_bundle_settings['definition'][$g_ui_locale]; } $va_violations = $this->getMetadataDictionaryRuleViolations($ps_bundle_name); if (is_array($va_violations) && sizeof($va_violations)) { $va_violation_text = array(); foreach ($va_violations as $va_violation) { $va_violation_text[] = "<li class='caMetadataDictionaryViolation'><span class='caMetadataDictionaryViolation" . ucfirst(strtolower($va_violation['level'])) . "'>" . $va_violation['levelDisplay'] . '</span>: ' . $va_violation['violationMessage'] . "</li>"; } $pa_bundle_settings['definition'][$g_ui_locale] = "<div class='caMetadataDictionaryViolationsList'><div class='caMetadataDictionaryViolationsListHeading'>" . _t('These problems require attention:') . "</div><ol>" . join("\n", $va_violation_text) . "</ol></div>\n" . $pa_bundle_settings['definition'][$g_ui_locale] . "<br style='clear: both;'/>"; } if (!caGetOption($g_ui_locale, $pa_bundle_settings['description'], null)) { $pa_bundle_settings['description'][$g_ui_locale] = $va_dictionary_entry['settings']['definition']; } } // is label for this bundle forced in bundle settings? if (isset($pa_bundle_settings['label']) && isset($pa_bundle_settings['label'][$g_ui_locale]) && $pa_bundle_settings['label'][$g_ui_locale]) { $vs_label = $vs_label_text = $pa_bundle_settings['label'][$g_ui_locale]; } // Set bundle level documentation URL $vs_documentation_url = trim(isset($pa_bundle_settings['documentation_url']) && $pa_bundle_settings['documentation_url'] ? $pa_bundle_settings['documentation_url'] : ''); $vs_element = ''; $va_errors = array(); switch ($vs_type) { # ------------------------------------------------- case 'preferred_label': case 'nonpreferred_label': if (is_array($va_error_objects = $pa_options['request']->getActionErrors($ps_bundle_name)) && sizeof($va_error_objects)) { $vs_display_format = $o_config->get('bundle_element_error_display_format'); foreach ($va_error_objects as $o_e) { $va_errors[] = $o_e->getErrorDescription(); } } else { $vs_display_format = $o_config->get('bundle_element_display_format'); } $pa_options['dontCache'] = true; // we *don't* want to cache labels here $vs_element = $vs_type === 'preferred_label' ? $this->getPreferredLabelHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $pa_bundle_settings, $pa_options) : $this->getNonPreferredLabelHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $pa_bundle_settings, $pa_options); $vs_field_id = "ca_{$vs_type}_" . $pa_options['formName'] . "_{$ps_placement_code}"; if (!$vs_label_text) { $vs_label_text = $va_info['label']; } $vs_label = '<span class="formLabelText" id="' . $vs_field_id . '">' . $vs_label_text . '</span>'; if ($vs_type == 'preferred_label' && $o_config->get('show_required_field_marker') && $o_config->get('require_preferred_label_for_' . $this->tableName())) { $vs_label .= ' ' . $vs_required_marker; } $vs_description = isset($pa_bundle_settings['description'][$g_ui_locale]) ? $pa_bundle_settings['description'][$g_ui_locale] : null; if ($vs_label && $vs_description) { TooltipManager::add('#' . $vs_field_id, "<h3>{$vs_label_text}</h3>{$vs_description}"); } break; # ------------------------------------------------- # ------------------------------------------------- case 'intrinsic': if (isset($pa_bundle_settings['label'][$g_ui_locale]) && $pa_bundle_settings['label'][$g_ui_locale]) { $pa_options['label'] = $pa_bundle_settings['label'][$g_ui_locale]; } if (!$pa_options['label']) { $pa_options['label'] = $this->getFieldInfo($ps_bundle_name, 'LABEL'); } $vs_view_path = isset($pa_options['viewPath']) && $pa_options['viewPath'] ? $pa_options['viewPath'] : $pa_options['request']->getViewsDirectoryPath(); $o_view = new View($pa_options['request'], "{$vs_view_path}/bundles/"); $va_lookup_url_info = caJSONLookupServiceUrl($pa_options['request'], $this->tableName()); if ($this->getFieldInfo($ps_bundle_name, 'IDENTITY')) { $o_view->setVar('form_element', ($vn_id = (int) $this->get($ps_bundle_name)) ? $vn_id : "<" . _t('Not yet issued') . ">"); } else { $vb_read_only = $pa_bundle_settings['readonly'] || $pa_options['request']->user->getBundleAccessLevel($this->tableName(), $ps_bundle_name) == __CA_BUNDLE_ACCESS_READONLY__ ? true : false; $va_additional_field_options = array(); if ($vn_width = caGetOption('width', $pa_bundle_settings)) { $va_additional_field_options['width'] = $vn_width; } if ($vn_height = caGetOption('height', $pa_bundle_settings)) { $va_additional_field_options['height'] = $vn_height; } $o_view->setVar('form_element', $this->htmlFormElement($ps_bundle_name, $this->getProperty('ID_NUMBERING_ID_FIELD') == $ps_bundle_name ? $o_config->get('idno_element_display_format_without_label') : $o_config->get('bundle_element_display_format_without_label'), array_merge(array('readonly' => $vb_read_only, 'error_icon' => $pa_options['request']->getThemeUrlPath() . "/graphics/icons/warning_small.gif", 'progress_indicator' => $pa_options['request']->getThemeUrlPath() . "/graphics/icons/indicator.gif", 'lookup_url' => $va_lookup_url_info['intrinsic'], 'name' => $ps_placement_code . $pa_options['formName'] . $ps_bundle_name), $pa_options, $va_additional_field_options))); } $o_view->setVar('errors', $pa_options['request']->getActionErrors($ps_bundle_name)); if (method_exists($this, "getDefaultMediaPreviewVersion")) { $o_view->setVar('display_media', $this->getMediaTag($ps_bundle_name, $this->getDefaultMediaPreviewVersion($ps_bundle_name))); } $vs_field_id = 'ca_intrinsic_' . $pa_options['formName'] . '_' . $ps_placement_code; $vs_label = '<span class="formLabelText" id="' . $vs_field_id . '">' . $pa_options['label'] . '</span>'; if ($o_config->get('show_required_field_marker')) { if ($this->getFieldInfo($ps_bundle_name, 'FIELD_TYPE') == FT_TEXT && is_array($va_bounds = $this->getFieldInfo($ps_bundle_name, 'BOUNDS_LENGTH')) && $va_bounds[0] > 0) { $vs_label .= ' ' . $vs_required_marker; } else { if (in_array($this->getFieldInfo($ps_bundle_name, 'FIELD_TYPE'), array(FT_NUMBER, FT_HISTORIC_DATERANGE, FT_DATERANGE)) && !$this->getFieldInfo($ps_bundle_name, 'IS_NULL')) { $vs_label .= ' ' . $vs_required_marker; } } } // Set access inheritance default if ((bool) $this->getAppConfig()->get($this->tableName() . '_allow_access_inheritance') && $this->hasField('access_inherit_from_parent') && !$this->getPrimaryKey()) { $this->set('access_inherit_from_parent', (bool) $this->getAppConfig()->get($this->tableName() . '_access_inheritance_default') ? 1 : 0); } $o_view->setVar('bundle_name', $ps_bundle_name); $o_view->setVar('id_prefix', $pa_options['formName']); $o_view->setVar('placement_code', $ps_placement_code); $o_view->setVar('settings', $pa_bundle_settings); $o_view->setVar('t_instance', $this); $o_view->setVar('batch', (bool) (isset($pa_options['batch']) && $pa_options['batch'])); $vs_element = $o_view->render('intrinsic.php', true); $vs_description = isset($pa_bundle_settings['description'][$g_ui_locale]) && $pa_bundle_settings['description'][$g_ui_locale] ? $pa_bundle_settings['description'][$g_ui_locale] : $this->getFieldInfo($ps_bundle_name, 'DESCRIPTION'); if ($pa_options['label'] && $vs_description) { TooltipManager::add('#' . $vs_field_id, "<h3>" . $pa_options['label'] . "</h3>{$vs_description}"); } if (isset($pa_bundle_settings['forACLAccessScreen']) && $pa_bundle_settings['forACLAccessScreen']) { $vs_display_format = '^ELEMENT'; } else { $vs_display_format = $o_config->get('bundle_element_display_format'); } break; # ------------------------------------------------- # ------------------------------------------------- case 'attribute': // bundle names for attributes are simply element codes prefixed with 'ca_attribute_' // since getAttributeHTMLFormBundle() takes a straight element code we have to strip the prefix here $vs_attr_element_code = str_replace('ca_attribute_', '', $ps_bundle_name); $vs_display_format = $o_config->get('bundle_element_display_format'); $vs_element = $this->getAttributeHTMLFormBundle($pa_options['request'], $pa_options['formName'], $vs_attr_element_code, $ps_placement_code, $pa_bundle_settings, $pa_options); $vs_field_id = 'ca_attribute_' . $pa_options['formName'] . '_' . $vs_attr_element_code; if (!$vs_label_text) { $vs_label_text = $this->getAttributeLabel($vs_attr_element_code); } if ($vb_batch) { $t_element = $this->_getElementInstance($vs_attr_element_code); $va_type_restrictions = $t_element->getTypeRestrictionsForDisplay($this->tableNum()); if (sizeof($va_type_restrictions)) { $vs_restriction_list = join("; ", $va_type_restrictions); $vs_label = '<span class="formLabelText" id="' . $vs_field_id . '">' . $vs_label_text . '</span> <span class="formLabelSubtext" id="subtext_' . $vs_field_id . '">(' . caTruncateStringWithEllipsis($vs_restriction_list, 75) . ')</span>'; TooltipManager::add("#subtext_{$vs_field_id}", "<h3>" . _t("Restricted to types") . "</h3>" . join("<br/>", $va_type_restrictions)); } else { $vs_label = '<span class="formLabelText" id="' . $vs_field_id . '">' . $vs_label_text . '</span>'; } } else { $vs_label = '<span class="formLabelText" id="' . $vs_field_id . '">' . $vs_label_text . '</span>'; } // fall back to element description if applicable $vs_description = isset($pa_bundle_settings['description'][$g_ui_locale]) && $pa_bundle_settings['description'][$g_ui_locale] ? $pa_bundle_settings['description'][$g_ui_locale] : $this->getAttributeDescription($vs_attr_element_code); $vs_documentation_url = trim(isset($pa_bundle_settings['documentation_url']) && $pa_bundle_settings['documentation_url'] ? $pa_bundle_settings['documentation_url'] : ($vs_documentation_url = $this->getAttributeDocumentationUrl($vs_attr_element_code))); if ($t_element = $this->_getElementInstance($vs_attr_element_code)) { if ($o_config->get('show_required_field_marker') && ($t_element->getSetting('minChars') > 0 || (bool) $t_element->getSetting('mustNotBeBlank') || (bool) $t_element->getSetting('requireValue'))) { $vs_label .= ' ' . $vs_required_marker; } } if ($vs_label_text && $vs_description) { TooltipManager::add('#' . $vs_field_id, "<h3>{$vs_label_text}</h3>{$vs_description}"); } break; # ------------------------------------------------- # ------------------------------------------------- case 'related_table': if (is_array($va_error_objects = $pa_options['request']->getActionErrors($ps_bundle_name, 'general')) && sizeof($va_error_objects)) { $vs_display_format = $o_config->get('bundle_element_error_display_format'); foreach ($va_error_objects as $o_e) { $va_errors[] = $o_e->getErrorDescription(); } } else { $vs_display_format = $o_config->get('bundle_element_display_format'); } switch ($ps_bundle_name) { # ------------------------------- case 'ca_object_representations': $pa_options['start'] = 0; $pa_options['limit'] = 20; $vs_element = $this->getRelatedHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_bundle_name, $ps_placement_code, $pa_bundle_settings, $pa_options); break; case 'ca_entities': case 'ca_places': case 'ca_occurrences': case 'ca_objects': case 'ca_collections': case 'ca_list_items': case 'ca_storage_locations': case 'ca_loans': case 'ca_movements': case 'ca_tour_stops': if ($this->_CONFIG->get($ps_bundle_name . '_disable')) { return ''; } // don't display if master "disable" switch is set $pa_options['start'] = 0; $vs_element = $this->getRelatedHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_bundle_name, $ps_placement_code, $pa_bundle_settings, $pa_options); break; # ------------------------------- # ------------------------------- case 'ca_object_lots': if ($this->_CONFIG->get($ps_bundle_name . '_disable')) { break; } // don't display if master "disable" switch is set $pa_lot_options = array('batch' => $vb_batch); if ($this->tableName() != 'ca_object_lots' && ($vn_lot_id = $pa_options['request']->getParameter('lot_id', pInteger))) { $pa_lot_options['force'][] = $vn_lot_id; } $vs_element = $this->getRelatedHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_bundle_name, $ps_placement_code, $pa_bundle_settings, $pa_lot_options); break; # ------------------------------- # ------------------------------- case 'ca_representation_annotations': //if (!method_exists($this, "getAnnotationType") || !$this->getAnnotationType()) { continue; } // don't show bundle if this representation doesn't support annotations //if (!method_exists($this, "useBundleBasedAnnotationEditor") || !$this->useBundleBasedAnnotationEditor()) { continue; } // don't show bundle if this representation doesn't use bundles to edit annotations $pa_options['fields'] = array('ca_representation_annotations.status', 'ca_representation_annotations.access', 'ca_representation_annotations.props', 'ca_representation_annotations.representation_id'); $vs_element = $this->getRepresentationAnnotationHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $pa_bundle_settings, $pa_options); break; # ------------------------------- # ------------------------------- default: $vs_element = "'{$ps_bundle_name}' is not a valid related-table bundle name"; break; # ------------------------------- } if (!$vs_label_text) { $vs_label_text = $va_info['label']; } $vs_label = '<span class="formLabelText" id="' . $pa_options['formName'] . '_' . $ps_placement_code . '">' . $vs_label_text . '</span>'; $vs_description = isset($pa_bundle_settings['description'][$g_ui_locale]) && $pa_bundle_settings['description'][$g_ui_locale] ? $pa_bundle_settings['description'][$g_ui_locale] : null; if ($vs_label_text && $vs_description) { TooltipManager::add('#' . $pa_options['formName'] . '_' . $ps_placement_code, "<h3>{$vs_label}</h3>{$vs_description}"); } break; # ------------------------------------------------- # ------------------------------------------------- case 'special': if (is_array($va_error_objects = $pa_options['request']->getActionErrors($ps_bundle_name, 'general')) && sizeof($va_error_objects)) { $vs_display_format = $o_config->get('bundle_element_error_display_format'); foreach ($va_error_objects as $o_e) { $va_errors[] = $o_e->getErrorDescription(); } } else { $vs_display_format = $o_config->get('bundle_element_display_format'); } $vb_read_only = $pa_options['request']->user->getBundleAccessLevel($this->tableName(), $ps_bundle_name) == __CA_BUNDLE_ACCESS_READONLY__ ? true : false; if (!$pa_bundle_settings['readonly']) { $pa_bundle_settings['readonly'] = !isset($pa_bundle_settings['readonly']) || !$pa_bundle_settings['readonly'] ? $vb_read_only : true; } switch ($ps_bundle_name) { # ------------------------------- // This bundle is only available when editing objects of type ca_representation_annotations case 'ca_representation_annotation_properties': if ($vb_batch) { return null; } // not supported in batch mode if (!$this->useInEditor()) { return null; } foreach ($this->getPropertyList() as $vs_property) { $vs_element .= $this->getPropertyHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $vs_property, $pa_options); } break; # ------------------------------- // This bundle is only available when editing objects of type ca_sets # ------------------------------- // This bundle is only available when editing objects of type ca_sets case 'ca_set_items': if ($vb_batch) { return null; } // not supported in batch mode $vs_element .= $this->getSetItemHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $pa_options, $pa_bundle_settings); break; # ------------------------------- // This bundle is only available for types which support set membership # ------------------------------- // This bundle is only available for types which support set membership case 'ca_sets': require_once __CA_MODELS_DIR__ . "/ca_sets.php"; // need to include here to avoid dependency errors on parse/compile $t_set = new ca_sets(); $vs_element .= $t_set->getItemSetMembershipHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $this->tableNum(), $this->getPrimaryKey(), $pa_options['request']->getUserID(), $pa_bundle_settings, $pa_options); break; # ------------------------------- // This bundle is only available when editing objects of type ca_editor_uis # ------------------------------- // This bundle is only available when editing objects of type ca_editor_uis case 'ca_editor_ui_screens': if ($vb_batch) { return null; } // not supported in batch mode $vs_element .= $this->getScreenHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $pa_options); break; # ------------------------------- // This bundle is only available when editing objects of type ca_editor_uis # ------------------------------- // This bundle is only available when editing objects of type ca_editor_uis case 'ca_editor_ui_type_restrictions': if ($vb_batch) { return null; } // not supported in batch mode $vs_element .= $this->getTypeRestrictionsHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $pa_options); break; # ------------------------------- // This bundle is only available when editing objects of type ca_editor_ui_screens # ------------------------------- // This bundle is only available when editing objects of type ca_editor_ui_screens case 'ca_editor_ui_screen_type_restrictions': $t_editor = new ca_editor_uis($this->get('ui_id')); $vs_element .= $this->getTypeRestrictionsHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $pa_options); break; # ------------------------------- // This bundle is only available when editing objects of type ca_editor_ui_screens # ------------------------------- // This bundle is only available when editing objects of type ca_editor_ui_screens case 'ca_editor_ui_bundle_placements': if ($vb_batch) { return null; } // not supported in batch mode $vs_element .= $this->getPlacementsHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $pa_options); break; # ------------------------------- // This bundle is only available when editing objects of type ca_tours # ------------------------------- // This bundle is only available when editing objects of type ca_tours case 'ca_tour_stops_list': if ($vb_batch) { return null; } // not supported in batch mode $vs_element .= $this->getTourStopHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $pa_options); break; # ------------------------------- // Hierarchy navigation bar for hierarchical tables # ------------------------------- // Hierarchy navigation bar for hierarchical tables case 'hierarchy_navigation': if ($vb_batch) { return null; } // not supported in batch mode if ($this->isHierarchical()) { $vs_element .= $this->getHierarchyNavigationHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, array(), $pa_bundle_settings, $pa_options); } break; # ------------------------------- // Hierarchical item location control # ------------------------------- // Hierarchical item location control case 'hierarchy_location': if ($vb_batch) { return null; } // not supported in batch mode if ($this->isHierarchical()) { $vs_element .= $this->getHierarchyLocationHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, array(), $pa_bundle_settings, $pa_options); } break; # ------------------------------- // This bundle is only available when editing objects of type ca_search_forms # ------------------------------- // This bundle is only available when editing objects of type ca_search_forms case 'ca_search_form_placements': if ($vb_batch) { return null; } // not supported in batch mode //if (!$this->getPrimaryKey()) { return ''; } $vs_element .= $this->getSearchFormHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $pa_options); break; # ------------------------------- // This bundle is only available when editing objects of type ca_bundle_displays # ------------------------------- // This bundle is only available when editing objects of type ca_bundle_displays case 'ca_bundle_display_placements': if ($vb_batch) { return null; } // not supported in batch mode //if (!$this->getPrimaryKey()) { return ''; } $vs_element .= $this->getBundleDisplayHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $pa_options); break; # ------------------------------- // This bundle is only available when editing objects of type ca_bundle_displays # ------------------------------- // This bundle is only available when editing objects of type ca_bundle_displays case 'ca_bundle_display_type_restrictions': $vs_element .= $this->getTypeRestrictionsHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $pa_options); break; # ------------------------------- // # ------------------------------- // case 'ca_users': if (!$pa_options['request']->user->canDoAction('is_administrator') && $pa_options['request']->getUserID() != $this->get('user_id')) { return ''; } // don't allow setting of per-user access if user is not owner $vs_element .= $this->getUserHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $this->tableNum(), $this->getPrimaryKey(), $pa_options['request']->getUserID(), $pa_options); break; # ------------------------------- // # ------------------------------- // case 'ca_user_groups': if (!$pa_options['request']->user->canDoAction('is_administrator') && $pa_options['request']->getUserID() != $this->get('user_id')) { return ''; } // don't allow setting of group access if user is not owner $vs_element .= $this->getUserGroupHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $this->tableNum(), $this->getPrimaryKey(), $pa_options['request']->getUserID(), $pa_options); break; # ------------------------------- # ------------------------------- case 'settings': if ($vb_batch) { return null; } // not supported in batch mode $vs_element .= $this->getHTMLSettingFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $this->tableNum(), $pa_options); break; # ------------------------------- // This bundle is only available when editing objects of type ca_object_representations # ------------------------------- // This bundle is only available when editing objects of type ca_object_representations case 'ca_object_representations_media_display': if ($vb_batch) { return null; } // not supported in batch mode $vs_element .= $this->getMediaDisplayHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $pa_bundle_settings, $pa_options); break; # ------------------------------- // This bundle is only available when editing objects of type ca_object_representations # ------------------------------- // This bundle is only available when editing objects of type ca_object_representations case 'ca_object_representation_captions': if ($vb_batch) { return null; } // not supported in batch mode if (!$this->representationIsOfClass("video")) { return ''; } $vs_element .= $this->getCaptionHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $pa_bundle_settings, $pa_options); break; # ------------------------------- // This bundle is only available for objects # ------------------------------- // This bundle is only available for objects case 'ca_commerce_order_history': if ($vb_batch) { return null; } // not supported in batch mode if (!$pa_options['request']->user->canDoAction('can_manage_clients')) { break; } $vs_label_text = $pa_bundle_settings['order_type'][0] == 'O' ? _t('Order history') : _t('Loan history'); $vs_element .= $this->getCommerceOrderHistoryHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $pa_bundle_settings, $pa_options); break; # ------------------------------- // This bundle is only available for objects # ------------------------------- // This bundle is only available for objects case 'ca_objects_components_list': if ($vb_batch) { return null; } // not supported in batch mode if (!$pa_options['request']->user->canDoAction('can_edit_ca_objects')) { break; } if (!$this->canTakeComponents()) { return null; } $vs_element .= $this->getComponentListHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $pa_bundle_settings, $pa_options); break; # ------------------------------- // This bundle is only available for objects # ------------------------------- // This bundle is only available for objects case 'ca_objects_location': // storage location via ca_objects_x_storage_locations or ca_movements_x_objects if ($vb_batch) { return null; } // not supported in batch mode if (!$this->getPrimaryKey()) { return null; } // not supported for new records if (!$pa_options['request']->user->canDoAction('can_edit_ca_objects')) { break; } $vs_element .= $this->getObjectLocationHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $pa_bundle_settings, $pa_options); break; # ------------------------------- // This bundle is only available for objects # ------------------------------- // This bundle is only available for objects case 'ca_objects_history': // summary of object accession, movement, exhibition and deaccession if ($vb_batch) { return null; } // not supported in batch mode if (!$this->getPrimaryKey()) { return null; } // not supported for new records if (!$pa_options['request']->user->canDoAction('can_edit_ca_objects')) { break; } $vs_element .= $this->getObjectHistoryHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $pa_bundle_settings, $pa_options); break; # ------------------------------- // This bundle is only available for objects # ------------------------------- // This bundle is only available for objects case 'ca_objects_deaccession': // object deaccession information if (!$vb_batch && !$this->getPrimaryKey()) { return null; } // not supported for new records if (!$pa_options['request']->user->canDoAction('can_edit_ca_objects')) { break; } $vs_element .= $this->getObjectDeaccessionHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $pa_bundle_settings, $pa_options); break; # ------------------------------- // This bundle is only available for objects # ------------------------------- // This bundle is only available for objects case 'ca_object_checkouts': // object checkout information if ($vb_batch) { return null; } // not supported in batch mode if (!$vb_batch && !$this->getPrimaryKey()) { return null; } // not supported for new records if (!$pa_options['request']->user->canDoAction('can_edit_ca_objects')) { break; } $vs_element .= $this->getObjectCheckoutsHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $pa_bundle_settings, $pa_options); break; # ------------------------------- // This bundle is only available for relationships that include an object on one end # ------------------------------- // This bundle is only available for relationships that include an object on one end case 'ca_object_representation_chooser': if ($vb_batch) { return null; } // not supported in batch mode $vs_element .= $this->getRepresentationChooserHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $pa_bundle_settings, $pa_options); break; # ------------------------------- // This bundle is only available items that can be used as authority references (object, entities, occurrences, list items, etc.) # ------------------------------- // This bundle is only available items that can be used as authority references (object, entities, occurrences, list items, etc.) case 'authority_references_list': $vs_element .= $this->getAuthorityReferenceListHTMLFormBundle($pa_options['request'], $pa_options['formName'], $ps_placement_code, $pa_bundle_settings, $pa_options); break; # ------------------------------- # ------------------------------- default: $vs_element = "'{$ps_bundle_name}' is not a valid bundle name"; break; # ------------------------------- } if (!$vs_label_text) { $vs_label_text = $va_info['label']; } $vs_label = '<span class="formLabelText" id="' . $pa_options['formName'] . '_' . $ps_placement_code . '">' . $vs_label_text . '</span>'; $vs_description = isset($pa_bundle_settings['description'][$g_ui_locale]) && $pa_bundle_settings['description'][$g_ui_locale] ? $pa_bundle_settings['description'][$g_ui_locale] : null; if ($vs_label_text && $vs_description) { TooltipManager::add('#' . $pa_options['formName'] . '_' . $ps_placement_code, "<h3>{$vs_label}</h3>{$vs_description}"); } break; # ------------------------------------------------- # ------------------------------------------------- default: return "'{$ps_bundle_name}' is not a valid bundle name"; break; # ------------------------------------------------- } if ($vs_documentation_url) { // catch doc URL without protocol aka starting with letters but not http/https if (preg_match("!^[a-z]!", $vs_documentation_url) && !preg_match("!^http[s]?://!", $vs_documentation_url)) { $vs_documentation_url = "http://" . $vs_documentation_url; } $vs_documentation_link = "<a class='bundleDocumentationLink' href='{$vs_documentation_url}' target='_blank'>documentation</a>"; } if (is_array($va_violations) && sizeof($va_violations)) { $vs_label .= "<img src='" . $pa_options['request']->getThemeUrlPath() . "/graphics/icons/warning_small.gif' style='margin-left: 5px;' onclick='jQuery(this).parent().find(\".caMetadataDictionaryDefinitionToggle\").click(); return false;'/>"; } $vs_output = str_replace("^ELEMENT", $vs_element, $vs_display_format); $vs_output = str_replace("^ERRORS", join('; ', $va_errors), $vs_output); $vs_output = str_replace("^LABEL", $vs_label, $vs_output); $vs_output = str_replace("^DOCUMENTATIONLINK", $vs_documentation_link, $vs_output); $ps_bundle_label = $vs_label_text; return caGetOption('contentOnly', $pa_options, false) ? $vs_element : $vs_output; }
/** * Return HTML form elements for all elements using the current format, type and value * * @param string $ps_name Name of form element. Is used as a prefix for each form element. The number element name will be used as a suffix for each. * @param array $pa_errors Passed-by-reference array. Will contain any validation errors for the value, indexed by element. * @param array $pa_options Options include: * id_prefix = Prefix to add to element ID attributes. [Default is null] * for_search_form = Generate a blank form for search. [Default is false] * show_errors = Include error messages next to form elements. [Default is false] * error_icon = Icon to display next to error messages; should be ready-to-display HTML. [Default is null] * readonly = Make all form elements read-only. [Default is false] * request = the current request (an instance of RequestHTTP) [Default is null] * check_for_dupes = perform live checking for duplicate numbers. [Default is false] * progress_indicator = URL for spinner graphic to use while running duplicate number check. [Default is null] * table = Table to perform duplicate number check in. [Default is null] * search_url = Search service URL to use when performing duplicate number check. [Default is null] * row_id = ID of row to exclude from duplicate number check (typically the current record id). [Default is null] * context_id = context ID of row to exclude from duplicate number check (typically the current record context). [Default is null] * @return string HTML output */ public function htmlFormElement($ps_name, &$pa_errors = null, $pa_options = null) { if (!is_array($pa_options)) { $pa_options = array(); } $vs_id_prefix = isset($pa_options['id_prefix']) ? $pa_options['id_prefix'] : null; $vb_generate_for_search_form = isset($pa_options['for_search_form']) ? true : false; $pa_errors = $this->validateValue($this->getValue()); $vs_separator = $this->getSeparator(); $va_element_vals = $this->explodeValue($this->getValue()); if (!is_array($va_elements = $this->getElements())) { $va_elements = array(); } $va_element_controls = $va_element_control_names = array(); $vn_i = 0; $vb_next_in_seq_is_present = false; foreach ($va_elements as $vs_element_name => $va_element_info) { if ($va_element_info['type'] == 'SERIAL' && $va_element_vals[$vn_i] == '') { $vb_next_in_seq_is_present = true; } $vs_tmp = $this->genNumberElement($vs_element_name, $ps_name, $va_element_vals[$vn_i], $vs_id_prefix, $vb_generate_for_search_form, $pa_options); $va_element_control_names[] = $ps_name . '_' . $vs_element_name; if ($pa_options['show_errors'] && isset($pa_errors[$vs_element_name])) { $vs_error_message = preg_replace("/[\"\\']+/", "", $pa_errors[$vs_element_name]); if ($pa_options['error_icon']) { $vs_tmp .= "<a href='#'\" id='caIdno_{$vs_id_prefix}_{$ps_name}'><img src='" . $pa_options['error_icon'] . "' border='0'/></a>"; } else { $vs_tmp .= "<a href='#'\" id='caIdno_{$vs_id_prefix}_{$ps_name}'>[" . _t('Error') . "]</a>"; } TooltipManager::add("#caIdno_{$vs_id_prefix}_{$ps_name}", "<h2>" . _t('Error') . "</h2>{$vs_error_message}"); } $va_element_controls[] = $vs_tmp; $vn_i++; } if (sizeof($va_elements) < sizeof($va_element_vals) && (bool) $this->getFormatPropery('allow_extra_elements', array('default' => 1))) { $va_extra_vals = array_slice($va_element_vals, sizeof($va_elements)); if (($vn_extra_size = (int) $this->getFormatPropery('extra_element_width', array('default' => 10))) < 1) { $vn_extra_size = 10; } foreach ($va_extra_vals as $vn_i => $vs_extra_val) { $va_element_controls[] = "<input type='text' name='{$ps_name}_extra_{$vn_i}' id='{$ps_name}_extra_{$vn_i}' value='" . htmlspecialchars($vs_extra_val, ENT_QUOTES, 'UTF-8') . "' size='{$vn_extra_size}'" . ($pa_options['readonly'] ? ' disabled="1" ' : '') . ">"; $va_element_control_names[] = $ps_name . '_extra_' . $vn_i; } } $vs_js = ''; if ($pa_options['check_for_dupes'] && !$vb_next_in_seq_is_present) { $va_ids = array(); foreach ($va_element_control_names as $vs_element_control_name) { $va_ids[] = "'#" . $vs_id_prefix . $vs_element_control_name . "'"; } $vs_js = '<script type="text/javascript" language="javascript">' . "\n// <![CDATA[\n"; $va_lookup_url_info = caJSONLookupServiceUrl($pa_options['request'], $pa_options['table']); $vs_js .= "\n\t\t\t\tcaUI.initIDNoChecker({\n\t\t\t\t\terrorIcon: '" . $pa_options['error_icon'] . "',\n\t\t\t\t\tprocessIndicator: '" . $pa_options['progress_indicator'] . "',\n\t\t\t\t\tidnoStatusID: 'idnoStatus',\n\t\t\t\t\tlookupUrl: '" . $va_lookup_url_info['idno'] . "',\n\t\t\t\t\tsearchUrl: '" . $pa_options['search_url'] . "',\n\t\t\t\t\tidnoFormElementIDs: [" . join(',', $va_ids) . "],\n\t\t\t\t\tseparator: '" . $this->getSeparator() . "',\n\t\t\t\t\trow_id: " . intval($pa_options['row_id']) . ",\n\t\t\t\t\tcontext_id: " . intval($pa_options['context_id']) . ",\n\n\t\t\t\t\tsingularAlreadyInUseMessage: '" . addslashes(_t('Identifier is already in use')) . "',\n\t\t\t\t\tpluralAlreadyInUseMessage: '" . addslashes(_t('Identifier is already in use %1 times')) . "'\n\t\t\t\t});\n\t\t\t"; $vs_js .= "// ]]>\n</script>\n"; } return join($vs_separator, $va_element_controls) . $vs_js; }
*/ JavascriptLoadManager::register('hierBrowser'); JavascriptLoadManager::register('tabUI'); $t_subject = $this->getVar('t_subject'); $pa_ancestors = $this->getVar('ancestors'); $pn_id = $this->getVar('id'); $ps_id_prefix = $this->getVar('placement_code') . $this->getVar('id_prefix') . 'HierNavigation'; $va_lookup_urls = caJSONLookupServiceUrl($this->request, $t_subject->tableName(), array('noInline' => 1)); $pa_bundle_settings = $this->getVar('settings'); $vb_objects_x_collections_hierarchy_enabled = (bool) $t_subject->getAppConfig()->get('ca_objects_x_collections_hierarchy_enabled'); if (in_array($t_subject->tableName(), array('ca_objects', 'ca_collections')) && $vb_objects_x_collections_hierarchy_enabled) { $va_lookup_urls = array('search' => caNavUrl($this->request, 'lookup', 'ObjectCollectionHierarchy', 'Get'), 'levelList' => caNavUrl($this->request, 'lookup', 'ObjectCollectionHierarchy', 'GetHierarchyLevel'), 'ancestorList' => caNavUrl($this->request, 'lookup', 'ObjectCollectionHierarchy', 'GetHierarchyAncestorList')); $vs_edit_url = caNavUrl($this->request, 'lookup', 'ObjectCollectionHierarchy', 'Edit') . '/id/'; $vn_init_id = $t_subject->tableName() . "-" . $pn_id; } else { $va_lookup_urls = caJSONLookupServiceUrl($this->request, $t_subject->tableName(), array('noInline' => 1)); $vs_edit_url = caEditorUrl($this->request, $t_subject->tableName()); $vn_init_id = $pn_id; } print caEditorBundleShowHideControl($this->request, $ps_id_prefix . $t_subject->tableNum() . 'HierNavigation'); ?> <div class="bundleContainer" id="<?php print $ps_id_prefix . $t_subject->tableNum(); ?> HierNavigation"> <div class="hierNav"> <?php if ($pn_id > 0) { ?> <div class="buttonPosition" <?php
<?php print $vs_control_box = caFormControlBox(caFormSubmitButton($this->request, __CA_NAV_BUTTON_SAVE__, _t("Save"), 'ElementsForm') . ' ' . caNavButton($this->request, __CA_NAV_BUTTON_CANCEL__, _t("Cancel"), '', 'administrate/setup', 'Elements', 'Index', array('element_id' => 0)), '', caNavButton($this->request, __CA_NAV_BUTTON_DELETE__, _t("Delete"), '', 'administrate/setup', 'Elements', 'Delete', array('element_id' => $vn_element_id))); print caFormTag($this->request, 'Save', 'ElementsForm'); ?> <div class="bundleLabel"> <span class="formLabelText" id="_ca_metadata_element_labels_"><?php print _t("Labels"); ?> </span> <?php print $t_element->getPreferredLabelHTMLFormBundle($this->request, 'element_labels', 'element_labels'); ?> </div> <?php $va_lookup_url_info = caJSONLookupServiceUrl($this->request, $t_element->tableName()); $va_options = array('error_icon' => $this->request->getThemeUrlPath() . "/graphics/icons/warning_small.gif", 'progress_indicator' => $this->request->getThemeUrlPath() . "/graphics/icons/indicator.gif", 'lookup_url' => $va_lookup_url_info['intrinsic'], 'no_tooltips' => false); foreach ($t_element->getFormFields() as $vs_f => $va_user_info) { print $t_element->htmlFormElement($vs_f, null, array_merge($va_options, array('field_errors' => $this->request->getActionErrors('field_' . $vs_f)))); } if ($vn_parent_id) { print caHTMLHiddenInput('parent_id', array('value' => $vn_parent_id)); } if (!is_array($va_available_settings = $this->getVar('available_settings'))) { $va_available_settings = array(); } ?> <div id='elementSettingsForm' class='formSettings'> <div class='formLabel'><span id="_ca_metadata_element_labels_"><?php print _t("Datatype-specific options"); ?>
/** * Renders and returns HTML form bundle for management of items in the currently loaded set * * @param object $po_request The current request object * @param string $ps_form_name The name of the form in which the bundle will be rendered * * @return string Rendered HTML bundle for display */ public function getSetItemHTMLFormBundle($po_request, $ps_form_name, $ps_placement_code, $pa_options = null, $pa_bundle_settings = null) { if ($this->getItemCount() > 50) { $vs_thumbnail_version = 'tiny'; } else { $vs_thumbnail_version = "thumbnail"; } $o_view = new View($po_request, $po_request->getViewsDirectoryPath() . '/bundles/'); $o_view->setVar('t_set', $this); $o_view->setVar('id_prefix', $ps_form_name); $o_view->setVar('placement_code', $ps_placement_code); $o_view->setVar('request', $po_request); if ($this->getPrimaryKey()) { $va_items = caExtractValuesByUserLocale($this->getItems(array('thumbnailVersion' => $vs_thumbnail_version, 'user_id' => $po_request->getUserID(), 'template' => caGetOption('displayTemplate', $pa_bundle_settings, null))), null, null, array()); $o_view->setVar('items', $va_items); } else { $o_view->setVar('items', array()); } $o_view->setVar('settings', $pa_bundle_settings); if ($t_row = $this->getItemTypeInstance()) { $o_view->setVar('t_row', $t_row); $o_view->setVar('type_singular', $t_row->getProperty('NAME_SINGULAR')); $o_view->setVar('type_plural', $t_row->getProperty('NAME_PLURAL')); } $o_view->setVar('lookup_urls', caJSONLookupServiceUrl($po_request, $this->_DATAMODEL->getTableName($this->get('table_num')))); return $o_view->render('ca_set_items.php'); }
/** * Returns HTML bundle for adding/editing/deleting placements from a form * * @param object $po_request The current request * @param $ps_form_name The name of the HTML form this bundle will be part of * @return string HTML for bundle */ public function getSearchFormHTMLFormBundle($po_request, $ps_form_name, $pa_options = null) { if (!$this->haveAccessToForm($po_request->getUserID(), __CA_SEARCH_FORM_EDIT_ACCESS__)) { return null; } $vs_view_path = isset($pa_options['viewPath']) && $pa_options['viewPath'] ? $pa_options['viewPath'] : $po_request->getViewsDirectoryPath(); $o_view = new View($po_request, "{$vs_view_path}/bundles/"); $o_view->setVar('lookup_urls', caJSONLookupServiceUrl($po_request, $this->_DATAMODEL->getTableName($this->get('table_num')))); $o_view->setVar('t_form', $this); $o_view->setVar('id_prefix', $ps_form_name); return $o_view->render('ca_search_form_placements.php'); }
* the terms of the provided license as published by Whirl-i-Gig * * CollectiveAccess is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTIES whatsoever, including any implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * 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 * * ---------------------------------------------------------------------- */ $t_subject = $this->getVar('t_subject'); $vs_table = $t_subject->tableName(); $va_lookup_urls = caJSONLookupServiceUrl($this->request, $vs_table, array('noInline' => 1)); $vo_result_context = $this->getVar('result_context'); $vs_type_id_form_element = ''; if ($vn_type_id = intval($this->getVar('type_id'))) { $vs_type_id_form_element = '<input type="hidden" name="type_id" value="' . $vn_type_id . '"/>'; } if (!$this->request->isAjax()) { if (!$this->getVar('uses_hierarchy_browser')) { ?> <?php print caFormTag($this->request, 'Index', 'BasicSearchForm', null, 'post', 'multipart/form-data', '_top', array('disableUnsavedChangesWarning' => true)); print caFormControlBox('<div class="simple-search-box">' . _t('Search') . ': <input type="text" id="BasicSearchInput" name="search" value="' . htmlspecialchars($this->getVar('search'), ENT_QUOTES, 'UTF-8') . '" size="40"/>' . $vs_type_id_form_element . '</div>', '<a href="#" onclick="caSaveSearch(\'BasicSearchForm\', jQuery(\'#BasicSearchInput\').val(), [\'search\']); return false;" class="button">' . _t('Save search') . ' ›</a>', caFormSubmitButton($this->request, __CA_NAV_BUTTON_SEARCH__, _t("Search"), 'BasicSearchForm')); ?> </form> <?php } else {
<div class="quickAddFormTopPadding"><!-- empty --></div> <div class="quickAddErrorContainer" id="<?php print $vs_form_name; ?> Errors<?php print $vs_field_name_prefix . $vs_n; ?> "> </div> <div class="quickAddSectionBox" id="{$vs_form_name}Container<?php print $vs_field_name_prefix . $vs_n; ?> "> <?php // Output hierarchy browser $va_lookup_urls = caJSONLookupServiceUrl($this->request, 'ca_places'); ?> <div class='bundleLabel'><span class="formLabelText"><?php print _t('Location in hierarchy'); ?> </span><br/> <div class="bundleContainer"> <div class="caItemList"> <div class="hierarchyBrowserContainer"> <div id="caQuickAdd<?php print $vs_form_name; ?> HierarchyBrowser" class="hierarchyBrowserSmall"> <!-- Content for hierarchy browser is dynamically inserted here by ca.hierbrowser --> </div><!-- end hierbrowser --> <div>
/** * 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 intrinsic fields in the primary table. If this method can't handle * the bundle (because it is not an intrinsic field in the primary table...) it will return null. * * @param $po_request HTTPRequest * @param $ps_field string * @param $pa_options array * @return string HTML text of form element. Will return null if it is not possible to generate an HTML form widget for the bundle. * */ public function htmlFormElementForSimpleForm($po_request, $ps_field, $pa_options = null) { if (!is_array($pa_options)) { $pa_options = array(); } if (isset($pa_options['width'])) { if ($va_dim = caParseFormElementDimension($pa_options['width'])) { if ($va_dim['type'] == 'pixels') { unset($pa_options['width']); $pa_options['maxPixelWidth'] = $va_dim['dimension']; } } } $va_tmp = explode('.', $ps_field); if ($va_tmp[0] != $this->tableName()) { return null; } if ($this->hasField($va_tmp[1])) { if (caGetOption('asArrayElement', $pa_options, false)) { $ps_field .= "[]"; } if ($this->getProperty('ID_NUMBERING_ID_FIELD') == $va_tmp[1]) { $va_lookup_url_info = caJSONLookupServiceUrl($po_request, $this->tableName()); return $this->htmlFormElement($va_tmp[1], $this->getAppConfig()->get('idno_element_display_format_without_label'), array_merge($pa_options, array('name' => $ps_field, 'error_icon' => $po_request->getThemeUrlPath() . "/graphics/icons/warning_small.gif", 'progress_indicator' => $po_request->getThemeUrlPath() . "/graphics/icons/indicator.gif", 'id' => str_replace(".", "_", $ps_field), 'classname' => isset($pa_options['class']) ? $pa_options['class'] : '', 'value' => isset($pa_options['values'][$ps_field]) ? $pa_options['values'][$ps_field] : '', 'width' => isset($pa_options['width']) && $pa_options['width'] > 0 ? $pa_options['width'] : 30, 'height' => isset($pa_options['height']) && $pa_options['height'] > 0 ? $pa_options['height'] : 1, 'no_tooltips' => true, 'lookup_url' => $va_lookup_url_info['intrinsic'], 'request' => $po_request))); } return $this->htmlFormElement($va_tmp[1], '^ELEMENT', array_merge($pa_options, array('name' => $ps_field, 'id' => str_replace(".", "_", $ps_field), 'classname' => isset($pa_options['class']) ? $pa_options['class'] : '', 'value' => isset($pa_options['values'][$ps_field]) ? $pa_options['values'][$ps_field] : '', 'width' => isset($pa_options['width']) && $pa_options['width'] > 0 ? $pa_options['width'] : 30, 'height' => isset($pa_options['height']) && $pa_options['height'] > 0 ? $pa_options['height'] : 1, 'no_tooltips' => true))); } return null; }
* * ---------------------------------------------------------------------- */ $va_facet = $this->getVar('grouped_facet'); $vs_facet_name = $this->getVar('facet_name'); $va_facet_info = $this->getVar('facet_info'); $vs_grouping_field = $this->getVar('grouping'); $vs_group_mode = $va_facet_info["group_mode"]; $t_item = $this->getVar('t_item'); $t_subject = $this->getVar('t_subject'); $va_types = $this->getVar('type_list'); $va_relationship_types = $this->getVar('relationship_type_list'); $va_row_size = $this->request->config->get('browse_row_size'); $va_td_width = intval(100 / $va_row_size); $vb_individual_group_display = (bool) $this->getVar('individual_group_display'); $va_service_urls = caJSONLookupServiceUrl($this->request, $va_facet_info['table'], array('noInline' => 1, 'noSymbols' => 1)); if (!$va_facet || !$vs_facet_name) { print _t('No facet defined'); return; } $vm_modify_id = $this->getVar('modify') ? $this->getVar('modify') : '0'; ?> <script type="text/javascript"> function caUpdateFacetDisplay(grouping) { caUIBrowsePanel.showBrowsePanel('<?php print $vs_facet_name; ?> ', <?php print intval($vm_modify_id) > 0 ? 'true' : 'false'; ?> , <?php
/** * */ 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; }
* * ---------------------------------------------------------------------- */ JavascriptLoadManager::register('hierBrowser'); JavascriptLoadManager::register('tabUI'); $t_subject = $this->getVar('t_subject'); $vs_subject_label = $t_subject->getLabelForDisplay(); if (($vs_priv_table = $t_subject->tableName()) == 'ca_list_items') { $vs_priv_table = 'ca_lists'; } // actions happen to be on names for ca_lists for ca_list_items $pn_parent_id = $this->getVar('parent_id'); $pa_ancestors = $this->getVar('ancestors'); $pn_id = $this->getVar('id'); $ps_id_prefix = $this->getVar('placement_code') . $this->getVar('id_prefix') . 'HierLocation'; $va_lookup_urls = caJSONLookupServiceUrl($this->request, $t_subject->tableName()); $vb_strict_type_hierarchy = (bool) $this->request->config->get($t_subject->tableName() . '_enforce_strict_type_hierarchy'); $vs_type_selector = trim($t_subject->getTypeListAsHTMLFormElement("{$ps_id_prefix}type_id", array('id' => "{$ps_id_prefix}typeList"), array('childrenOfCurrentTypeOnly' => $vb_strict_type_hierarchy, 'includeSelf' => !$vb_strict_type_hierarchy, 'directChildrenOnly' => $vb_strict_type_hierarchy))); $pa_bundle_settings = $this->getVar('settings'); $vb_read_only = isset($pa_bundle_settings['readonly']) && $pa_bundle_settings['readonly'] || $this->request->user->getBundleAccessLevel($t_subject->tableName(), 'hierarchy_location') == __CA_BUNDLE_ACCESS_READONLY__; $va_errors = array(); if (is_array($va_action_errors = $this->request->getActionErrors('hierarchy_location'))) { foreach ($va_action_errors as $o_error) { $va_errors[] = $o_error->getErrorDescription(); } } ?> <script type="text/javascript"> // // Handle browse header scrolling