2 import(
'Dataface/GlanceList.php');
19 $query =&
$app->getQuery();
23 $collapsedSections = array();
24 $expandedSections = array();
25 if ( @$query[
'--collapse-all'] ) $collapseAll =
true;
26 if ( @$query[
'--expand-all'] ) $expandAll=
true;
27 if ( @$query[
'--collapsed-sections'] ) $collapsedSections = array_flip(explode(
',', $query[
'--collapsed-sections']));
28 if ( @$query[
'--expanded-sections'] ) $expandedSections = array_flip(explode(
',', $query[
'--expanded-sections']));
31 $fields = $this->record->_table->fields(
false,
true);
34 $this->sidebars = array();
35 $this->sections = array();
37 $this->description =
$record->getDescription();
38 if ( intval(
$record->getLastModified()) > 0 ){
39 $this->status =
"Last updated ".df_offset(date(
'Y-m-d H:i:s',intval(
$record->getLastModified())));
44 import(
'Dataface/PreferencesTool.php');
47 $prefs =& $pt->getPreferences(
$record->getId());
49 $delegate =& $this->record->_table->getDelegate();
50 if ( isset($delegate) ){
51 $delegate_methods = get_class_methods(get_class($delegate));
52 $delegate_sidebars = preg_grep(
'/^sidebar__/', $delegate_methods);
53 $delegate_fields = preg_grep(
'/^field__/', $delegate_methods);
54 $delegate_sections = preg_grep(
'/^section__/', $delegate_methods);
57 foreach ($delegate_fields as $dfield){
58 $dfieldname = substr($dfield,7);
59 $fields[$dfieldname] = $this->record->_table->_newSchema(
'varchar(32)', $dfieldname);
60 $fields[$dfieldname][
'visibility'][
'browse'] =
'hidden';
61 if ( isset($this->record->_table->_atts[$dfieldname]) and
62 is_array($this->record->_table->_atts[$dfieldname]) ){
63 $this->record->_table->_parseINISection($this->record->_table->_atts[$dfieldname],
$fields[$dfieldname]);
70 foreach ( $delegate_sidebars as $sb ){
71 $this->sidebars[] = $delegate->$sb($this->record);
74 foreach ( $delegate_sections as $sec ){
75 $secobj = $delegate->$sec($this->record);
76 if ( !isset($secobj[
'name']) ){
77 $secobj[
'name'] = substr($sec,9);
80 if ( isset($prefs[
'tables.'.
$tablename.
'.sections.'.$secobj[
'name'].
'.order']) ){
81 $secobj[
'order'] = intval($prefs[
'tables.'.
$tablename.
'.sections.'.$secobj[
'name'].
'.order']);
85 if ( isset($prefs[
'tables.'.
$tablename.
'.sections.'.$secobj[
'name'].
'.display']) ){
87 $secobj[
'display'] = $prefs[
'tables.'.$tablename.
'.sections.'.$secobj[
'name'].
'.display'];
89 $secobj[
'display'] =
'expanded';
92 if ( $expandAll ) $secobj[
'display'] =
'expanded';
93 if ( $collapseAll ) $secobj[
'display'] =
'collapsed';
94 if ( isset($collapsedSections[$secobj[
'name']]) ) $secobj[
'display'] =
'collapsed';
95 if ( isset($expandedSections[$secobj[
'name']]) ) $secobj[
'display'] =
'expanded';
98 $this->sections[] =& $secobj;
107 $this->fieldgroups = array();
108 $this->logos = array();
114 if ( !
$record->checkPermission(
'view', array(
'field'=>$field[
'name']))){
117 if (
$record->_table->isMetaField($field[
'name']) )
continue;
119 if ( !@
$app->prefs[
'hide_record_view_logo'] ){
120 if ( (
$record->isImage($field[
'name']) and @$field[
'logo'] !==
'0') or @$field[
'logo']) {
121 $this->showLogo =
true;
123 if ( !isset($field[
'width']) ) {
124 if ( isset($this->record->_table->_fields[$field[
'name']]) ){
125 $this->record->_table->_fields[$field[
'name']][
'width'] = 225;
127 $this->record->_table->_atts[$field[
'name']][
'width'] = 225;
134 }
else if ( @$field[
'image'] ){
136 $this->showLogo =
true;
139 if ( $field[
'visibility'][
'browse'] ==
'hidden' )
continue;
141 if ( isset($field[
'viewgroup']) ){
142 $group = $field[
'viewgroup'];
144 }
else if ( isset($field[
'group']) ){
145 $group = $field[
'group'];
149 if ( !isset($this->fieldgroups[$group]) ){
150 $this->fieldgroups[$group][$field[
'name']] =
$field;
151 $fldgrp =& $this->record->_table->getFieldGroup($group);
154 $label = ucwords(str_replace(
'_',
' ',$group));
155 if ( $group ==
'__main__' ){
157 if ( @
$app->prefs[
'RecordView.showLastModifiedOnDetails'] ){
158 $label .=
' <span style="color: #666; font-weight: normal; text-style:italic"> - Last modified '.df_offset(date(
'Y-m-d',$this->record->getLastModified())).
'</span>';
166 if ( isset($fldgrp[
'condition']) and !
$app->testCondition($fldgrp[
'condition'], array(
'record'=>&$this->record))){
170 if ( isset($fldgrp[
'permission']) and !
$record->checkPermission($fldgrp[
'permission']) ){
173 $label = ucwords(str_replace(
'_',
' ',$fldgrp[
'label']));
174 if ( isset($fldgrp[
'section'][
'order']) ) $order = $fldgrp[
'section'][
'order'];
176 if ( isset($fldgrp[
'section'][
'class']) ) $class = $fldgrp[
'section'][
'class'];
179 'name'=>$group.
'__fieldgroup',
183 'fields'=>&$this->fieldgroups[$group],
186 'display'=>
'expanded'
189 if ( isset($prefs[
'tables.'.
$tablename.
'.sections.'.$sec[
'name'].
'.order']) ){
190 $sec[
'order'] = intval($prefs[
'tables.'.
$tablename.
'.sections.'.$sec[
'name'].
'.order']);
192 if ( isset($prefs[
'tables.'.
$tablename.
'.sections.'.$sec[
'name'].
'.display']) ){
193 $sec[
'display'] = $prefs[
'tables.'.$tablename.
'.sections.'.$sec[
'name'].
'.display'];
196 if ( $expandAll ) $sec[
'display'] =
'expanded';
197 if ( $collapseAll ) $sec[
'display'] =
'collapsed';
198 if ( isset($collapsedSections[$sec[
'name']]) ) $sec[
'display'] =
'collapsed';
199 if ( isset($expandedSections[$sec[
'name']]) ) $sec[
'display'] =
'expanded';
202 $this->sections[] =& $sec;
207 $this->fieldgroups[$group][$field[
'name']] =
$field;
212 if ( count($this->logos)>1 ){
213 $theLogo = $this->logos[0];
214 if ( !@$theLogo[
'logo'] ){
215 foreach ($this->logos as $logofield){
216 if ( @$logoField[
'logo'] ){
217 $theLogo = $logoField;
222 $this->logos = array($theLogo);
225 if ( !@
$app->prefs[
'hide_related_sections'] ){
227 foreach ( $this->record->_table->relationships() as $relname=>$relationship ){
228 $schema =& $relationship->_schema;
230 if ( isset($schema[
'section'][
'visible']) and !$schema[
'section'][
'visible'] )
continue;
231 if ( isset($schema[
'section'][
'condition']) and !
$app->testCondition($schema[
'section'][
'condition'], array(
'record'=>&$this->record,
'relationship'=>&$relationship))){
235 if ( isset($schema[
'action'][
'condition']) and !
$app->testCondition($schema[
'action'][
'condition'], array(
'record'=>&$this->record,
'relationship'=>&$relationship))){
239 if ( isset($schema[
'action'][
'permission']) and !
$record->checkPermission($schema[
'action'][
'permission']) ){
243 if ( isset($schema[
'section'][
'permission']) and !
$record->checkPermission($schema[
'section'][
'permission']) ){
247 if ( isset($schema[
'section'][
'label']) ) $label = $schema[
'section'][
'label'];
248 else if ( isset($schema[
'action'][
'label'] )) $label = $schema[
'action'][
'label'];
249 else $label = $relname;
251 if ( isset($schema[
'section'][
'order']) ) $order = $schema[
'section'][
'order'];
252 else if ( isset($schema[
'action'][
'order']) ) $order = $schema[
'action'][
'order'];
255 if ( isset($schema[
'section'][
'limit']) ) $limit = $schema[
'section'][
'limit'];
258 if ( isset($schema[
'section'][
'sort']) ) $sort = $schema[
'section'][
'sort'];
261 if ( isset($schema[
'section'][
'filter']) ) $filter = $schema[
'section'][
'filter'];
264 $rrecords = $this->record->getRelatedRecordObjects($relname,0,$limit,$filter,$sort);
265 if ( count($rrecords) == 0 )
continue;
268 if ( isset($schema[
'section'][
'class']) ) $class = $schema[
'section'][
'class'];
269 else $class =
'left';
273 'name'=>$relname.
'__relationship',
275 'url'=>$this->record->getURL(
'-action=related_records_list&-relationship='.$relname),
276 'content'=>$glanceList->toHtml(),
279 'display'=>
'expanded'
282 if ( isset($prefs[
'tables.'.
$tablename.
'.sections.'.$sec[
'name'].
'.order']) ){
283 $sec[
'order'] = intval($prefs[
'tables.'.
$tablename.
'.sections.'.$sec[
'name'].
'.order']);
286 if ( isset($prefs[
'tables.'.
$tablename.
'.sections.'.$sec[
'name'].
'.display']) ){
287 $sec[
'display'] = $prefs[
'tables.'.$tablename.
'.sections.'.$sec[
'name'].
'.display'];
290 if ( $expandAll ) $sec[
'display'] =
'expanded';
291 if ( $collapseAll ) $sec[
'display'] =
'collapsed';
292 if ( isset($collapsedSections[$sec[
'name']]) ) $secj[
'display'] =
'collapsed';
293 if ( isset($expandedSections[$sec[
'name']]) ) $sec[
'display'] =
'expanded';
296 $this->sections[] =& $sec;
300 unset($relationship);
306 usort($this->sections,array(&$this,
'section_cmp'));
316 $ao = (isset($a[
'order']) ? $a[
'order'] : 0);
317 $bo = (isset($b[
'order']) ? $b[
'order'] : 0 );
318 return ($ao < $bo) ? -1:1;