Changeset 28650
- Timestamp:
- Jun 9, 2014, 7:11:17 PM (10 years ago)
- Location:
- extensions/skeleton/trunk
- Files:
-
- 1 added
- 1 deleted
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/skeleton/trunk/admin.php
r24182 r28650 1 1 <?php 2 2 /** 3 * This is the main administration page, if you have only one admin page you can put 3 * This is the main administration page, if you have only one admin page you can put 4 4 * directly its code here or using the tabsheet system like bellow 5 5 */ 6 6 7 7 defined('SKELETON_PATH') or die('Hacking attempt!'); 8 8 9 9 global $template, $page, $conf; 10 10 11 11 12 12 // get current tab 13 $page['tab'] = (isset($_GET['tab'])) ? $_GET['tab'] : $page['tab'] = 'home';13 $page['tab'] = isset($_GET['tab']) ? $_GET['tab'] : $page['tab'] = 'home'; 14 14 15 15 // plugin tabsheet is not present on photo page … … 20 20 $tabsheet = new tabsheet(); 21 21 $tabsheet->set_id('skeleton'); 22 22 23 23 $tabsheet->add('home', l10n('Welcome'), SKELETON_ADMIN . '-home'); 24 24 $tabsheet->add('config', l10n('Configuration'), SKELETON_ADMIN . '-config'); … … 33 33 $template->assign(array( 34 34 'SKELETON_PATH'=> SKELETON_PATH, // used for images, scripts, ... access 35 'SKELETON_ABS_PATH'=> realpath(SKELETON_PATH), 35 'SKELETON_ABS_PATH'=> realpath(SKELETON_PATH), // used for template inclusion (Smarty needs a real path) 36 36 'SKELETON_ADMIN' => SKELETON_ADMIN, 37 37 )); 38 38 39 39 // send page content 40 40 $template->assign_var_from_handle('ADMIN_CONTENT', 'skeleton_content'); -
extensions/skeleton/trunk/admin/config.php
r24182 r28650 14 14 'option3' => $_POST['option3'], 15 15 ); 16 17 conf_update_param('skeleton', serialize($conf['skeleton']));18 array_push($page['infos'], l10n('Information data registered in database'));16 17 conf_update_param('skeleton', $conf['skeleton']); 18 $page['infos'][] = l10n('Information data registered in database'); 19 19 } 20 20 … … 24 24 'three' => l10n('Three'), 25 25 ); 26 26 27 27 // send config to template 28 28 $template->assign(array( -
extensions/skeleton/trunk/admin/photo.php
r24182 r28650 35 35 $picture = pwg_db_fetch_assoc(pwg_query($query)); 36 36 37 37 38 # DO SOME STUFF HERE... or not ! 38 39 -
extensions/skeleton/trunk/admin/template/config.tpl
r24182 r28650 1 1 {combine_css path=$SKELETON_PATH|@cat:"admin/template/style.css"} 2 2 3 {footer_script} {literal}3 {footer_script} 4 4 jQuery('input[name="option2"]').change(function() { 5 5 $('.option1').toggle(); … … 13 13 defaultPosition: 'bottom' 14 14 }); 15 {/literal}{/footer_script} 15 {/footer_script} 16 16 17 17 18 <div class="titrePage"> … … 22 23 <fieldset> 23 24 <legend>{'Common configuration'|translate}</legend> 24 25 25 26 <ul> 26 27 <li> -
extensions/skeleton/trunk/admin/template/home.tpl
r24182 r28650 1 1 {combine_css path=$SKELETON_PATH|@cat:"admin/template/style.css"} 2 2 3 {html_style}{literal} 4 h4 { text-align:left !important; } 5 {/literal}{/html_style} 3 {html_style} 4 h4 { 5 text-align:left !important; 6 } 7 {/html_style} 8 6 9 7 10 <div class="titrePage"> … … 12 15 <fieldset> 13 16 <legend>{'What Skeleton can do for me?'|translate}</legend> 14 17 15 18 {$INTRO_CONTENT} 16 19 </fieldset> 17 20 18 21 </form> -
extensions/skeleton/trunk/include/admin_events.inc.php
r26137 r28650 5 5 * admin plugins menu link 6 6 */ 7 function skeleton_admin_plugin_menu_links($menu) 7 function skeleton_admin_plugin_menu_links($menu) 8 8 { 9 9 $menu[] = array( … … 27 27 ); 28 28 } 29 29 30 30 return $sheets; 31 31 } … … 36 36 function skeleton_add_batch_manager_prefilters($prefilters) 37 37 { 38 array_push($prefilters,array(38 $prefilters[] = array( 39 39 'ID' => 'skeleton', 40 40 'NAME' => l10n('Skeleton'), 41 )); 42 return $prefilters; 41 ); 42 43 return $prefilters; 43 44 } 44 45 … … 56 57 LIMIT 20 57 58 ;'; 58 $filter_sets[] = array_from_query($query, 'id');59 $filter_sets[] = query2array($query, null, 'id'); 59 60 } 60 61 61 62 return $filter_sets; 62 63 } 63 64 … … 67 68 function skeleton_loc_end_element_set_global() 68 69 { 69 global $template; 70 71 $template->append('element_set_global_plugins_actions', array( 72 'ID' => 'skeleton', 73 'NAME' => l10n('Skeleton'), 74 'CONTENT' => '<label><input type="checkbox" name="check_skeleton"> '.l10n('Check me!').'</label>', // this is optional 70 global $template; 71 72 /* 73 CONTENT is optional 74 for big contents it is advised to use a template file 75 76 $template->set_filename('skeleton_batchmanager_action', realpath(SKELETON_PATH.'template/batchmanager_action.tpl')); 77 $content = $template->parse('skeleton_batchmanager_action', true); 78 */ 79 $template->append('element_set_global_plugins_actions', array( 80 'ID' => 'skeleton', 81 'NAME' => l10n('Skeleton'), 82 'CONTENT' => '<label><input type="checkbox" name="check_skeleton"> '.l10n('Check me!').'</label>', 75 83 )); 76 84 } … … 81 89 function skeleton_element_set_global_action($action, $collection) 82 90 { 83 if ($action == 'skeleton') 91 global $page; 92 93 if ($action == 'skeleton') 84 94 { 85 global $page;86 87 95 if (empty($_POST['check_skeleton'])) 88 96 { 89 array_push($page['warnings'], l10n('Nothing appened, but you didn\'t check the box!'));97 $page['warnings'][] = l10n('Nothing appened, but you didn\'t check the box!'); 90 98 } 91 99 else 92 100 { 93 array_push($page['infos'], l10n('Nothing appened, but you checked the box!'));101 $page['infos'][] = l10n('Nothing appened, but you checked the box!'); 94 102 } 95 103 } -
extensions/skeleton/trunk/include/menu_events.class.php
r24182 r28650 3 3 4 4 /* 5 * there is two ways to use class methods as event handlers:5 * There is two ways to use class methods as event handlers: 6 6 * 7 * *add_event_handler('blockmanager_apply', array('SkeletonMenu', 'blockmanager_apply'));7 * > add_event_handler('blockmanager_apply', array('SkeletonMenu', 'blockmanager_apply')); 8 8 * in this case the method 'blockmanager_apply' must be a static method of the class 'SkeletonMenu' 9 9 * 10 * *$myObj = new SkeletonMenu();11 * * add_event_handler('blockmanager_apply', array(&$myObj, 'blockmanager_apply'));10 * > $myObj = new SkeletonMenu(); 11 * > add_event_handler('blockmanager_apply', array(&$myObj, 'blockmanager_apply')); 12 12 * in this case the method 'blockmanager_apply' must be a public method of the object '$myObj' 13 13 */ … … 20 20 static function blockmanager_apply1($menu_ref_arr) 21 21 { 22 $menu = &$menu_ref_arr[0]; 23 24 if ( ($block = $menu->get_block('mbMenu')) != null)22 $menu = &$menu_ref_arr[0]; 23 24 if (($block = $menu->get_block('mbMenu')) != null) 25 25 { 26 array_push($block->data,array(26 $block->data[] = array( 27 27 'URL' => SKELETON_PUBLIC, 28 28 'TITLE' => l10n('Skeleton'), 29 29 'NAME' => l10n('Skeleton'), 30 ));30 ); 31 31 } 32 32 } … … 38 38 { 39 39 $menu = &$menu_ref_arr[0]; 40 40 41 41 if ($menu->get_id() == 'menubar') 42 42 { 43 $menu->register_block(new RegisteredBlock('mbSkeleton', l10n('Skeleton'), 'skeleton')); 43 // identifier, title, owner 44 $menu->register_block(new RegisteredBlock('mbSkeleton', l10n('Skeleton'), 'Skeleton')); 44 45 } 45 46 } … … 51 52 { 52 53 $menu = &$menu_ref_arr[0]; 53 54 if ( ($block = $menu->get_block('mbSkeleton')) != null)54 55 if (($block = $menu->get_block('mbSkeleton')) != null) 55 56 { 56 global $template;57 58 57 $block->set_title(l10n('Skeleton')); 59 58 60 59 $block->data['link1'] = 61 60 array( … … 72 71 'NAME' => l10n('Link 2'), 73 72 ); 74 73 75 74 $block->template = realpath(SKELETON_PATH . 'template/menubar_skeleton.tpl'); 76 75 } -
extensions/skeleton/trunk/include/public_events.inc.php
r26137 r28650 12 12 { 13 13 $page['section'] = 'skeleton'; 14 14 15 15 // section_title is for breadcrumb, title is for page <title> 16 16 $page['section_title'] = '<a href="'.get_absolute_root_url().'">'.l10n('Home').'</a>'.$conf['level_separator'].'<a href="'.SKELETON_PUBLIC.'">'.l10n('Skeleton').'</a>'; 17 17 $page['title'] = l10n('Skeleton'); 18 18 19 19 $page['body_id'] = 'theSkeletonPage'; 20 20 $page['is_external'] = true; // inform Piwigo that you are on a new page … … 29 29 global $page, $template; 30 30 31 if ( isset($page['section']) and $page['section']=='skeleton')31 if (isset($page['section']) and $page['section']=='skeleton') 32 32 { 33 33 include(SKELETON_PATH . 'include/skeleton_page.inc.php'); … … 41 41 { 42 42 global $template; 43 43 44 44 $template->assign('SKELETON_PATH', SKELETON_PATH); 45 45 $template->set_filename('skeleton_button', realpath(SKELETON_PATH.'template/my_button.tpl')); 46 46 $button = $template->parse('skeleton_button', true); 47 47 48 48 if (script_basename()=='index') 49 49 { 50 $template->add_index_button($button, EVENT_HANDLER_PRIORITY_NEUTRAL);50 $template->add_index_button($button, BUTTONS_RANK_NEUTRAL); 51 51 } 52 52 else 53 53 { 54 $template->add_picture_button($button, EVENT_HANDLER_PRIORITY_NEUTRAL);54 $template->add_picture_button($button, BUTTONS_RANK_NEUTRAL); 55 55 } 56 56 } … … 62 62 { 63 63 global $template; 64 64 65 65 $template->set_prefilter('picture', 'skeleton_picture_prefilter'); 66 66 } … … 69 69 { 70 70 $search = '{if $display_info.author and isset($INFO_AUTHOR)}'; 71 $replace = '<div id="Skeleton" class="imageInfo"> 72 <dt>{\'Skeleton\'|@translate}</dt> 73 <dd style="color:orange;">{\'Piwigo rocks\'|@translate}</dd> 74 </div> 75 '.$search; 71 $replace = ' 72 <div id="Skeleton" class="imageInfo"> 73 <dt>{\'Skeleton\'|@translate}</dt> 74 <dd style="color:orange;">{\'Piwigo rocks\'|@translate}</dd> 75 </div> 76 '; 76 77 77 return str_replace($search, $replace , $content);78 return str_replace($search, $replace.$search, $content); 78 79 } -
extensions/skeleton/trunk/include/skeleton_page.inc.php
r24182 r28650 9 9 10 10 $template->assign(array( 11 // this is useful when having big blocks of text which must be translated 12 // prefer separated HTML files over big lang.php files 11 13 'INTRO_CONTENT' => load_language('intro.html', SKELETON_PATH, array('return'=>true)), 12 14 'SKELETON_PATH' => SKELETON_PATH, -
extensions/skeleton/trunk/include/ws_functions.inc.php
r26137 r28650 5 5 { 6 6 $service = &$arr[0]; 7 7 8 // only the first two parameters are mandatory 8 9 $service->addMethod( 9 'pwg.PHPinfo', 10 'ws_php_info', 10 'pwg.PHPinfo', // method name 11 'ws_php_info', // linked PHP function 12 array( // list of parameters 13 'what' => array( 14 'default' => 'INFO_ALL', // default value 15 'info' => 'This parameter has a default value', // parameter description 16 ), 17 'ids' => array( 18 'flags' => WS_PARAM_OPTIONAL|WS_PARAM_FORCE_ARRAY, // flags are WS_PARAM_OPTIONAL, WS_PARAM_ACCEPT_ARRAY, WS_PARAM_FORCE_ARRAY 19 'type' => WS_TYPE_INT|WS_TYPE_POSITIVE|WS_TYPE_NOTNULL, // types are WS_TYPE_BOOL, WS_TYPE_INT, WS_TYPE_FLOAT, WS_TYPE_POSITIVE, WS_TYPE_NOTNULL, WS_TYPE_ID 20 'info' => 'This one must be an array', 21 ), 22 'count' => array( 23 'flags' => WS_PARAM_OPTIONAL, 24 'type' => WS_TYPE_INT|WS_TYPE_POSITIVE, 25 'maxValue' => 100, // maximum value for ints and floats 26 ), 27 ), 28 'Returns phpinfo', // method description 29 null, // file to include after param check and before function exec 11 30 array( 12 'what' => array('default'=>'INFO_ALL', 'info'=>'This parameter has a default value'), 13 'ids' => array('flags'=>WS_PARAM_FORCE_ARRAY, 'info'=>'This one must be an array'), 14 ), 15 'Returns phpinfo (don\'t use XML request format)', 16 null, 17 array('hidden' => false) // you can hide your method from reflection.getMethodList method 31 'hidden' => false, // you can hide your method from reflection.getMethodList method 32 'admin_only' => true, // you can restrict access to admins only 33 'post_only' => false, // you can disallow GET resquests for this method 34 ) 18 35 ); 19 36 } … … 21 38 function ws_php_info($params, &$service) 22 39 { 23 if (!is_admin())24 {25 return new PwgError(403, 'Forbidden');26 }27 28 40 return phpinfo(constant($params['what'])); 29 41 } -
extensions/skeleton/trunk/main.inc.php
r25407 r28650 1 <?php 1 <?php 2 2 /* 3 3 Plugin Name: skeleton … … 10 10 11 11 /** 12 * This is t e main file of the plugin, called by Piwigo in "include/common.inc.php" line 137.12 * This is the main file of the plugin, called by Piwigo in "include/common.inc.php" line 137. 13 13 * At this point of the code, Piwigo is not completely initialized, so nothing should be done directly 14 14 * except define constants and event handlers (see http://piwigo.org/doc/doku.php?id=dev:plugins) … … 17 17 defined('PHPWG_ROOT_PATH') or die('Hacking attempt!'); 18 18 19 global $prefixeTable;20 21 19 22 20 // +-----------------------------------------------------------------------+ 23 21 // | Define plugin constants | 24 22 // +-----------------------------------------------------------------------+ 23 global $prefixeTable; 24 25 25 define('SKELETON_ID', basename(dirname(__FILE__))); 26 26 define('SKELETON_PATH' , PHPWG_PLUGINS_PATH . SKELETON_ID . '/'); … … 29 29 define('SKELETON_PUBLIC', get_absolute_root_url() . make_index_url(array('section' => 'skeleton')) . '/'); 30 30 define('SKELETON_DIR', PHPWG_ROOT_PATH . PWG_LOCAL_DIR . 'skeleton/'); 31 define('SKELETON_VERSION', 'auto');32 // this is automatically updated by PEM if you publish your plugin with SVN, otherwise you musn't forget to change it, as well as "Version" in the plugin header33 31 34 32 … … 46 44 { 47 45 // file containing all admin handlers functions 48 include_once(SKELETON_PATH . 'include/admin_events.inc.php');49 46 $admin_file = SKELETON_PATH . 'include/admin_events.inc.php'; 47 50 48 // admin plugins menu link 51 add_event_handler('get_admin_plugin_menu_links', 'skeleton_admin_plugin_menu_links'); 52 49 add_event_handler('get_admin_plugin_menu_links', 'skeleton_admin_plugin_menu_links', 50 EVENT_HANDLER_PRIORITY_NEUTRAL, $admin_file); 51 53 52 // new tab on photo page 54 add_event_handler('tabsheet_before_select', 'skeleton_tabsheet_before_select', EVENT_HANDLER_PRIORITY_NEUTRAL, 2); 55 53 add_event_handler('tabsheet_before_select', 'skeleton_tabsheet_before_select', 54 EVENT_HANDLER_PRIORITY_NEUTRAL, $admin_file); 55 56 56 // new prefiler in Batch Manager 57 add_event_handler('get_batch_manager_prefilters', 'skeleton_add_batch_manager_prefilters'); 58 add_event_handler('perform_batch_manager_prefilters', 'skeleton_perform_batch_manager_prefilters', EVENT_HANDLER_PRIORITY_NEUTRAL, 2); 59 57 add_event_handler('get_batch_manager_prefilters', 'skeleton_add_batch_manager_prefilters', 58 EVENT_HANDLER_PRIORITY_NEUTRAL, $admin_file); 59 add_event_handler('perform_batch_manager_prefilters', 'skeleton_perform_batch_manager_prefilters', 60 EVENT_HANDLER_PRIORITY_NEUTRAL, $admin_file); 61 60 62 // new action in Batch Manager 61 add_event_handler('loc_end_element_set_global', 'skeleton_loc_end_element_set_global'); 62 add_event_handler('element_set_global_action', 'skeleton_element_set_global_action', EVENT_HANDLER_PRIORITY_NEUTRAL, 2); 63 add_event_handler('loc_end_element_set_global', 'skeleton_loc_end_element_set_global', 64 EVENT_HANDLER_PRIORITY_NEUTRAL, $admin_file); 65 add_event_handler('element_set_global_action', 'skeleton_element_set_global_action', 66 EVENT_HANDLER_PRIORITY_NEUTRAL, $admin_file); 63 67 } 64 68 else 65 69 { 66 70 // file containing all public handlers functions 67 include_once(SKELETON_PATH . 'include/public_events.inc.php');68 71 $public_file = SKELETON_PATH . 'include/public_events.inc.php'; 72 69 73 // add a public section 70 add_event_handler('loc_end_section_init', 'skeleton_loc_end_section_init'); 71 add_event_handler('loc_end_index', 'skeleton_loc_end_page'); 72 74 add_event_handler('loc_end_section_init', 'skeleton_loc_end_section_init', 75 EVENT_HANDLER_PRIORITY_NEUTRAL, $public_file); 76 add_event_handler('loc_end_index', 'skeleton_loc_end_page', 77 EVENT_HANDLER_PRIORITY_NEUTRAL, $public_file); 78 73 79 // add button on album and photos pages 74 add_event_handler('loc_end_index', 'skeleton_add_button'); 75 add_event_handler('loc_end_picture', 'skeleton_add_button'); 76 80 add_event_handler('loc_end_index', 'skeleton_add_button', 81 EVENT_HANDLER_PRIORITY_NEUTRAL, $public_file); 82 add_event_handler('loc_end_picture', 'skeleton_add_button', 83 EVENT_HANDLER_PRIORITY_NEUTRAL, $public_file); 84 77 85 // prefilter on photo page 78 add_event_handler('loc_end_picture', 'skeleton_loc_end_picture'); 86 add_event_handler('loc_end_picture', 'skeleton_loc_end_picture', 87 EVENT_HANDLER_PRIORITY_NEUTRAL, $public_file); 79 88 } 80 89 90 // file containing API function 91 $ws_file = SKELETON_PATH . 'include/ws_functions.inc.php'; 92 81 93 // add API function 82 add_event_handler('ws_add_methods', 'skeleton_ws_add_methods'); 94 add_event_handler('ws_add_methods', 'skeleton_ws_add_methods', 95 EVENT_HANDLER_PRIORITY_NEUTRAL, $ws_file); 83 96 84 97 … … 88 101 89 102 // file containing the class for menu handlers functions 90 include_once(SKELETON_PATH . 'include/menu_events.class.php');103 $menu_file = SKELETON_PATH . 'include/menu_events.class.php'; 91 104 92 105 // add item to existing menu (EVENT_HANDLER_PRIORITY_NEUTRAL+10 is for compatibility with Advanced Menu Manager plugin) 93 add_event_handler('blockmanager_apply', array('SkeletonMenu', 'blockmanager_apply1'), EVENT_HANDLER_PRIORITY_NEUTRAL+10); 106 add_event_handler('blockmanager_apply', array('SkeletonMenu', 'blockmanager_apply1'), 107 EVENT_HANDLER_PRIORITY_NEUTRAL+10, $menu_file); 94 108 95 109 // add a new menu block (the declaration must be done every time, in order to be able to manage the menu block in "Menus" screen and Advanced Menu Manager) 96 add_event_handler('blockmanager_register_blocks', array('SkeletonMenu', 'blockmanager_register_blocks')); 97 add_event_handler('blockmanager_apply', array('SkeletonMenu', 'blockmanager_apply2')); 110 add_event_handler('blockmanager_register_blocks', array('SkeletonMenu', 'blockmanager_register_blocks'), 111 EVENT_HANDLER_PRIORITY_NEUTRAL, $menu_file); 112 add_event_handler('blockmanager_apply', array('SkeletonMenu', 'blockmanager_apply2'), 113 EVENT_HANDLER_PRIORITY_NEUTRAL, $menu_file); 114 98 115 // NOTE: blockmanager_apply1() and blockmanager_apply2() can (must) be merged 99 100 101 102 // files containing specific plugin functions103 include_once(SKELETON_PATH . 'include/functions.inc.php');104 include_once(SKELETON_PATH . 'include/ws_functions.inc.php');105 106 116 107 117 … … 115 125 { 116 126 global $conf; 117 118 // apply upgrade if needed 119 include_once(SKELETON_PATH . 'maintain.inc.php'); 120 $maintain = new skeleton_maintain(SKELETON_ID); 121 $maintain->autoUpdate(SKELETON_VERSION, 'install'); 122 127 123 128 // load plugin language file 124 129 load_language('plugin.lang', SKELETON_PATH); 125 130 126 131 // prepare plugin configuration 127 $conf['skeleton'] = unserialize($conf['skeleton']);132 $conf['skeleton'] = safe_unserialize($conf['skeleton']); 128 133 } -
extensions/skeleton/trunk/template/my_button.tpl
r26137 r28650 1 1 {strip} 2 {combine_css id="skeleton" path=$SKELETON_PATH|cat:"template/style.css"} 3 4 {* <!-- nothing more than the button itself must be defined here --> *} 2 5 <a href="javascript:alert('Hello world!');" title="{'This is not the %s you are looking for'|translate:('button'|translate)}" class="pwg-state-default pwg-button" rel="nofollow"> 3 <span class="pwg-icon " style="background:url('{$ROOT_URL}{$SKELETON_PATH}template/head.png') center center no-repeat;"> </span>6 <span class="pwg-icon skeleton-button"> </span> 4 7 <span class="pwg-button-text">{'Skeleton'|translate}</span> 5 8 </a> -
extensions/skeleton/trunk/template/skeleton_page.tpl
r24182 r28650 1 {combine_css path=$SKELETON_PATH|@cat:"template/style.css"} 1 {* <!-- load CSS files --> *} 2 {combine_css id="skeleton" path=$SKELETON_PATH|cat:"template/style.css"} 2 3 3 {* <!-- add scripts here--> *}4 { footer_script require='jquery'}{literal}5 var reverse=0; 6 $("#test").click(function() { 7 if (!reverse) { 8 $("body").css('-moz-transform','rotate(180deg)');9 $("body").css('-webkit-transform','rotate(180deg)');10 $("body").css('-o-transform','rotate(180deg)');11 reverse=1; 12 } else { 13 $("body").css('-moz-transform','rotate(0deg)'); 14 $("body").css('-webkit-transform','rotate(0deg)'); 15 $("body").css('-o-transform','rotate(0deg)');16 reverse=0;4 {* <!-- load JS files --> *} 5 {* {combine_script id="skeleton" require="jquery" path=$SKELETON_PATH|cat:"template/script.js"} *} 6 7 {* <!-- add inline JS --> *} 8 {footer_script require="jquery"} 9 jQuery('#skeleton').on('click', function(){ 10 alert('{'Hello world!'|translate}'); 11 }); 12 {/footer_script} 13 14 {* <!-- add inline CSS --> *} 15 {html_style} 16 #skeleton { 17 display:block; 17 18 } 18 }); 19 {/literal}{/footer_script} 19 {/html_style} 20 20 21 21 22 {* <!-- add page content here --> *} 22 23 <h1>{'What Skeleton can do for me?'|translate}</h1> 24 23 25 <blockquote> 24 26 {$INTRO_CONTENT} 25 27 </blockquote> 26 28 27 <div id=" test">{'Click for fun'|translate}</div>29 <div id="skeleton">{'Click for fun'|translate}</div> -
extensions/skeleton/trunk/template/style.css
r24182 r28650 1 #test { 1 /* CSS code for your plugin */ 2 3 #skeleton { 2 4 width:400px; 3 5 height:30px; … … 24 26 cursor:pointer; 25 27 } 26 # test:hover {27 -moz-transform:rotate( 175deg);28 -webkit-transform:rotate( 175deg);29 -o-transform:rotate( 175deg);30 transform:rotate( 175deg);28 #skeleton:hover { 29 -moz-transform:rotate(-5deg); 30 -webkit-transform:rotate(-5deg); 31 -o-transform:rotate(-5deg); 32 transform:rotate(-5deg); 31 33 } 34 35 .skeleton-button { 36 background:url('head.png') center center no-repeat !important; 37 min-width:26px; 38 min-height:26px; 39 }
Note: See TracChangeset
for help on using the changeset viewer.