chef-server-slice 0.7.10
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +201 -0
- data/README.rdoc +135 -0
- data/app/controllers/application.rb +228 -0
- data/app/controllers/cookbook_attributes.rb +59 -0
- data/app/controllers/cookbook_definitions.rb +60 -0
- data/app/controllers/cookbook_files.rb +94 -0
- data/app/controllers/cookbook_libraries.rb +60 -0
- data/app/controllers/cookbook_recipes.rb +59 -0
- data/app/controllers/cookbook_templates.rb +80 -0
- data/app/controllers/cookbooks.rb +63 -0
- data/app/controllers/exceptions.rb +33 -0
- data/app/controllers/main.rb +7 -0
- data/app/controllers/nodes.rb +144 -0
- data/app/controllers/openid_consumer.rb +133 -0
- data/app/controllers/openid_register.rb +113 -0
- data/app/controllers/openid_server.rb +252 -0
- data/app/controllers/roles.rb +138 -0
- data/app/controllers/search.rb +58 -0
- data/app/controllers/search_entries.rb +73 -0
- data/app/controllers/status.rb +34 -0
- data/app/helpers/application_helper.rb +144 -0
- data/app/helpers/cookbook_attributes_helper.rb +7 -0
- data/app/helpers/cookbook_definitions_helper.rb +8 -0
- data/app/helpers/cookbook_files_helper.rb +8 -0
- data/app/helpers/cookbook_libraries_helper.rb +7 -0
- data/app/helpers/cookbook_recipes_helper.rb +8 -0
- data/app/helpers/cookbook_templates_helper.rb +8 -0
- data/app/helpers/cookbooks_helper.rb +31 -0
- data/app/helpers/exceptions_helper.rb +6 -0
- data/app/helpers/global_helpers.rb +39 -0
- data/app/helpers/nodes_helper.rb +33 -0
- data/app/helpers/openid_consumer_helper.rb +8 -0
- data/app/helpers/openid_register_helper.rb +8 -0
- data/app/helpers/openid_server_helper.rb +6 -0
- data/app/helpers/openid_server_helpers.rb +29 -0
- data/app/helpers/roles_helper.rb +5 -0
- data/app/helpers/search_entries_helper.rb +8 -0
- data/app/helpers/search_helper.rb +38 -0
- data/app/helpers/status_helper.rb +26 -0
- data/app/views/cookbook_templates/index.html.haml +7 -0
- data/app/views/cookbooks/index.html.haml +10 -0
- data/app/views/cookbooks/show.html.haml +40 -0
- data/app/views/exceptions/bad_request.json.erb +1 -0
- data/app/views/exceptions/internal_server_error.html.erb +216 -0
- data/app/views/exceptions/not_acceptable.html.erb +63 -0
- data/app/views/exceptions/not_found.html.erb +47 -0
- data/app/views/exceptions/standard_error.html.erb +217 -0
- data/app/views/layout/chef_server_slice.html.haml +53 -0
- data/app/views/layout/login.html.haml +37 -0
- data/app/views/main/index.html.erb +1 -0
- data/app/views/nodes/_action.html.haml +13 -0
- data/app/views/nodes/_form.html.haml +56 -0
- data/app/views/nodes/_navigation.html.haml +9 -0
- data/app/views/nodes/_resource.html.haml +22 -0
- data/app/views/nodes/edit.html.haml +7 -0
- data/app/views/nodes/index.html.haml +25 -0
- data/app/views/nodes/new.html.haml +6 -0
- data/app/views/nodes/show.html.haml +60 -0
- data/app/views/openid_consumer/index.html.haml +23 -0
- data/app/views/openid_consumer/start.html.haml +4 -0
- data/app/views/openid_login/index.html.haml +5 -0
- data/app/views/openid_register/index.html.haml +19 -0
- data/app/views/openid_register/show.html.haml +7 -0
- data/app/views/openid_server/decide.html.haml +27 -0
- data/app/views/roles/_form.html.haml +48 -0
- data/app/views/roles/_navigation.html.haml +9 -0
- data/app/views/roles/edit.html.haml +6 -0
- data/app/views/roles/index.html.haml +22 -0
- data/app/views/roles/new.html.haml +6 -0
- data/app/views/roles/show.html.haml +29 -0
- data/app/views/search/_search_form.html.haml +6 -0
- data/app/views/search/index.html.haml +9 -0
- data/app/views/search/show.html.haml +14 -0
- data/app/views/search_entries/index.html.haml +8 -0
- data/app/views/search_entries/show.html.haml +7 -0
- data/app/views/status/index.html.haml +88 -0
- data/config/init.rb +48 -0
- data/config/router.rb +6 -0
- data/lib/chef-server-slice.rb +150 -0
- data/lib/chef-server-slice/merbtasks.rb +103 -0
- data/lib/chef-server-slice/slicetasks.rb +20 -0
- data/lib/chef-server-slice/spectasks.rb +53 -0
- data/public/facebox/README.txt +4 -0
- data/public/facebox/b.png +0 -0
- data/public/facebox/bl.png +0 -0
- data/public/facebox/br.png +0 -0
- data/public/facebox/closelabel.gif +0 -0
- data/public/facebox/facebox.css +95 -0
- data/public/facebox/facebox.js +319 -0
- data/public/facebox/loading.gif +0 -0
- data/public/facebox/tl.png +0 -0
- data/public/facebox/tr.png +0 -0
- data/public/images/avatar.png +0 -0
- data/public/images/black_big.png +0 -0
- data/public/images/indicator.gif +0 -0
- data/public/images/merb.jpg +0 -0
- data/public/images/toggle-collapse-dark.png +0 -0
- data/public/images/toggle-collapse-light.png +0 -0
- data/public/images/toggle-collapse.gif +0 -0
- data/public/images/toggle-expand-dark.png +0 -0
- data/public/images/toggle-expand-light.png +0 -0
- data/public/images/toggle-expand.gif +0 -0
- data/public/images/treeBuilderImages/Thumbs.db +0 -0
- data/public/images/treeBuilderImages/doc.gif +0 -0
- data/public/images/treeBuilderImages/docNode.gif +0 -0
- data/public/images/treeBuilderImages/docNodeLast.gif +0 -0
- data/public/images/treeBuilderImages/docNodeLastFirst.gif +0 -0
- data/public/images/treeBuilderImages/folder.gif +0 -0
- data/public/images/treeBuilderImages/folderNode.gif +0 -0
- data/public/images/treeBuilderImages/folderNodeFirst.gif +0 -0
- data/public/images/treeBuilderImages/folderNodeLast.gif +0 -0
- data/public/images/treeBuilderImages/folderNodeLastFirst.gif +0 -0
- data/public/images/treeBuilderImages/folderNodeOpen.gif +0 -0
- data/public/images/treeBuilderImages/folderNodeOpenFirst.gif +0 -0
- data/public/images/treeBuilderImages/folderNodeOpenLast.gif +0 -0
- data/public/images/treeBuilderImages/folderNodeOpenLastFirst.gif +0 -0
- data/public/images/treeBuilderImages/folderOpen.gif +0 -0
- data/public/images/treeBuilderImages/vertLine.gif +0 -0
- data/public/javascripts/JSONeditor.js +1171 -0
- data/public/javascripts/chef.js +126 -0
- data/public/javascripts/jquery-1.3.2.min.js +19 -0
- data/public/javascripts/jquery-ui-1.7.1.custom.min.js +65 -0
- data/public/javascripts/jquery.editinline.js +108 -0
- data/public/javascripts/jquery.jeditable.mini.js +30 -0
- data/public/javascripts/jquery.livequery.js +250 -0
- data/public/javascripts/jquery.localscroll.js +104 -0
- data/public/javascripts/jquery.scrollTo.js +150 -0
- data/public/javascripts/jquery.tools.min.js +17 -0
- data/public/javascripts/jquery.treeTable.min.js +165 -0
- data/public/stylesheets/base.css +336 -0
- data/public/stylesheets/chef.css +157 -0
- data/public/stylesheets/images/ui-bg_diagonals-small_0_aaaaaa_40x40.png +0 -0
- data/public/stylesheets/images/ui-bg_diagonals-thick_15_444444_40x40.png +0 -0
- data/public/stylesheets/images/ui-bg_glass_100_f0f0f0_1x400.png +0 -0
- data/public/stylesheets/images/ui-bg_glass_50_99c2ff_1x400.png +0 -0
- data/public/stylesheets/images/ui-bg_glass_55_fbf5d0_1x400.png +0 -0
- data/public/stylesheets/images/ui-bg_glass_80_e6e6e6_1x400.png +0 -0
- data/public/stylesheets/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/public/stylesheets/images/ui-bg_highlight-hard_100_f9f9f9_1x100.png +0 -0
- data/public/stylesheets/images/ui-bg_highlight-soft_100_e7eef3_1x100.png +0 -0
- data/public/stylesheets/images/ui-icons_222222_256x240.png +0 -0
- data/public/stylesheets/images/ui-icons_2694e8_256x240.png +0 -0
- data/public/stylesheets/images/ui-icons_2e83ff_256x240.png +0 -0
- data/public/stylesheets/images/ui-icons_72a7cf_256x240.png +0 -0
- data/public/stylesheets/images/ui-icons_888888_256x240.png +0 -0
- data/public/stylesheets/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/public/stylesheets/images/ui-icons_ffffff_256x240.png +0 -0
- data/public/stylesheets/jquery-ui-1.7.1.custom.css +404 -0
- data/public/stylesheets/jquery.treeTable.css +43 -0
- data/public/stylesheets/themes/bec-green/style.css +290 -0
- data/public/stylesheets/themes/bec/style.css +301 -0
- data/public/stylesheets/themes/blue/style.css +280 -0
- data/public/stylesheets/themes/default/style.css +267 -0
- data/public/stylesheets/themes/djime-cerulean/style.css +298 -0
- data/public/stylesheets/themes/kathleene/style.css +272 -0
- data/public/stylesheets/themes/orange/style.css +263 -0
- data/public/stylesheets/themes/reidb-greenish/style.css +301 -0
- metadata +341 -0
@@ -0,0 +1,104 @@
|
|
1
|
+
/**
|
2
|
+
* jQuery.LocalScroll
|
3
|
+
* Copyright (c) 2007-2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
|
4
|
+
* Dual licensed under MIT and GPL.
|
5
|
+
* Date: 6/3/2008
|
6
|
+
*
|
7
|
+
* @projectDescription Animated scrolling navigation, using anchors.
|
8
|
+
* http://flesler.blogspot.com/2007/10/jquerylocalscroll-10.html
|
9
|
+
* @author Ariel Flesler
|
10
|
+
* @version 1.2.6
|
11
|
+
*
|
12
|
+
* @id jQuery.fn.localScroll
|
13
|
+
* @param {Object} settings Hash of settings, it is passed in to jQuery.ScrollTo, none is required.
|
14
|
+
* @return {jQuery} Returns the same jQuery object, for chaining.
|
15
|
+
*
|
16
|
+
* @example $('ul.links').localScroll();
|
17
|
+
*
|
18
|
+
* @example $('ul.links').localScroll({ filter:'.animated', duration:400, axis:'x' });
|
19
|
+
*
|
20
|
+
* @example $.localScroll({ target:'#pane', axis:'xy', queue:true, event:'mouseover' });
|
21
|
+
*
|
22
|
+
* Notes:
|
23
|
+
* - The plugin requires jQuery.ScrollTo.
|
24
|
+
* - The hash of settings, is passed to jQuery.ScrollTo, so the settings are valid for that plugin as well.
|
25
|
+
* - jQuery.localScroll can be used if the desired links, are all over the document, it accepts the same settings.
|
26
|
+
* - If the setting 'lazy' is set to true, then the binding will still work for later added anchors.
|
27
|
+
* - The setting 'speed' is deprecated, use 'duration' instead.
|
28
|
+
* - If onBefore returns false, the event is ignored.
|
29
|
+
**/
|
30
|
+
;(function( $ ){
|
31
|
+
var URI = location.href.replace(/#.*/,'');//local url without hash
|
32
|
+
|
33
|
+
var $localScroll = $.localScroll = function( settings ){
|
34
|
+
$('body').localScroll( settings );
|
35
|
+
};
|
36
|
+
|
37
|
+
//Many of these defaults, belong to jQuery.ScrollTo, check it's demo for an example of each option.
|
38
|
+
//@see http://www.freewebs.com/flesler/jQuery.ScrollTo/
|
39
|
+
$localScroll.defaults = {//the defaults are public and can be overriden.
|
40
|
+
duration:1000, //how long to animate.
|
41
|
+
axis:'y',//which of top and left should be modified.
|
42
|
+
event:'click',//on which event to react.
|
43
|
+
stop:true//avoid queuing animations
|
44
|
+
/*
|
45
|
+
lock:false,//ignore events if already animating
|
46
|
+
lazy:false,//if true, links can be added later, and will still work.
|
47
|
+
target:null, //what to scroll (selector or element). Keep it null if want to scroll the whole window.
|
48
|
+
filter:null, //filter some anchors out of the matched elements.
|
49
|
+
hash: false//if true, the hash of the selected link, will appear on the address bar.
|
50
|
+
*/
|
51
|
+
};
|
52
|
+
|
53
|
+
//if the URL contains a hash, it will scroll to the pointed element
|
54
|
+
$localScroll.hash = function( settings ){
|
55
|
+
settings = $.extend( {}, $localScroll.defaults, settings );
|
56
|
+
settings.hash = false;//can't be true
|
57
|
+
if( location.hash )
|
58
|
+
setTimeout(function(){ scroll( 0, location, settings ); }, 0 );//better wrapped with a setTimeout
|
59
|
+
};
|
60
|
+
|
61
|
+
$.fn.localScroll = function( settings ){
|
62
|
+
settings = $.extend( {}, $localScroll.defaults, settings );
|
63
|
+
|
64
|
+
return ( settings.persistent || settings.lazy )
|
65
|
+
? this.bind( settings.event, function( e ){//use event delegation, more links can be added later.
|
66
|
+
var a = $([e.target, e.target.parentNode]).filter(filter)[0];//if a valid link was clicked.
|
67
|
+
a && scroll( e, a, settings );//do scroll.
|
68
|
+
})
|
69
|
+
: this.find('a,area')//bind concretely, to each matching link
|
70
|
+
.filter( filter ).bind( settings.event, function(e){
|
71
|
+
scroll( e, this, settings );
|
72
|
+
}).end()
|
73
|
+
.end();
|
74
|
+
|
75
|
+
function filter(){//is this a link that points to an anchor and passes a possible filter ? href is checked to avoid a bug in FF.
|
76
|
+
return !!this.href && !!this.hash && this.href.replace(this.hash,'') == URI && (!settings.filter || $(this).is( settings.filter ));
|
77
|
+
};
|
78
|
+
};
|
79
|
+
|
80
|
+
function scroll( e, link, settings ){
|
81
|
+
var id = link.hash.slice(1),
|
82
|
+
elem = document.getElementById(id) || document.getElementsByName(id)[0];
|
83
|
+
if ( elem ){
|
84
|
+
e && e.preventDefault();
|
85
|
+
var $target = $( settings.target || $.scrollTo.window() );//if none specified, then the window.
|
86
|
+
|
87
|
+
if( settings.lock && $target.is(':animated') ||
|
88
|
+
settings.onBefore && settings.onBefore.call(link, e, elem, $target) === false ) return;
|
89
|
+
|
90
|
+
if( settings.stop )
|
91
|
+
$target.queue('fx',[]).stop();//remove all its animations
|
92
|
+
$target
|
93
|
+
.scrollTo( elem, settings )//do scroll
|
94
|
+
.trigger('notify.serialScroll',[elem]);//notify serialScroll about this change
|
95
|
+
if( settings.hash )
|
96
|
+
$target.queue(function(){
|
97
|
+
location = link.hash;
|
98
|
+
// make sure this function is released
|
99
|
+
$(this).dequeue();
|
100
|
+
});
|
101
|
+
}
|
102
|
+
};
|
103
|
+
|
104
|
+
})( jQuery );
|
@@ -0,0 +1,150 @@
|
|
1
|
+
/**
|
2
|
+
* jQuery.ScrollTo
|
3
|
+
* Copyright (c) 2007-2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
|
4
|
+
* Dual licensed under MIT and GPL.
|
5
|
+
* Date: 2/19/2008
|
6
|
+
*
|
7
|
+
* @projectDescription Easy element scrolling using jQuery.
|
8
|
+
* http://flesler.blogspot.com/2007/10/jqueryscrollto.html
|
9
|
+
* Tested with jQuery 1.2.1. On FF 2.0.0.11, IE 6, Opera 9.22 and Safari 3 beta. on Windows.
|
10
|
+
*
|
11
|
+
* @author Ariel Flesler
|
12
|
+
* @version 1.3.3
|
13
|
+
*
|
14
|
+
* @id jQuery.scrollTo
|
15
|
+
* @id jQuery.fn.scrollTo
|
16
|
+
* @param {String, Number, DOMElement, jQuery, Object} target Where to scroll the matched elements.
|
17
|
+
* The different options for target are:
|
18
|
+
* - A number position (will be applied to all axes).
|
19
|
+
* - A string position ('44', '100px', '+=90', etc ) will be applied to all axes
|
20
|
+
* - A jQuery/DOM element ( logically, child of the element to scroll )
|
21
|
+
* - A string selector, that will be relative to the element to scroll ( 'li:eq(2)', etc )
|
22
|
+
* - A hash { top:x, left:y }, x and y can be any kind of number/string like above.
|
23
|
+
* @param {Number} duration The OVERALL length of the animation, this argument can be the settings object instead.
|
24
|
+
* @param {Object} settings Hash of settings, optional.
|
25
|
+
* @option {String} axis Which axis must be scrolled, use 'x', 'y', 'xy' or 'yx'.
|
26
|
+
* @option {Number} duration The OVERALL length of the animation.
|
27
|
+
* @option {String} easing The easing method for the animation.
|
28
|
+
* @option {Boolean} margin If true, the margin of the target element will be deducted from the final position.
|
29
|
+
* @option {Object, Number} offset Add/deduct from the end position. One number for both axes or { top:x, left:y }.
|
30
|
+
* @option {Object, Number} over Add/deduct the height/width multiplied by 'over', can be { top:x, left:y } when using both axes.
|
31
|
+
* @option {Boolean} queue If true, and both axis are given, the 2nd axis will only be animated after the first one ends.
|
32
|
+
* @option {Function} onAfter Function to be called after the scrolling ends.
|
33
|
+
* @option {Function} onAfterFirst If queuing is activated, this function will be called after the first scrolling ends.
|
34
|
+
* @return {jQuery} Returns the same jQuery object, for chaining.
|
35
|
+
*
|
36
|
+
* @example $('div').scrollTo( 340 );
|
37
|
+
*
|
38
|
+
* @example $('div').scrollTo( '+=340px', { axis:'y' } );
|
39
|
+
*
|
40
|
+
* @example $('div').scrollTo( 'p.paragraph:eq(2)', 500, { easing:'swing', queue:true, axis:'xy' } );
|
41
|
+
*
|
42
|
+
* @example var second_child = document.getElementById('container').firstChild.nextSibling;
|
43
|
+
* $('#container').scrollTo( second_child, { duration:500, axis:'x', onAfter:function(){
|
44
|
+
* alert('scrolled!!');
|
45
|
+
* }});
|
46
|
+
*
|
47
|
+
* @example $('div').scrollTo( { top: 300, left:'+=200' }, { offset:-20 } );
|
48
|
+
*
|
49
|
+
* Notes:
|
50
|
+
* - jQuery.scrollTo will make the whole window scroll, it accepts the same arguments as jQuery.fn.scrollTo.
|
51
|
+
* - If you are interested in animated anchor navigation, check http://jquery.com/plugins/project/LocalScroll.
|
52
|
+
* - The options margin, offset and over are ignored, if the target is not a jQuery object or a DOM element.
|
53
|
+
* - The option 'queue' won't be taken into account, if only 1 axis is given.
|
54
|
+
*/
|
55
|
+
;(function( $ ){
|
56
|
+
|
57
|
+
var $scrollTo = $.scrollTo = function( target, duration, settings ){
|
58
|
+
$scrollTo.window().scrollTo( target, duration, settings );
|
59
|
+
};
|
60
|
+
|
61
|
+
$scrollTo.defaults = {
|
62
|
+
axis:'y',
|
63
|
+
duration:1
|
64
|
+
};
|
65
|
+
|
66
|
+
//returns the element that needs to be animated to scroll the window
|
67
|
+
$scrollTo.window = function(){
|
68
|
+
return $( $.browser.safari ? 'body' : 'html' );
|
69
|
+
};
|
70
|
+
|
71
|
+
$.fn.scrollTo = function( target, duration, settings ){
|
72
|
+
if( typeof duration == 'object' ){
|
73
|
+
settings = duration;
|
74
|
+
duration = 0;
|
75
|
+
}
|
76
|
+
settings = $.extend( {}, $scrollTo.defaults, settings );
|
77
|
+
duration = duration || settings.speed || settings.duration;//speed is still recognized for backwards compatibility
|
78
|
+
settings.queue = settings.queue && settings.axis.length > 1;//make sure the settings are given right
|
79
|
+
if( settings.queue )
|
80
|
+
duration /= 2;//let's keep the overall speed, the same.
|
81
|
+
settings.offset = both( settings.offset );
|
82
|
+
settings.over = both( settings.over );
|
83
|
+
|
84
|
+
return this.each(function(){
|
85
|
+
var elem = this, $elem = $(elem),
|
86
|
+
t = target, toff, attr = {},
|
87
|
+
win = $elem.is('html,body');
|
88
|
+
switch( typeof t ){
|
89
|
+
case 'number'://will pass the regex
|
90
|
+
case 'string':
|
91
|
+
if( /^([+-]=)?\d+(px)?$/.test(t) ){
|
92
|
+
t = both( t );
|
93
|
+
break;//we are done
|
94
|
+
}
|
95
|
+
t = $(t,this);// relative selector, no break!
|
96
|
+
case 'object':
|
97
|
+
if( t.is || t.style )//DOM/jQuery
|
98
|
+
toff = (t = $(t)).offset();//get the real position of the target
|
99
|
+
}
|
100
|
+
$.each( settings.axis.split(''), function( i, axis ){
|
101
|
+
var Pos = axis == 'x' ? 'Left' : 'Top',
|
102
|
+
pos = Pos.toLowerCase(),
|
103
|
+
key = 'scroll' + Pos,
|
104
|
+
act = elem[key],
|
105
|
+
Dim = axis == 'x' ? 'Width' : 'Height',
|
106
|
+
dim = Dim.toLowerCase();
|
107
|
+
|
108
|
+
if( toff ){//jQuery/DOM
|
109
|
+
attr[key] = toff[pos] + ( win ? 0 : act - $elem.offset()[pos] );
|
110
|
+
|
111
|
+
if( settings.margin ){//if it's a dom element, reduce the margin
|
112
|
+
attr[key] -= parseInt(t.css('margin'+Pos)) || 0;
|
113
|
+
attr[key] -= parseInt(t.css('border'+Pos+'Width')) || 0;
|
114
|
+
}
|
115
|
+
|
116
|
+
attr[key] += settings.offset[pos] || 0;//add/deduct the offset
|
117
|
+
|
118
|
+
if( settings.over[pos] )//scroll to a fraction of its width/height
|
119
|
+
attr[key] += t[dim]() * settings.over[pos];
|
120
|
+
}else
|
121
|
+
attr[key] = t[pos];//remove the unnecesary 'px'
|
122
|
+
|
123
|
+
if( /^\d+$/.test(attr[key]) )//number or 'number'
|
124
|
+
attr[key] = attr[key] <= 0 ? 0 : Math.min( attr[key], max(Dim) );//check the limits
|
125
|
+
|
126
|
+
if( !i && settings.queue ){//queueing each axis is required
|
127
|
+
if( act != attr[key] )//don't waste time animating, if there's no need.
|
128
|
+
animate( settings.onAfterFirst );//intermediate animation
|
129
|
+
delete attr[key];//don't animate this axis again in the next iteration.
|
130
|
+
}
|
131
|
+
});
|
132
|
+
animate( settings.onAfter );
|
133
|
+
|
134
|
+
function animate( callback ){
|
135
|
+
$elem.animate( attr, duration, settings.easing, callback && function(){
|
136
|
+
callback.call(this, target);
|
137
|
+
});
|
138
|
+
};
|
139
|
+
function max( Dim ){
|
140
|
+
var el = win ? $.browser.opera ? document.body : document.documentElement : elem;
|
141
|
+
return el['scroll'+Dim] - el['client'+Dim];
|
142
|
+
};
|
143
|
+
});
|
144
|
+
};
|
145
|
+
|
146
|
+
function both( val ){
|
147
|
+
return typeof val == 'object' ? val : { top:val, left:val };
|
148
|
+
};
|
149
|
+
|
150
|
+
})( jQuery );
|
@@ -0,0 +1,17 @@
|
|
1
|
+
/*
|
2
|
+
* jquery.tools 1.0.0 - The missing UI library
|
3
|
+
*
|
4
|
+
* [tools.tooltip-1.0.0, tools.expose-1.0.2]
|
5
|
+
*
|
6
|
+
* Copyright (c) 2009 Tero Piirainen
|
7
|
+
* http://flowplayer.org/tools/
|
8
|
+
*
|
9
|
+
* Dual licensed under MIT and GPL 2+ licenses
|
10
|
+
* http://www.opensource.org/licenses
|
11
|
+
*
|
12
|
+
* -----
|
13
|
+
*
|
14
|
+
* Build: Wed Jun 03 19:51:51 GMT+00:00 2009
|
15
|
+
*/
|
16
|
+
(function(c){c.tools=c.tools||{version:{}};c.tools.version.tooltip="1.0.0";var b={toggle:[function(){this.getTip().show()},function(){this.getTip().hide()}]};c.tools.addTipEffect=function(d,f,e){b[d]=[f,e]};c.tools.addTipEffect("slideup",function(){var d=this.getConf();var e=d.slideOffset||10;this.getTip().css({opacity:0}).animate({top:"-="+e,opacity:d.opacity},d.slideInSpeed||200).show()},function(){var d=this.getConf();var e=d.slideOffset||10;this.getTip().animate({top:"-="+e,opacity:0},d.slideOutSpeed||200,function(){c(this).hide().animate({top:"+="+(e*2)},0)})});function a(g,e){var d=this;function i(j,k){c(d).bind(j,function(m,l){if(k&&k.call(this)===false&&l){l.proceed=false}});return d}c.each(e,function(j,k){if(c.isFunction(k)){i(j,k)}});var f=e.triggers?c(e.triggers):g.prev(e.trigger);if(!f.length){throw"cannot find trigges for tip: "+g.selector}f.bind(f.is("input")?"focus":"mouseover",function(j){d.show(j);g.hover(function(){d.show()},function(){d.hide()})});f.bind(f.is("input")?"blur":"mouseout",function(){d.hide()});g.css("opacity",e.opacity);var h=0;c.extend(d,{show:function(o){if(o){f=c(o.target)}clearTimeout(h);if(g.is(":animated")||g.is(":visible")){return d}var n={proceed:true};c(d).trigger("onBeforeShow",n);if(!n.proceed){return d}var m=f.position().top-g.outerHeight();var j=g.outerHeight()+f.outerHeight();var q=e.position[0];if(q=="center"){m+=j/2}if(q=="bottom"){m+=j}var k=f.outerWidth()+g.outerWidth();var l=f.position().left+f.outerWidth();q=e.position[1];if(q=="center"){l-=k/2}if(q=="left"){l-=k}m+=e.offset[0];l+=e.offset[1];g.css({position:"absolute",top:m,left:l});b[e.effect][0].call(d);c(d).trigger("onShow");return d},hide:function(){clearTimeout(h);h=setTimeout(function(){if(g.is(":animated")||!g.is(":visible")){return d}var j={proceed:true};c(d).trigger("onBeforeHide",j);if(!j.proceed){return d}b[e.effect][1].call(d);c(d).trigger("onHide")},e.delay||1);return d},isShown:function(){return g.is(":visible, :animated")},getConf:function(){return e},getTip:function(){return g},getTrigger:function(){return f},onBeforeShow:function(j){return i("onBeforeShow",j)},onShow:function(j){return i("onShow",j)},onBeforeHide:function(j){return i("onBeforeHide",j)},onHide:function(j){return i("onHide",j)}})}c.prototype.tooltip=function(d){var e=this.eq(typeof d=="number"?d:0).data("tooltip");if(e){return e}var f={trigger:null,triggers:null,effect:"slideup",delay:30,opacity:1,position:["top","center"],offset:[0,0],api:false};if(c.isFunction(d)){d={onBeforeShow:d}}c.extend(f,d);this.each(function(){e=new a(c(this),f);c(this).data("tooltip",e)});return f.api?e:this}})(jQuery);
|
17
|
+
(function(b){b.tools=b.tools||{version:{}};b.tools.version.expose="1.0.2";function a(){var e=b(window).width();if(b.browser.mozilla){return e}var d;if(window.innerHeight&&window.scrollMaxY){d=window.innerWidth+window.scrollMaxX}else{if(document.body.scrollHeight>document.body.offsetHeight){d=document.body.scrollWidth}else{d=document.body.offsetWidth}}return d<e?d+20:e}function c(g,h){var e=this,d=null,f=false,i=0;function j(k,l){b(e).bind(k,function(n,m){if(l&&l.call(this)===false&&m){m.proceed=false}});return e}b.each(h,function(k,l){if(b.isFunction(l)){j(k,l)}});b(window).bind("resize.expose",function(){if(d){d.css({width:a(),height:b(document).height()})}});b.extend(this,{getMask:function(){return d},getExposed:function(){return g},getConf:function(){return h},isLoaded:function(){return f},load:function(){if(f){return e}i=g.eq(0).css("zIndex");if(h.maskId){d=b("#"+h.maskId)}if(!d||!d.length){d=b("<div/>").css({position:"absolute",top:0,left:0,width:a(),height:b(document).height(),display:"none",opacity:0,zIndex:h.zIndex});if(h.maskId){d.attr("id",h.maskId)}b("body").append(d);var k=d.css("backgroundColor");if(!k||k=="transparent"||k=="rgba(0, 0, 0, 0)"){d.css("backgroundColor",h.color)}if(h.closeOnEsc){b(document).bind("keydown.unexpose",function(n){if(n.keyCode==27){e.close()}})}if(h.closeOnClick){d.bind("click.unexpose",function(){e.close()})}}var m={proceed:true};b(e).trigger("onBeforeLoad",m);if(!m.proceed){return e}b.each(g,function(){var n=b(this);if(!/relative|absolute/i.test(n.css("position"))){n.css("position","relative")}});g.css({zIndex:h.zIndex+1});var l=d.height();if(!this.isLoaded()){d.css({opacity:0,display:"block"}).fadeTo(h.loadSpeed,h.opacity,function(){if(d.height()!=l){d.css("height",l)}b(e).trigger("onLoad")})}f=true;return e},close:function(){if(!f){return e}var k={proceed:true};b(e).trigger("onBeforeClose",k);if(k.proceed===false){return e}d.fadeOut(h.closeSpeed,function(){b(e).trigger("onClose");g.css({zIndex:b.browser.msie?i:null})});f=false;return e},onBeforeLoad:function(k){return j("onBeforeLoad",k)},onLoad:function(k){return j("onLoad",k)},onBeforeClose:function(k){return j("onBeforeClose",k)},onClose:function(k){return j("onClose",k)}})}b.fn.expose=function(d){var e=this.eq(typeof d=="number"?d:0).data("expose");if(e){return e}var f={maskId:null,loadSpeed:"slow",closeSpeed:"fast",closeOnClick:true,closeOnEsc:true,zIndex:9998,opacity:0.8,color:"#456",api:false};if(typeof d=="string"){d={color:d}}b.extend(f,d);this.each(function(){e=new c(b(this),f);b(this).data("expose",e)});return f.api?e:this}})(jQuery);
|
@@ -0,0 +1,165 @@
|
|
1
|
+
/* jQuery treeTable Plugin 2.2.1 - http://ludo.cubicphuse.nl/jquery-plugins/treeTable/ */
|
2
|
+
(function($) {
|
3
|
+
// Helps to make options available to all functions
|
4
|
+
// TODO: This gives problems when there are both expandable and non-expandable
|
5
|
+
// trees on a page. The options shouldn't be global to all these instances!
|
6
|
+
var options;
|
7
|
+
|
8
|
+
$.fn.treeTable = function(opts) {
|
9
|
+
options = $.extend({}, $.fn.treeTable.defaults, opts);
|
10
|
+
|
11
|
+
return this.each(function() {
|
12
|
+
$(this).addClass("treeTable").find("tbody tr").each(function() {
|
13
|
+
// Initialize root nodes only whenever possible
|
14
|
+
if(!options.expandable || $(this)[0].className.search("child-of-") == -1) {
|
15
|
+
initialize($(this));
|
16
|
+
}
|
17
|
+
});
|
18
|
+
});
|
19
|
+
};
|
20
|
+
|
21
|
+
$.fn.treeTable.defaults = {
|
22
|
+
childPrefix: "child-of-",
|
23
|
+
expandable: true,
|
24
|
+
indent: 19,
|
25
|
+
initialState: "collapsed",
|
26
|
+
treeColumn: 0
|
27
|
+
};
|
28
|
+
|
29
|
+
// Recursively hide all node's children in a tree
|
30
|
+
$.fn.collapse = function() {
|
31
|
+
$(this).addClass("collapsed");
|
32
|
+
|
33
|
+
childrenOf($(this)).each(function() {
|
34
|
+
initialize($(this));
|
35
|
+
|
36
|
+
if(!$(this).hasClass("collapsed")) {
|
37
|
+
$(this).collapse();
|
38
|
+
}
|
39
|
+
|
40
|
+
$(this).hide();
|
41
|
+
});
|
42
|
+
|
43
|
+
return this;
|
44
|
+
};
|
45
|
+
|
46
|
+
// Recursively show all node's children in a tree
|
47
|
+
$.fn.expand = function() {
|
48
|
+
$(this).removeClass("collapsed").addClass("expanded");
|
49
|
+
|
50
|
+
childrenOf($(this)).each(function() {
|
51
|
+
initialize($(this));
|
52
|
+
|
53
|
+
if($(this).is(".expanded.parent")) {
|
54
|
+
$(this).expand();
|
55
|
+
}
|
56
|
+
|
57
|
+
$(this).show();
|
58
|
+
});
|
59
|
+
|
60
|
+
return this;
|
61
|
+
};
|
62
|
+
|
63
|
+
// Add an entire branch to +destination+
|
64
|
+
$.fn.appendBranchTo = function(destination) {
|
65
|
+
var node = $(this);
|
66
|
+
var parent = parentOf(node);
|
67
|
+
|
68
|
+
var ancestorNames = $.map(ancestorsOf($(destination)), function(a) { return a.id; });
|
69
|
+
|
70
|
+
// Conditions:
|
71
|
+
// 1: +node+ should not be inserted in a location in a branch if this would
|
72
|
+
// result in +node+ being an ancestor of itself.
|
73
|
+
// 2: +node+ should not have a parent OR the destination should not be the
|
74
|
+
// same as +node+'s current parent (this last condition prevents +node+
|
75
|
+
// from being moved to the same location where it already is).
|
76
|
+
// 3: +node+ should not be inserted as a child of +node+ itself.
|
77
|
+
if($.inArray(node[0].id, ancestorNames) == -1 && (!parent || (destination.id != parent[0].id)) && destination.id != node[0].id) {
|
78
|
+
indent(node, ancestorsOf(node).length * options.indent * -1); // Remove indentation
|
79
|
+
|
80
|
+
if(parent) { node.removeClass(options.childPrefix + parent[0].id); }
|
81
|
+
|
82
|
+
node.addClass(options.childPrefix + destination.id);
|
83
|
+
move(node, destination); // Recursively move nodes to new location
|
84
|
+
indent(node, ancestorsOf(node).length * options.indent);
|
85
|
+
}
|
86
|
+
|
87
|
+
return this;
|
88
|
+
};
|
89
|
+
|
90
|
+
// Add reverse() function from JS Arrays
|
91
|
+
$.fn.reverse = function() {
|
92
|
+
return this.pushStack(this.get().reverse(), arguments);
|
93
|
+
};
|
94
|
+
|
95
|
+
// Toggle an entire branch
|
96
|
+
$.fn.toggleBranch = function() {
|
97
|
+
if($(this).hasClass("collapsed")) {
|
98
|
+
$(this).expand();
|
99
|
+
} else {
|
100
|
+
$(this).removeClass("expanded").collapse();
|
101
|
+
}
|
102
|
+
|
103
|
+
return this;
|
104
|
+
};
|
105
|
+
|
106
|
+
// === Private functions
|
107
|
+
|
108
|
+
function ancestorsOf(node) {
|
109
|
+
var ancestors = [];
|
110
|
+
while(node = parentOf(node)) {
|
111
|
+
ancestors[ancestors.length] = node[0];
|
112
|
+
}
|
113
|
+
return ancestors;
|
114
|
+
};
|
115
|
+
|
116
|
+
function childrenOf(node) {
|
117
|
+
return $("table.treeTable tbody tr." + options.childPrefix + node[0].id);
|
118
|
+
};
|
119
|
+
|
120
|
+
function indent(node, value) {
|
121
|
+
var cell = $(node.children("td")[options.treeColumn]);
|
122
|
+
var padding = parseInt(cell.css("padding-left"), 10) + value;
|
123
|
+
|
124
|
+
cell.css("padding-left", + padding + "px");
|
125
|
+
|
126
|
+
childrenOf(node).each(function() {
|
127
|
+
indent($(this), value);
|
128
|
+
});
|
129
|
+
};
|
130
|
+
|
131
|
+
function initialize(node) {
|
132
|
+
if(!node.hasClass("initialized")) {
|
133
|
+
node.addClass("initialized");
|
134
|
+
|
135
|
+
var childNodes = childrenOf(node);
|
136
|
+
|
137
|
+
if(node.hasClass("parent")) {
|
138
|
+
var cell = $(node.children("td")[options.treeColumn]);
|
139
|
+
var padding = parseInt(cell.css("padding-left"), 10) + options.indent;
|
140
|
+
|
141
|
+
childNodes.each(function() {
|
142
|
+
$($(this).children("td")[options.treeColumn]).css("padding-left", padding + "px");
|
143
|
+
});
|
144
|
+
|
145
|
+
$(cell[0].firstChild).css({ "margin-left": '-' + options.indent + 'px', "padding-left": options.indent + 'px' });
|
146
|
+
}
|
147
|
+
}
|
148
|
+
};
|
149
|
+
|
150
|
+
function move(node, destination) {
|
151
|
+
node.insertAfter(destination);
|
152
|
+
childrenOf(node).reverse().each(function() { move($(this), node[0]); });
|
153
|
+
};
|
154
|
+
|
155
|
+
function parentOf(node) {
|
156
|
+
var classNames = node[0].className.split(' ');
|
157
|
+
|
158
|
+
for(key in classNames) {
|
159
|
+
if(classNames[key].match("child-of-")) {
|
160
|
+
return $("#" + classNames[key].substring(9));
|
161
|
+
}
|
162
|
+
}
|
163
|
+
};
|
164
|
+
})(jQuery);
|
165
|
+
|
@@ -0,0 +1,336 @@
|
|
1
|
+
* {margin:0;padding:0}
|
2
|
+
.clear { clear: both; height: 0; }
|
3
|
+
|
4
|
+
h1 { margin: 15px 0; font-size: 22px; font-weight: normal; }
|
5
|
+
h2 { font-size: 22px; margin: 15px 0; font-weight: normal;}
|
6
|
+
h3 { font-size: 18px; margin: 10px 0; font-weight: normal;}
|
7
|
+
h4 { font-size: 16px; margin: 10px 0; font-weight: normal;}
|
8
|
+
hr {height: 1px; border: 0; }
|
9
|
+
p { margin: 15px 0;}
|
10
|
+
a img { border: none; }
|
11
|
+
|
12
|
+
body {
|
13
|
+
font-size: 12px;
|
14
|
+
font-family: sans-serif;
|
15
|
+
}
|
16
|
+
|
17
|
+
#container {
|
18
|
+
min-width: 960px;
|
19
|
+
}
|
20
|
+
|
21
|
+
#header, #wrapper {
|
22
|
+
padding: 0 20px;
|
23
|
+
}
|
24
|
+
|
25
|
+
#header {
|
26
|
+
position: relative;
|
27
|
+
padding-top: 1px;
|
28
|
+
}
|
29
|
+
|
30
|
+
#header h1 {
|
31
|
+
margin: 0;
|
32
|
+
padding: 10px 0;
|
33
|
+
font-size: 30px;
|
34
|
+
}
|
35
|
+
|
36
|
+
#header h1 a:link, #header h1 a:active, #header h1 a:hover, #header h1 a:visited {
|
37
|
+
text-decoration: none;
|
38
|
+
}
|
39
|
+
|
40
|
+
#main {
|
41
|
+
width: 80%;
|
42
|
+
float: left;
|
43
|
+
}
|
44
|
+
|
45
|
+
.actions-bar {
|
46
|
+
padding: 10px 1px;
|
47
|
+
}
|
48
|
+
|
49
|
+
.actions-bar .actions {
|
50
|
+
float: left;
|
51
|
+
}
|
52
|
+
|
53
|
+
|
54
|
+
.actions-bar .pagination {
|
55
|
+
float: right;
|
56
|
+
padding: 1px 0;
|
57
|
+
}
|
58
|
+
|
59
|
+
#sidebar {
|
60
|
+
width: 15%;
|
61
|
+
float: right;
|
62
|
+
}
|
63
|
+
|
64
|
+
#sidebar h3 {
|
65
|
+
padding: 10px 15px;
|
66
|
+
margin: 0;
|
67
|
+
font-size: 13px;
|
68
|
+
}
|
69
|
+
|
70
|
+
#sidebar .block {
|
71
|
+
margin-bottom: 20px;
|
72
|
+
padding-bottom: 10px;
|
73
|
+
}
|
74
|
+
|
75
|
+
#sidebar .block .content {
|
76
|
+
padding: 0 15px;
|
77
|
+
}
|
78
|
+
|
79
|
+
#sidebar ul.navigation li a:link, #sidebar ul.navigation li a:visited {
|
80
|
+
display: block;
|
81
|
+
padding: 10px 15px;
|
82
|
+
}
|
83
|
+
|
84
|
+
#sidebar .block .sidebar-block, #sidebar .notice {
|
85
|
+
padding:10px;
|
86
|
+
}
|
87
|
+
|
88
|
+
#wrapper {
|
89
|
+
padding-top: 20px;
|
90
|
+
}
|
91
|
+
|
92
|
+
#main .block {
|
93
|
+
margin-bottom: 20px;
|
94
|
+
padding-top: 1px;
|
95
|
+
}
|
96
|
+
|
97
|
+
#main .block .content .inner {
|
98
|
+
padding: 0 15px 15px;
|
99
|
+
}
|
100
|
+
|
101
|
+
#main .main p.first {
|
102
|
+
margin-top: 0;
|
103
|
+
}
|
104
|
+
|
105
|
+
#user-navigation {
|
106
|
+
position: absolute;
|
107
|
+
top: 0px;
|
108
|
+
right: 20px;
|
109
|
+
}
|
110
|
+
|
111
|
+
#main-navigation {
|
112
|
+
width: 100%;
|
113
|
+
}
|
114
|
+
|
115
|
+
#user-navigation ul, #main-navigation ul, .secondary-navigation ul, #sidebar ul.navigation {
|
116
|
+
margin: 0;
|
117
|
+
padding: 0;
|
118
|
+
list-style-type: none;
|
119
|
+
}
|
120
|
+
|
121
|
+
#user-navigation ul li, #main-navigation ul li, .secondary-navigation ul li {
|
122
|
+
float: left;
|
123
|
+
}
|
124
|
+
|
125
|
+
#main-navigation ul li {
|
126
|
+
margin-right: 5px;
|
127
|
+
}
|
128
|
+
|
129
|
+
#user-navigation ul li {
|
130
|
+
padding: 5px 10px;
|
131
|
+
}
|
132
|
+
|
133
|
+
#main-navigation ul li a:link, #main-navigation ul li a:visited, #main-navigation ul li a:hover, #main-navigation ul li a:active,
|
134
|
+
.secondary-navigation ul li a:link, .secondary-navigation ul li a:visited, .secondary-navigation ul li a:hover, .secondary-navigation ul li a:active,
|
135
|
+
#user-navigation ul li a:link, #user-navigation ul li a:visited, #user-navigation ul li a:hover, #user-navigation ul li a:active {
|
136
|
+
text-decoration: none;
|
137
|
+
}
|
138
|
+
|
139
|
+
#main-navigation ul li a {
|
140
|
+
font-size: 15px;
|
141
|
+
display: block;
|
142
|
+
padding: 8px 15px;
|
143
|
+
}
|
144
|
+
|
145
|
+
.secondary-navigation {
|
146
|
+
font-size: 13px;
|
147
|
+
border-bottom-width: 10px;
|
148
|
+
border-bottom-style: solid;
|
149
|
+
}
|
150
|
+
|
151
|
+
.secondary-navigation ul li a {
|
152
|
+
display: block;
|
153
|
+
padding: 10px 15px;
|
154
|
+
}
|
155
|
+
|
156
|
+
#footer {
|
157
|
+
padding-bottom: 20px;
|
158
|
+
}
|
159
|
+
|
160
|
+
/* pagination */
|
161
|
+
|
162
|
+
.pagination a, .pagination span {
|
163
|
+
padding: 2px 5px;
|
164
|
+
margin-right: 5px;
|
165
|
+
display: block;
|
166
|
+
float: left;
|
167
|
+
border-style: solid;
|
168
|
+
border-width: 1px;
|
169
|
+
}
|
170
|
+
|
171
|
+
.pagination span.current {
|
172
|
+
font-weight: bold;
|
173
|
+
}
|
174
|
+
|
175
|
+
.pagination a {
|
176
|
+
text-decoration: none;
|
177
|
+
}
|
178
|
+
|
179
|
+
/* tables */
|
180
|
+
.table {
|
181
|
+
width: 100%;
|
182
|
+
border-collapse: collapse;
|
183
|
+
margin-bottom: 15px;
|
184
|
+
}
|
185
|
+
|
186
|
+
.table th {
|
187
|
+
padding: 10px;
|
188
|
+
font-weight: bold;
|
189
|
+
text-align: left;
|
190
|
+
}
|
191
|
+
|
192
|
+
.table th.first {
|
193
|
+
width: 30px;
|
194
|
+
}
|
195
|
+
|
196
|
+
.table th.last {
|
197
|
+
width: 200px;
|
198
|
+
}
|
199
|
+
|
200
|
+
.table .checkbox {
|
201
|
+
margin-left: 10px;
|
202
|
+
}
|
203
|
+
|
204
|
+
.table td {
|
205
|
+
padding: 10px;
|
206
|
+
}
|
207
|
+
|
208
|
+
.table td.last {
|
209
|
+
text-align: right;
|
210
|
+
}
|
211
|
+
|
212
|
+
/* forms */
|
213
|
+
|
214
|
+
input.checkbox {
|
215
|
+
margin: 0;
|
216
|
+
padding: 0;
|
217
|
+
}
|
218
|
+
|
219
|
+
.form .group {
|
220
|
+
margin-bottom: 15px;
|
221
|
+
}
|
222
|
+
|
223
|
+
.form div.left {
|
224
|
+
width: 20%;
|
225
|
+
float: left;
|
226
|
+
}
|
227
|
+
|
228
|
+
.form div.right {
|
229
|
+
width: 75%;
|
230
|
+
float: right;
|
231
|
+
}
|
232
|
+
|
233
|
+
.form .columns .column {
|
234
|
+
width: 48%;
|
235
|
+
}
|
236
|
+
|
237
|
+
.form .columns .left {
|
238
|
+
float: left;
|
239
|
+
}
|
240
|
+
|
241
|
+
.form .columns .right {
|
242
|
+
float: right;
|
243
|
+
}
|
244
|
+
|
245
|
+
.form label.label, .form input.text_field, .form textarea.text_area {
|
246
|
+
font-size: 1.2em;
|
247
|
+
padding: 1px 0;
|
248
|
+
margin: 0;
|
249
|
+
}
|
250
|
+
|
251
|
+
.form label.right {
|
252
|
+
text-align: right;
|
253
|
+
}
|
254
|
+
|
255
|
+
.form input.checkbox, .form input.radio {
|
256
|
+
margin-right: 5px;
|
257
|
+
}
|
258
|
+
|
259
|
+
.form label.checkbox, .form label.radio {
|
260
|
+
line-height: 1.5em;
|
261
|
+
}
|
262
|
+
|
263
|
+
.form label.label {
|
264
|
+
display: block;
|
265
|
+
padding-bottom: 2px;
|
266
|
+
font-weight: bold;
|
267
|
+
}
|
268
|
+
|
269
|
+
.form div.fieldWithErrors label.label {
|
270
|
+
display: inline;
|
271
|
+
}
|
272
|
+
|
273
|
+
.form .fieldWithErrors .error {
|
274
|
+
color: red;
|
275
|
+
}
|
276
|
+
|
277
|
+
.form input.text_field, .form textarea.text_area {
|
278
|
+
width: 100%;
|
279
|
+
border-width: 1px;
|
280
|
+
border-style: solid;
|
281
|
+
}
|
282
|
+
|
283
|
+
/* lists */
|
284
|
+
|
285
|
+
ul.list {
|
286
|
+
margin: 0;
|
287
|
+
padding: 0;
|
288
|
+
list-style-type: none;
|
289
|
+
}
|
290
|
+
|
291
|
+
ul.list li {
|
292
|
+
clear: left;
|
293
|
+
padding-bottom: 5px;
|
294
|
+
}
|
295
|
+
|
296
|
+
ul.list li .left {
|
297
|
+
float: left;
|
298
|
+
}
|
299
|
+
|
300
|
+
ul.list li .left .avatar {
|
301
|
+
width: 50px;
|
302
|
+
height: 50px;
|
303
|
+
}
|
304
|
+
|
305
|
+
ul.list li .item {
|
306
|
+
margin-left: 80px;
|
307
|
+
}
|
308
|
+
|
309
|
+
ul.list li .item .avatar {
|
310
|
+
float: left;
|
311
|
+
margin: 0 5px 5px 0;
|
312
|
+
width: 30px;
|
313
|
+
height: 30px;
|
314
|
+
}
|
315
|
+
|
316
|
+
/* box */
|
317
|
+
|
318
|
+
#box {
|
319
|
+
width: 500px;
|
320
|
+
margin: 50px auto;
|
321
|
+
}
|
322
|
+
|
323
|
+
#box .block {
|
324
|
+
margin-bottom: 20px;
|
325
|
+
}
|
326
|
+
|
327
|
+
#box .block h2 {
|
328
|
+
padding: 10px 15px;
|
329
|
+
margin: 0;
|
330
|
+
}
|
331
|
+
|
332
|
+
#box .block .content {
|
333
|
+
padding: 10px 20px;
|
334
|
+
}
|
335
|
+
|
336
|
+
|