Changeset 14480
- Timestamp:
- 01/17/08 15:16:51 (11 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/midcom/midcom.helper.reflector/config/config.inc
r14459 r14480 27 27 'midgard_language', 28 28 'midgard_quota', 29 /* members should not be root classes by MgSchema, workaround a bug */ 30 'midgard_member', 29 31 /* These use GUID to link to many parents */ 30 32 'net_nemein_tag_link', … … 61 63 ( 62 64 ), 65 // keyed by icon, values are arrays of classes (__default__ marking the default icon) names, used to determine icon to use for object 66 'object_icon_magic' => array 67 ( 68 'document.png' => array 69 ( 70 '__default__', 71 ), 72 'stock_folder.png' => array 73 ( 74 'midgard_topic', 75 'midgard_snippetdir', 76 'midgard_style', 77 'midgard_page', 78 'net_nemein_discussion_thread', 79 'org_openpsa_products_product_group', 80 ), 81 'stock_people.png' => array 82 ( 83 'net_nehmer_buddylist_entry_db', 84 'org_openpsa_campaign', 85 ), 86 'stock_news.png' => array 87 ( 88 'org_openpsa_notifications_notification', 89 'net_nemein_rss_feed', 90 ), 91 'locale.png' => array 92 ( 93 'org_routamc_positioning_country', 94 ), 95 'geoclue.png' => array 96 ( 97 'org_routamc_positioning_location', 98 ), 99 'stock-discussion.png' => array 100 ( 101 'net_nemein_discussion_post', 102 ), 103 'package.png' => array 104 ( 105 'org_openpsa_products_product', 106 ), 107 'camera.png' => array 108 ( 109 'org_routamc_photostream_photo', 110 ), 111 ), 112 // This works just like object_icon_magic 113 'create_type_magic' => array 114 ( 115 'new-text.png' => array 116 ( 117 '__default__', 118 ), 119 'new-dir.png' => array 120 ( 121 'midgard_topic', 122 'midgard_page', 123 'midgard_snippetdir', 124 'midgard_style', 125 'net_nemein_discussion_thread', 126 ), 127 'stock_people-new.png' => array 128 ( 129 'org_openpsa_campaign', 130 ), 131 ), 63 132 64 'experimental_root_class_detection' => false,65 trunk/midcom/midcom.helper.reflector/reflector.php
r14465 r14480 343 343 function get_create_icon($type) 344 344 { 345 // FIXME make 1. smarter 2. configurable 346 switch ($type) 347 { 348 case 'midgard_topic': 349 case 'midgard_page': 350 case 'midgard_snippetdir': 351 case 'midgard_style': 352 case 'net_nemein_discussion_thread': 353 $icon = 'new-dir.png'; 354 break; 355 case 'midgard_group': 356 case 'org_openpsa_organization': 357 case 'org_openpsa_campaign': 345 static $config_icon_map = false; 346 if (!$config_icon_map) 347 { 348 $icons2classes = $this->_config->get('create_type_magic'); 349 foreach ($icons2classes as $icon => $classes) 350 { 351 foreach ($classes as $class) 352 { 353 $config_icon_map[$class] = $icon; 354 } 355 } 356 unset($icons2classes, $classes, $class, $icon); 357 } 358 359 $icon_callback = array($type, 'get_create_icon'); 360 switch (true) 361 { 362 // class has static method to tell us the answer ? great ! 363 case (is_callable($icon_callback)): 364 $icon = call_user_func($icon_callback); 365 // configuration icon 366 case (isset($config_icon_map[$type])): 367 $icon = $config_icon_map[$type]; 368 break; 369 370 // heuristics magic (in stead of adding something here, take a look at config key "create_type_magic") 371 case (strpos($type, 'member') !== false): 372 case (strpos($type, 'organization') !== false): 358 373 $icon = 'stock_people-new.png'; 359 374 break; 360 case 'midgard_person': 361 case 'org_openpsa_person': 362 case 'midgard_member': 363 case 'midgard_eventmember': 375 case (strpos($type, 'person') !== false): 376 case (strpos($type, 'member') !== false): 364 377 $icon = 'stock_person-new.png'; 365 378 break; 366 case 'midgard_event': 367 case 'org_openpsa_event': 368 case 'net_nemein_calendar_event'; 379 case (strpos($type, 'event') !== false): 369 380 $icon = 'stock_event_new.png'; 370 381 break; 382 383 // Config default value 384 case (isset($config_icon_map['__default__'])): 385 $icon = $config_icon_map['__default__']; 386 break; 387 // Fallback default value 371 388 default: 372 389 $icon = 'new-text.png'; … … 378 395 function get_object_icon(&$obj) 379 396 { 380 // Check against static calling381 if ( !isset($this->mgdschema_class)382 || empty($this->mgdschema_class))383 {384 debug_push_class(__CLASS__, __FUNCTION__);385 debug_add('May not be called statically', MIDCOM_LOG_ERROR);386 debug_pop();387 return false;388 }389 390 debug_push_class(__CLASS__, __FUNCTION__);391 397 $properties = get_object_vars($obj); 392 398 if (empty($properties)) 393 399 { 400 debug_push_class(__CLASS__, __FUNCTION__); 394 401 debug_add("Could not list object properties, aborting", MIDCOM_LOG_ERROR); 395 402 debug_pop(); 396 403 return false; 397 404 } 398 405 406 static $config_icon_map = false; 407 if (!$config_icon_map) 408 { 409 $icons2classes = $this->_config->get('object_icon_magic'); 410 foreach ($icons2classes as $icon => $classes) 411 { 412 foreach ($classes as $class) 413 { 414 $config_icon_map[$class] = $icon; 415 } 416 } 417 unset($icons2classes, $classes, $class, $icon); 418 } 419 420 $object_class = get_class($obj); 421 $object_baseclass = midcom_helper_reflector::resolve_baseclass($object_class); 399 422 switch(true) 400 423 { 424 // object knows it's icon, how handy! 401 425 case (method_exists($obj,'get_icon')): 402 426 $icon = $obj->get_icon(); 403 427 break; 404 // FIXME make 1. smarter 2. configurable 405 case (is_a($obj, 'midgard_person')): 406 case (is_a($obj, 'org_openpsa_person')): 428 429 // configuration icon 430 case (isset($config_icon_map[$object_class])): 431 $icon = $config_icon_map[$object_class]; 432 break; 433 case (isset($config_icon_map[$object_baseclass])): 434 $icon = $config_icon_map[$object_baseclass]; 435 break; 436 437 // heuristics magic (in stead of adding something here, take a look at config key "object_icon_magic") 438 case (strpos($object_class, 'person') !== false): 407 439 $icon = 'stock_person.png'; 408 440 break; 409 410 case (is_a($obj, 'midgard_topic')): 411 case (is_a($obj, 'midgard_snippetdir')); 412 case (is_a($obj, 'midgard_style')): 413 case (is_a($obj, 'midgard_page')): 414 case (is_a($obj, 'net_nemein_discussion_thread')): 415 case (is_a($obj, 'org_openpsa_products_product_group')): 416 $icon='stock_folder.png'; 417 break; 418 case (is_a($obj, 'midgard_event')): 419 case (is_a($obj, 'org_openpsa_event')): 420 case (is_a($obj, 'net_nemein_calendar_event')): 441 case (strpos($object_class, 'event') !== false): 421 442 $icon='stock_event.png'; 422 443 break; 423 case (is_a($obj, 'midgard_eventmember')): 424 case (is_a($obj, 'midgard_member')): 425 case (is_a($obj, 'midgard_group')): 426 case (is_a($obj, 'org_openpsa_organization')): 427 case (is_a($obj, 'net_nehmer_buddylist_entry_db')): 428 case (is_a($obj, 'org_openpsa_campaign')): 444 case (strpos($object_class, 'member') !== false): 445 case (strpos($object_class, 'organization') !== false): 429 446 $icon='stock_people.png'; 430 447 break; … … 432 449 $icon='stock_internet.png'; 433 450 break; 434 case (is_a($obj, 'midgard_pageelement')):435 case (is_a($obj, 'midgard_element')):436 $icon = 'text-x-generic-template.png';437 break;438 case (is_a($obj, 'org_openpsa_notifications_notification')):439 case (is_a($obj, 'net_nemein_rss_feed')):440 $icon = 'stock_news.png';441 break;442 case (is_a($obj, 'org_routamc_positioning_country')):443 $icon = 'locale.png';444 break;445 case (is_a($obj, 'org_routamc_positioning_location')):446 $icon = 'geoclue.png';447 break;448 case (is_a($obj, 'net_nemein_discussion_post')):449 $icon='stock-discussion.png';450 break;451 case (is_a($obj, 'org_openpsa_products_product')):452 $icon='package.png';453 break;454 case (is_a($obj, 'org_routamc_photostream_photo')):455 $icon='camera.png';456 break;457 451 case (is_a($obj, 'midgard_snippet')): 458 452 $icon='script.png'; 459 453 break; 454 case (strpos($object_class, 'element') !== false): 455 $icon = 'text-x-generic-template.png'; 456 break; 457 458 // Config default value 459 case (isset($config_icon_map['__default__'])): 460 $icon = $config_icon_map['__default__']; 461 break; 462 // Fallback default value 460 463 default: 461 464 $icon = 'document.png'; 462 } 463 464 $icon = "<img src='" . MIDCOM_STATIC_URL . "/stock-icons/16x16/{$icon}' align='absmiddle' border='0' alt='". get_class($obj) . " '/> "; 465 break; 466 } 467 468 // TODO: What if the icon is not in stock-icons/16x16 ?? especially the ->get_icon should probably be able to specify components static path 469 $icon = "<img src='" . MIDCOM_STATIC_URL . "/stock-icons/16x16/{$icon}' align='absmiddle' border='0' alt='{$object_class}'/> "; 465 470 debug_pop(); 466 471 return $icon;
