00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00029 class ElementAction extends Action
00030 {
00031 var $element;
00032
00036 function ElementAction()
00037 {
00038 if ( $this->getRequestId() == 0 )
00039 die('no element-id available');
00040
00041 $this->element = new Element( $this->getRequestId() );
00042 $this->element->load();
00043
00044 $this->setTemplateVar( 'elementid' ,$this->element->elementid );
00045 }
00046
00047
00048
00052 function savename()
00053 {
00054 $this->element->name = $this->getRequestVar('name' ,'abc');
00055 $this->element->desc = $this->getRequestVar('description','all');
00056
00057 $this->element->save();
00058 $this->element->load();
00059
00060 $this->addNotice('element',$this->template->name,'SAVED',OR_NOTICE_OK);
00061 }
00062
00063
00064
00068 function remove()
00069 {
00070 $this->setTemplateVar( 'name' ,$this->element->name );
00071 }
00072
00073
00077 function delete()
00078 {
00079 if ( $this->hasRequestVar('deletevalues') )
00080 {
00081 $this->element->deleteValues();
00082 $this->addNotice('element',$this->template->name,'DELETED',OR_NOTICE_OK);
00083 }
00084 elseif ( $this->hasRequestVar('delete') )
00085 {
00086 $this->element->delete();
00087 $this->addNotice('element',$this->template->name,'DELETED',OR_NOTICE_OK);
00088 }
00089 else
00090 {
00091 $this->addNotice('element',$this->template->name,'CANCELED',OR_NOTICE_WARN);
00092 }
00093 }
00094
00095
00096
00100 function savetype()
00101 {
00102 if ( !$this->userIsAdmin() && $this->getRequestVar('type') == 'code' )
00103 {
00104
00105 $this->addNotice('element',$this->template->name,'CANCELED',OR_NOTICE_ERROR);
00106 }
00107 else
00108 {
00109
00110 $this->element->setType( $this->getRequestVar('type') );
00111 $this->addNotice('element',$this->template->name,'SAVED',OR_NOTICE_OK);
00112 }
00113 }
00114
00115
00119 function name()
00120 {
00121
00122
00123 $this->setTemplateVar('name' ,$this->element->name);
00124
00125 $this->setTemplateVar('description',$this->element->desc);
00126 }
00127
00128
00129
00130 function type()
00131 {
00132
00133 $types = array();
00134
00135 foreach( $this->element->getAvailableTypes() as $t )
00136 $types[ $t ] = 'EL_'.$t;
00137
00138
00139 if ( !$this->userIsAdmin() )
00140 unset( $types['code'] );
00141
00142
00143 $this->setTemplateVar('types',$types);
00144
00145
00146 $this->setTemplateVar('type',$this->element->type);
00147 }
00148
00149
00154 function properties()
00155 {
00156 global $conf;
00157
00158
00159 $properties = $this->element->getRelatedProperties();
00160
00161 foreach( $this->element->getRelatedProperties() as $propertyName )
00162 {
00163 switch( $propertyName )
00164 {
00165 case 'withIcon':
00166 $this->setTemplateVar('with_icon' ,$this->element->withIcon );
00167 break;
00168
00169 case 'allLanguages':
00170 $this->setTemplateVar('all_languages',$this->element->allLanguages);
00171 break;
00172
00173 case 'writable':
00174 $this->setTemplateVar('writable' ,$this->element->writable );
00175 break;
00176
00177 case 'subtype':
00178
00179 $convertToLang = false;
00180 switch( $this->element->type )
00181 {
00182 case 'info':
00183 $subtypes = Array('db_id',
00184 'db_name',
00185 'project_id',
00186 'project_name',
00187 'language_id',
00188 'language_iso',
00189 'language_name',
00190 'page_id',
00191 'page_name',
00192 'page_desc',
00193 'page_fullfilename',
00194 'page_filename',
00195 'page_extension',
00196 'edit_url',
00197 'edit_fullurl',
00198 'lastch_user_username',
00199 'lastch_user_fullname',
00200 'lastch_user_mail',
00201 'lastch_user_desc',
00202 'lastch_user_tel',
00203 'create_user_username',
00204 'create_user_fullname',
00205 'create_user_mail',
00206 'create_user_desc',
00207 'create_user_tel',
00208 'act_user_username',
00209 'act_user_fullname',
00210 'act_user_mail',
00211 'act_user_desc',
00212 'act_user_tel' );
00213 $convertToLang = true;
00214 break;
00215
00216 case 'infodate':
00217 $subtypes = Array('date_published',
00218 'date_saved',
00219 'date_created' );
00220 $convertToLang = true;
00221 break;
00222
00223 case 'link':
00224 $subtypes = Array('file,page,link',
00225 'file',
00226 'page',
00227 'link' );
00228 $convertToLang = true;
00229 break;
00230
00231 case 'linkinfo':
00232 $subtypes = Array('width',
00233 'height',
00234 'id',
00235 'name',
00236 'description',
00237 'mime-type',
00238 'lastch_user_username',
00239 'lastch_user_fullname',
00240 'lastch_user_mail',
00241 'lastch_user_desc',
00242 'lastch_user_tel',
00243 'create_user_username',
00244 'create_user_fullname',
00245 'create_user_mail',
00246 'create_user_desc',
00247 'create_user_tel',
00248 'filename',
00249 'full_filename' );
00250 $convertToLang = true;
00251 break;
00252
00253 case 'insert':
00254 $subtypes = Array('inline',
00255 'ssi' );
00256 $convertToLang = true;
00257 break;
00258
00259 case 'dynamic':
00260
00261 $files = Array();
00262 $handle = opendir ('./dynamicClasses');
00263 while ( $file = readdir($handle) )
00264 {
00265 $file = substr($file,0,strlen($file)-10);
00266 if ( $file != '' )
00267 $files[$file] = $file;
00268 }
00269 closedir($handle);
00270
00271 $subtypes = $files;
00272 break;
00273
00274 default:
00275 $subtypes = array();
00276 break;
00277 }
00278
00279 if ( $convertToLang )
00280 {
00281 foreach( $subtypes as $t=>$v )
00282 {
00283 unset($subtypes[$t]);
00284 $subtypes[$v] = lang('EL_'.$this->element->type.'_'.$v);
00285 }
00286 }
00287
00288
00289 if (!isset($this->element->subtype))
00290 $this->element->subtype='';
00291
00292 $this->setTemplateVar('subtypes',$subtypes );
00293 $this->setTemplateVar('subtype' ,$this->element->subtype);
00294
00295 break;
00296
00297
00298 case 'dateformat':
00299
00300 $ini_date_format = $conf['date-formats'];
00301 $dateformat = array();
00302
00303 $this->setTemplateVar('dateformat','');
00304
00305 foreach($ini_date_format as $idx=>$d)
00306 {
00307 $dateformat[$idx] = date($d);
00308 if ( $d == $this->element->dateformat )
00309 $this->setTemplateVar('dateformat',$idx);
00310 }
00311
00312 $this->setTemplateVar('dateformats',$dateformat);
00313
00314 break;
00315
00316
00317
00318 case 'defaultText':
00319
00320 switch( $this->element->type )
00321 {
00322 case 'longtext':
00323 $this->setTemplateVar('default_longtext',$this->element->defaultText );
00324 break;
00325
00326 case 'select':
00327 case 'text':
00328 $this->setTemplateVar('default_text' ,$this->element->defaultText );
00329 break;
00330 }
00331 break;
00332
00333
00334 case 'htmlwiki':
00335 if ( !$this->element->wiki && !$this->element->html )
00336 $format = 'none';
00337 elseif ( $this->element->wiki && !$this->element->html )
00338 $format = 'wiki';
00339 elseif ( !$this->element->wiki && $this->element->html )
00340 $format = 'html';
00341 elseif ( $this->element->wiki && $this->element->html )
00342 $format = 'wiki,html';
00343
00344 $this->setTemplateVar('format', $format );
00345 $formatlist = array('none'=>'raw','html'=>'html','wiki'=>'wiki','wiki,html'=>'wikihtml');
00346
00347 foreach( $formatlist as $t=>$v )
00348 $formatlist[$t] = lang('EL_PROP_'.$v);
00349
00350 $this->setTemplateVar('formatlist', $formatlist );
00351
00352 break;
00353
00354 case 'linktype':
00355 $this->setTemplateVar('linktype', $this->element->wiki );
00356 $this->setTemplateVar('linktypelist', array('page','file','link') );
00357
00358 break;
00359
00360 case 'prefix':
00361 $t = new Template( $this->element->templateid );
00362
00363 $elements = array();
00364 foreach( $t->getElements() as $element )
00365 {
00366 if ( $element->type == 'link' )
00367 $elements[$element->name] = $element->name;
00368 }
00369 unset($t);
00370
00371 $this->setTemplateVar('linkelements',$elements );
00372
00373 list($linkElementName,$targetElementName) = explode('%',$this->element->name.'%');
00374 $this->setTemplateVar('linkelement',$linkElementName );
00375
00376 break;
00377
00378 case 'name':
00379
00380 $names = array();
00381
00382 foreach( Template::getAll() as $tid=>$name )
00383 {
00384 $t = new Template( $tid );
00385 $t->load();
00386
00387 foreach( $t->getElements() as $element )
00388 {
00389 if ( !in_array($element->type,array('copy','linkinfo','link')) )
00390 $names[$element->name] = $t->name.' - '.$element->name.' ('.lang('EL_'.$element->type).')';
00391 }
00392 unset($t);
00393 }
00394
00395
00396 $this->setTemplateVar('names',$names );
00397
00398 list($linkElementName,$targetElementName) = explode('%',$this->element->name.'%');
00399 $this->setTemplateVar('name',$targetElementName );
00400 break;
00401
00402
00403 case 'code':
00404
00405 switch( $this->element->type )
00406 {
00407
00408 case 'select':
00409 $this->setTemplateVar('select_items',$this->element->code );
00410 break;
00411
00412 case 'dynamic':
00413
00414 $className = $this->element->subtype;
00415 $fileName = OR_DYNAMICCLASSES_DIR.'/'.$className.'.class.'.PHP_EXT;
00416
00417 if ( is_file( $fileName ) )
00418 {
00419 require( $fileName );
00420
00421 if ( class_exists($className) )
00422 {
00423 $dynEl = new $className;
00424
00425 $desc = array();
00426
00427 $description = $dynEl->description;
00428 $paramList = array();
00429
00430 $old = $this->element->getDynamicParameters();
00431 $parameters = '';
00432
00433 foreach( get_object_vars($dynEl) as $paramName=>$paramDesc )
00434 {
00435 if ( in_array($paramName,array('objectid','output','parameters','description')) )
00436 continue;
00437
00438 if ( isset( $dynEl->$paramName ) )
00439 {
00440 $paramList[$paramName] = $dynEl->$paramName;
00441
00442 $parameters .= $paramName.':';
00443 if ( !empty($old[$paramName]) )
00444 $parameters .= $old[$paramName];
00445 $parameters .= "\n";
00446 }
00447 }
00448
00449 $this->setTemplateVar('dynamic_class_description',$dynEl->description );
00450 $this->setTemplateVar('dynamic_class_parameters' ,$paramList );
00451 $this->setTemplateVar('parameters' ,$parameters );
00452 }
00453 }
00454
00455 break;
00456
00457 case 'code':
00458 $this->setTemplateVar('code',$this->element->code);
00459 break;
00460 }
00461 break;
00462
00463
00464 case 'decimals':
00465 $this->setTemplateVar('decimals' ,$this->element->decimals );
00466 break;
00467
00468 case 'decPoint':
00469 $this->setTemplateVar('dec_point' ,$this->element->decPoint );
00470 break;
00471
00472 case 'thousandSep':
00473 $this->setTemplateVar('thousand_sep' ,$this->element->thousandSep );
00474 break;
00475
00476
00477
00478 case 'defaultObjectId':
00479
00480 $objects = array();
00481
00482
00483 foreach( Folder::getAllObjectIds() as $id )
00484 {
00485 $o = new Object( $id );
00486 $o->load();
00487
00488 switch( $this->element->type )
00489 {
00490 case 'list':
00491 if ( !$o->isFolder )
00492 continue 2;
00493 break;
00494
00495 case 'link':
00496 if ( !$o->isPage && !$o->isFile && !$o->isLink )
00497 continue 2;
00498 break;
00499
00500 default:
00501 continue 2;
00502 }
00503
00504 $objects[ $id ] = lang( 'GLOBAL_'.$o->getType() ).': ';
00505
00506 if ( !$o->isRoot )
00507 {
00508 $f = new Folder( $o->parentid );
00509 $f->load();
00510 $objects[ $id ] .= implode( FILE_SEP,$f->parentObjectNames(false,true) );
00511 }
00512
00513 $objects[ $id ] .= FILE_SEP.$o->name;
00514 }
00515
00516 asort( $objects );
00517
00518 $this->setTemplateVar('objects',$objects);
00519
00520 $this->setTemplateVar('default_objectid',$this->element->defaultObjectId);
00521
00522 break;
00523
00524
00525 case 'folderObjectId':
00526
00527 $folders = array();
00528
00529
00530 foreach( Folder::getAllFolders() as $id )
00531 {
00532 $o = new Object( $id );
00533 $o->load();
00534
00535 $folders[ $id ] = '';
00536 if ( !$o->isRoot )
00537 {
00538 $f = new Folder( $o->parentid );
00539 $f->load();
00540 $folders[ $id ] = implode( ' » ',$f->parentObjectNames(true,true) );
00541 $folders[ $id ] .= ' » ';
00542 }
00543 $folders[ $id ] .= $o->name;
00544 }
00545
00546 asort( $folders );
00547
00548 $this->setTemplateVar('folders',$folders);
00549
00550 $this->setTemplateVar('folderobjectid' ,$this->element->folderObjectId );
00551
00552 break;
00553
00554 default:
00555 $this->message('ERROR','not an element property: '.$propertyName );
00556 }
00557 }
00558 }
00559
00560
00561
00565 function saveproperties()
00566 {
00567 global $conf;
00568 $ini_date_format = $conf['date-formats'];
00569
00570 if ( $this->hasRequestVar('dateformat'))
00571 $this->element->dateformat = $ini_date_format[$this->getRequestVar('dateformat')];
00572 $this->element->subtype = $this->getRequestVar('subtype');
00573
00574 if ( $this->hasRequestVar('default_longtext'))
00575 $this->element->defaultText = $this->getRequestVar('default_longtext');
00576 else
00577 $this->element->defaultText = $this->getRequestVar('default_text');
00578 $this->element->wiki = in_array('wiki',explode(',',$this->getRequestVar('format')));
00579 $this->element->html = in_array('html',explode(',',$this->getRequestVar('format')));
00580 $this->element->withIcon = $this->getRequestVar('with_icon') != '';
00581 $this->element->allLanguages = $this->getRequestVar('all_languages') != '';
00582 $this->element->writable = $this->getRequestVar('writable') != '';
00583 $this->element->decimals = $this->getRequestVar('decimals');
00584 $this->element->decPoint = $this->getRequestVar('dec_point');
00585 $this->element->thousandSep = $this->getRequestVar('thousand_sep');
00586 $this->element->folderObjectId = $this->getRequestVar('folderobjectid' );
00587 $this->element->defaultObjectId = $this->getRequestVar('default_objectid');
00588 if ( $this->hasRequestVar('select_items'))
00589 $this->element->code = $this->getRequestVar('select_items');
00590 else
00591 $this->element->code = $this->getRequestVar('code' );
00592
00593 if ( $this->hasRequestVar('name') )
00594 $this->element->name = $this->getRequestVar('name');
00595
00596 if ( $this->hasRequestVar('linkelement') )
00597 $this->element->setPrefix( $this->getRequestVar('linkelement') );
00598
00599 if ( $this->hasRequestVar('parameters'))
00600 $this->element->code = $this->getRequestVar('parameters');
00601
00602
00603 $this->element->save();
00604 $this->addNotice('element',$this->element->name,'SAVED');
00605
00606 }
00607 }
00608
00609 ?>