ラベルのツリー階層化改造
headタグ内に入れる
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' type='text/javascript'/>
ラベルウィジェットの最後に「ラベル階層化 と トグル処理 のscript」を入れる
<b:widget id='Label1' locked='false' title='Labels' type='Label'>
<b:includable id='main'>
<b:if cond='data:title'>
<h2><data:title/></h2>
</b:if>
<div expr:class='"widget-content " + data:display + "-label-widget-content"'>
:
<b:include name='quickedit'/>
<script type='text/javascript'>
//ラベル階層化
$(function(){
// START: Awesome Inc. テンプレ補正
var cssUL = {
'marginTop' : '0px',
'marginRight' : '0px',
'marginLeft' : '0px',
'paddingLeft' : '15px'
};
var cssLI = {
'paddingRight' : '0px',
'paddingBottom' : '0px',
'paddingLeft' : '0px'
};
// START: Awesome Inc. テンプレ補正
var DELIMITER = " > ";
var list = $( 'div#Label1 div ul > li' );
var dest = $( "<ul style='display: none;'/>" );
var nodes = new Array();
$( list ).each( function() {
// START: Awesome Inc. テンプレ補正
var tagName = $( this ).get( 0 ).tagName.toLowerCase();
if ( tagName == 'li' ) {
$( this ).css( cssLI );
}
// E N D: Awesome Inc. テンプレ補正
var work;
if ( $( this ).children( 'a' ).length > 0 ) {
work = $( this ).children( 'a' ).text().split( DELIMITER );
$( this ).children( 'a' ).text( work[ work.length - 1 ] );
} else {
work = $( this ).children( 'span:first' ).text().split( DELIMITER );
$( this ).children( 'span:first' ).text( work[ work.length - 1 ] );
}
$( this ).addClass( "categoryLabel" );
var key = "";
var target = $( this );
$( work ).each( function( i ) {
if ( i == work.length - 1 ) {
if ( key == "" ) {
dest.append( $( target ).clone( true ) );
} else {
nodes[ key ].append( $( target ).clone( true ) );
}
$( target ).remove();
}else{
var parent = null;
if ( i > 0 ) {
parent = nodes[ key ];
key = key + DELIMITER;
}
key = key + work[ i ];
if ( nodes[ key ] == null ) {
var item = $( "<li class='categoryLabel'>" + work[ i ] + "</li>" );
var temp = $( "<ul style='display: none;'/>" );
// START: Awesome Inc. テンプレ補正
item.css( cssLI );
temp.css( cssUL );
// E N D: Awesome Inc. テンプレ補正
item.append( temp );
nodes[ key ] = temp;
if ( parent == null ) {
dest.append( item );
} else {
parent.append( item );
}
}
}
} );
} );
$( 'div#Label1 div ul' ).html( $( dest ).html() );
// START: Awesome Inc. テンプレ補正
$( 'div#Label1 div ul' ).css( cssUL );
// START: Awesome Inc. テンプレ補正
} );
//トグル処理
$( function() {
var open = 'data:image/gif;base64,'
+ 'R0lGODlhCQAJAJEAAP7+/oKCggICAgAAACwAAAAACQAJAAACEYyPoAvG614LQFg7ZZbxoR8UADs=';
var close = 'data:image/gif;base64,'
+ 'R0lGODlhCQAJAJEAAP7+/oKCggICAgAAACwAAAAACQAJAAACFIyPoAu2spyCyol7W3hxz850CFIA'
+ 'ADs=';
$( '.categoryLabel:has(ul)' )
.click( function( event ) {
if ( this == event.target ) {
$( this ).children().toggle();
$( this ).css( 'list-style-image',
( $( this ).children().is( ':hidden' ) ) ?
'url(' + close + ')' : 'url(' + open + ')' );
}
} )
.css( 'cursor','pointer' );
$( '.categoryLabel:has(ul)' ).css( {
cursor: 'pointer',
'list-style-image': 'url(' + close + ')'
} );
$( '.categoryLabel:not(:has(ul))' ).css( {
cursor: 'pointer',
'list-style-image': 'url(' + open + ')'
} );
$( '#Label1Cover' ).show();
} );
</script>
</div>
</b:includable>
</b:widget>