rad_users 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. data/Rakefile +1 -0
  2. data/app/controllers/identities.rb +160 -0
  3. data/app/controllers/profiles.rb +61 -0
  4. data/app/controllers/sessions.rb +78 -0
  5. data/app/controllers/user_mailer.rb +30 -0
  6. data/app/controllers/user_management.rb +9 -0
  7. data/app/controllers/users_app.rb +9 -0
  8. data/app/helpers/users/authorization.rb +65 -0
  9. data/app/helpers/users/general.rb +22 -0
  10. data/app/models/avatar_file.rb +33 -0
  11. data/app/models/user.rb +105 -0
  12. data/app/models/user/email_verification_token.rb +20 -0
  13. data/app/models/user/forgot_password_token.rb +12 -0
  14. data/app/static/open_id.js +2 -0
  15. data/app/static/openid-selector/css/openid.css +45 -0
  16. data/app/static/openid-selector/demo.html +58 -0
  17. data/app/static/openid-selector/demoOpenIDClient.html +69 -0
  18. data/app/static/openid-selector/images/aol.gif +0 -0
  19. data/app/static/openid-selector/images/blogger.ico +0 -0
  20. data/app/static/openid-selector/images/claimid.ico +0 -0
  21. data/app/static/openid-selector/images/facebook.gif +0 -0
  22. data/app/static/openid-selector/images/flickr.ico +0 -0
  23. data/app/static/openid-selector/images/google.gif +0 -0
  24. data/app/static/openid-selector/images/livejournal.ico +0 -0
  25. data/app/static/openid-selector/images/myopenid.ico +0 -0
  26. data/app/static/openid-selector/images/openid-inputicon.gif +0 -0
  27. data/app/static/openid-selector/images/openid.gif +0 -0
  28. data/app/static/openid-selector/images/technorati.ico +0 -0
  29. data/app/static/openid-selector/images/verisign.gif +0 -0
  30. data/app/static/openid-selector/images/verisign.ico +0 -0
  31. data/app/static/openid-selector/images/vidoop.ico +0 -0
  32. data/app/static/openid-selector/images/wordpress.ico +0 -0
  33. data/app/static/openid-selector/images/yahoo.gif +0 -0
  34. data/app/static/openid-selector/js/jquery-1.2.6.min.js +32 -0
  35. data/app/static/openid-selector/js/openid-client/jquery.query-2.1.3.js +220 -0
  36. data/app/static/openid-selector/js/openid-client/openid-client-config.js +20 -0
  37. data/app/static/openid-selector/js/openid-client/openid-client.js +63 -0
  38. data/app/static/openid-selector/js/openid-jquery.js +240 -0
  39. data/app/static/openid-selector/openid-client/checkid_immediate_response.html +3 -0
  40. data/app/static/openid-selector/openid-client/checkid_setup_response.html +3 -0
  41. data/app/static/themes/default/users.css +947 -0
  42. data/app/static/themes/default/users.less +4 -0
  43. data/app/views/controllers/identities/enter_email_form.html.haml +6 -0
  44. data/app/views/controllers/identities/finish_email_registration_form.html.haml +23 -0
  45. data/app/views/controllers/identities/finish_open_id_registration_form.html.haml +12 -0
  46. data/app/views/controllers/identities/forgot_password_form.html.haml +6 -0
  47. data/app/views/controllers/identities/reset_password_form.html.haml +9 -0
  48. data/app/views/controllers/identities/update_password_form.html.haml +11 -0
  49. data/app/views/controllers/profiles/_form.html.haml +15 -0
  50. data/app/views/controllers/profiles/_roles.html.haml +6 -0
  51. data/app/views/controllers/profiles/_user.html.haml +24 -0
  52. data/app/views/controllers/profiles/actions.js.haml +12 -0
  53. data/app/views/controllers/profiles/all.html.haml +3 -0
  54. data/app/views/controllers/profiles/show.html.haml +1 -0
  55. data/app/views/controllers/sessions/_open_id_form.html.haml +16 -0
  56. data/app/views/controllers/sessions/_password_form.html.haml +13 -0
  57. data/app/views/controllers/sessions/login.html.haml +8 -0
  58. data/app/views/controllers/sessions/status.html.haml +1 -0
  59. data/app/views/themes/default/user.html.haml +8 -0
  60. data/app/views/users/_menu.html.haml +6 -0
  61. data/app/views/users/layout.html.haml +10 -0
  62. data/app/views/users/layout.js.haml +1 -0
  63. data/config/locales/en.yml +103 -0
  64. data/config/locales/ru.yml +105 -0
  65. data/config/routes.rb +18 -0
  66. metadata +71 -7
@@ -0,0 +1,20 @@
1
+ /*
2
+ Defines the base of where the OpenID Provider redirects its response to.
3
+ */
4
+ var server_root = "http://openid-selector.googlecode.com/svn/trunk/"
5
+
6
+ /*
7
+ On the server-side you'd accept an OpenID URL and perform discovery
8
+ on it to find out the actual OpenID endpoint to send the authentication
9
+ request to. On the client side it isn't possible to lookup the endpoint
10
+ from the target server due to XSS restrictions. The endpoint for each
11
+ provider is therefore cached in this static file. If an endpoint isn't
12
+ specified for a provider then authentication on the client side cannot
13
+ proceed.
14
+ */
15
+ var providers_endpoint = {
16
+ google: 'https://www.google.com/accounts/o8/ud',
17
+ yahoo: 'https://open.login.yahooapis.com/openid/op/auth',
18
+ aol: 'https://api.screenname.aol.com/auth/openidServer',
19
+ verisign: 'http://pip.verisignlabs.com/server'
20
+ }
@@ -0,0 +1,63 @@
1
+ var claimedID;
2
+ var providerID;
3
+ var openIDPopup;
4
+
5
+ function OpenID_iframe_then_popup_handler(provider, claimed) {
6
+ providerID = provider;
7
+ claimedID = claimed;
8
+ var immediateiframe = document.getElementById("openid_immediate_iframe");
9
+
10
+ var iframeurl = getBaseOpenIDProviderURL(providerID, claimedID, true);
11
+
12
+ immediateiframe.innerHTML = "<iframe frameborder='1' src='" + iframeurl + "'></iframe>";
13
+ }
14
+
15
+ function processOpenIDImmediateResponse(responseURL) {
16
+ var immediateiframe = document.getElementById("openid_immediate_iframe");
17
+ immediateiframe.innerHTML = responseURL;
18
+
19
+ var failure = new RegExp("openid.mode=setup_needed");
20
+ if(failure.test(responseURL)) {
21
+ var popupurl = getBaseOpenIDProviderURL(providerID, claimedID, false);
22
+ openIDPopup = window.open(popupurl, "OpenIDPopup");
23
+ } else {
24
+ alert("Success without popup!");
25
+ }
26
+ }
27
+
28
+ function processOpenIDSetupResponse(responseURL) {
29
+ openIDPopup.close();
30
+
31
+ var results = "";
32
+ var responseQuery = $.query.load(responseURL);
33
+ $.each(responseQuery.get(), function(key, value) {
34
+ results += "<br/>" + key + "=" + value;
35
+ });
36
+
37
+ document.getElementById("openid_status").innerHTML = "<br/>Result of authentication is: " + results;
38
+ }
39
+
40
+ function getBaseOpenIDProviderURL(provider, claimed, immediate) {
41
+ var providerEndpoint = providers_endpoint[provider];
42
+ var providerURL = providerEndpoint; //From previous discovery
43
+ providerURL += "?";
44
+ providerURL += "openid.ns=" + encodeURIComponent("http://specs.openid.net/auth/2.0");
45
+ if(providers[provider].label) {
46
+ providerURL += "&openid.claimed_id=" + encodeURIComponent(claimed);
47
+ providerURL += "&openid.identity=" + encodeURIComponent(claimed);
48
+ }
49
+ else {
50
+ providerURL += "&openid.claimed_id=" + encodeURIComponent("http://specs.openid.net/auth/2.0/identifier_select");
51
+ providerURL += "&openid.identity=" + encodeURIComponent("http://specs.openid.net/auth/2.0/identifier_select");
52
+ }
53
+ if(immediate) {
54
+ providerURL += "&openid.return_to=" + encodeURIComponent(server_root + "openid-client/checkid_immediate_response.html");
55
+ providerURL += "&openid.realm=" + encodeURIComponent(server_root + "openid-client/checkid_immediate_response.html");
56
+ providerURL += "&openid.mode=checkid_immediate";
57
+ } else {
58
+ providerURL += "&openid.return_to=" + encodeURIComponent(server_root + "openid-client/checkid_setup_response.html");
59
+ providerURL += "&openid.realm=" + encodeURIComponent(server_root + "openid-client/checkid_setup_response.html");
60
+ providerURL += "&openid.mode=checkid_setup";
61
+ }
62
+ return providerURL;
63
+ }
@@ -0,0 +1,240 @@
1
+ /*
2
+ Simple OpenID Plugin
3
+ http://code.google.com/p/openid-selector/
4
+
5
+ This code is licenced under the New BSD License.
6
+ */
7
+
8
+ var providers_large = {
9
+ google: {
10
+ name: 'Google',
11
+ url: 'https://www.google.com/accounts/o8/id'
12
+ },
13
+ yahoo: {
14
+ name: 'Yahoo',
15
+ url: 'http://yahoo.com/'
16
+ },
17
+ aol: {
18
+ name: 'AOL',
19
+ label: 'Enter your AOL screenname.',
20
+ url: 'http://openid.aol.com/{username}'
21
+ },
22
+ verisign: {
23
+ name: 'Verisign',
24
+ label: 'Your Verisign username',
25
+ url: 'http://{username}.pip.verisignlabs.com/'
26
+ },
27
+ openid: {
28
+ name: 'OpenID',
29
+ label: 'Enter your OpenID.',
30
+ url: null
31
+ }
32
+ };
33
+ var providers_small = {
34
+ myopenid: {
35
+ name: 'MyOpenID',
36
+ label: 'Enter your MyOpenID username.',
37
+ url: 'http://{username}.myopenid.com/'
38
+ },
39
+ livejournal: {
40
+ name: 'LiveJournal',
41
+ label: 'Enter your Livejournal username.',
42
+ url: 'http://{username}.livejournal.com/'
43
+ },
44
+ flickr: {
45
+ name: 'Flickr',
46
+ label: 'Enter your Flickr username.',
47
+ url: 'http://flickr.com/{username}/'
48
+ },
49
+ technorati: {
50
+ name: 'Technorati',
51
+ label: 'Enter your Technorati username.',
52
+ url: 'http://technorati.com/people/technorati/{username}/'
53
+ },
54
+ wordpress: {
55
+ name: 'Wordpress',
56
+ label: 'Enter your Wordpress.com username.',
57
+ url: 'http://{username}.wordpress.com/'
58
+ },
59
+ blogger: {
60
+ name: 'Blogger',
61
+ label: 'Your Blogger account',
62
+ url: 'http://{username}.blogspot.com/'
63
+ },
64
+ vidoop: {
65
+ name: 'Vidoop',
66
+ label: 'Your Vidoop username',
67
+ url: 'http://{username}.myvidoop.com/'
68
+ },
69
+ claimid: {
70
+ name: 'ClaimID',
71
+ label: 'Your ClaimID username',
72
+ url: 'http://claimid.com/{username}'
73
+ }
74
+ };
75
+ var providers = $.extend({}, providers_large, providers_small);
76
+
77
+ var openid = {
78
+
79
+ demo: false,
80
+ ajaxHandler: null,
81
+ cookie_expires: 6*30, // 6 months.
82
+ cookie_name: 'openid_provider',
83
+ cookie_path: '/',
84
+
85
+ img_path: 'images/',
86
+
87
+ input_id: null,
88
+ provider_url: null,
89
+ provider_id: null,
90
+
91
+ init: function(input_id) {
92
+
93
+ var openid_btns = $('#openid_btns');
94
+
95
+ this.input_id = input_id;
96
+
97
+ $('#openid_choice').show();
98
+ $('#openid_input_area').empty();
99
+
100
+ // add box for each provider
101
+ for (id in providers_large) {
102
+
103
+ openid_btns.append(this.getBoxHTML(providers_large[id], 'large', '.gif'));
104
+ }
105
+ if (providers_small) {
106
+ openid_btns.append('<br/>');
107
+
108
+ for (id in providers_small) {
109
+
110
+ openid_btns.append(this.getBoxHTML(providers_small[id], 'small', '.ico'));
111
+ }
112
+ }
113
+
114
+ $('#openid_form').submit(this.submit);
115
+
116
+ var box_id = this.readCookie();
117
+ if (box_id) {
118
+ this.signin(box_id, true);
119
+ }
120
+ },
121
+ getBoxHTML: function(provider, box_size, image_ext) {
122
+
123
+ var box_id = provider["name"].toLowerCase();
124
+ return '<a title="'+provider["name"]+'" href="javascript: openid.signin(\''+ box_id +'\');"' +
125
+ ' style="background: #FFF url(' + this.img_path + box_id + image_ext+') no-repeat center center" ' +
126
+ 'class="' + box_id + ' openid_' + box_size + '_btn"></a>';
127
+
128
+ },
129
+ /* Provider image click */
130
+ signin: function(box_id, onload) {
131
+
132
+ var provider = providers[box_id];
133
+ if (! provider) {
134
+ return;
135
+ }
136
+
137
+ this.highlight(box_id);
138
+ this.setCookie(box_id);
139
+
140
+ this.provider_id = box_id;
141
+ this.provider_url = provider['url'];
142
+
143
+ // prompt user for input?
144
+ if (provider['label']) {
145
+ this.useInputBox(provider);
146
+ } else {
147
+ $('#openid_input_area').empty();
148
+ if (! onload) {
149
+ $('#openid_form').submit();
150
+ }
151
+ }
152
+ },
153
+ /* Sign-in button click */
154
+ submit: function() {
155
+
156
+ var url = openid.provider_url;
157
+ if (url) {
158
+ url = url.replace('{username}', $('#openid_username').val());
159
+ openid.setOpenIdUrl(url);
160
+ }
161
+ if(openid.ajaxHandler) {
162
+ openid.ajaxHandler(openid.provider_id, document.getElementById(openid.input_id).value);
163
+ return false;
164
+ }
165
+ if(openid.demo) {
166
+ alert("In client demo mode. Normally would have submitted OpenID:\r\n" + document.getElementById(openid.input_id).value);
167
+ return false;
168
+ }
169
+ return true;
170
+ },
171
+ setOpenIdUrl: function (url) {
172
+
173
+ var hidden = document.getElementById(this.input_id);
174
+ if (hidden != null) {
175
+ hidden.value = url;
176
+ } else {
177
+ $('#openid_form').append('<input type="hidden" id="' + this.input_id + '" name="' + this.input_id + '" value="'+url+'"/>');
178
+ }
179
+ },
180
+ highlight: function (box_id) {
181
+
182
+ // remove previous highlight.
183
+ var highlight = $('#openid_highlight');
184
+ if (highlight) {
185
+ highlight.replaceWith($('#openid_highlight a')[0]);
186
+ }
187
+ // add new highlight.
188
+ $('.'+box_id).wrap('<div id="openid_highlight"></div>');
189
+ },
190
+ setCookie: function (value) {
191
+
192
+ var date = new Date();
193
+ date.setTime(date.getTime()+(this.cookie_expires*24*60*60*1000));
194
+ var expires = "; expires="+date.toGMTString();
195
+
196
+ document.cookie = this.cookie_name+"="+value+expires+"; path=" + this.cookie_path;
197
+ },
198
+ readCookie: function () {
199
+ var nameEQ = this.cookie_name + "=";
200
+ var ca = document.cookie.split(';');
201
+ for(var i=0;i < ca.length;i++) {
202
+ var c = ca[i];
203
+ while (c.charAt(0)==' ') c = c.substring(1,c.length);
204
+ if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
205
+ }
206
+ return null;
207
+ },
208
+ useInputBox: function (provider) {
209
+
210
+ var input_area = $('#openid_input_area');
211
+
212
+ var html = '';
213
+ var id = 'openid_username';
214
+ var value = '';
215
+ var label = provider['label'];
216
+ var style = '';
217
+
218
+ if (label) {
219
+ html = '<p>' + label + '</p>';
220
+ }
221
+ if (provider['name'] == 'OpenID') {
222
+ id = this.input_id;
223
+ value = 'http://';
224
+ style = 'background:#FFF url('+this.img_path+'openid-inputicon.gif) no-repeat scroll 0 50%; padding-left:18px;';
225
+ }
226
+ html += '<input id="'+id+'" type="text" style="'+style+'" name="'+id+'" value="'+value+'" />' +
227
+ '<input id="openid_submit" type="submit" value="Sign-In"/>';
228
+
229
+ input_area.empty();
230
+ input_area.append(html);
231
+
232
+ $('#'+id).focus();
233
+ },
234
+ setDemoMode: function (demoMode) {
235
+ this.demo = demoMode;
236
+ },
237
+ setAjaxHandler: function (ajaxFunction) {
238
+ this.ajaxHandler = ajaxFunction;
239
+ }
240
+ };
@@ -0,0 +1,3 @@
1
+ <script type="text/javascript">
2
+ window.parent.processOpenIDImmediateResponse(document.URL);
3
+ </script>
@@ -0,0 +1,3 @@
1
+ <script type="text/javascript">
2
+ window.opener.processOpenIDSetupResponse(document.URL);
3
+ </script>
@@ -0,0 +1,947 @@
1
+ /*
2
+ Naming convention:
3
+ - global styles have 'the' prefix
4
+ - local styles have 'l' (local) prefix
5
+ - mixins have 'm' (mixin) prefix
6
+
7
+ - internal structural mixins have 't' (template) prefix
8
+ - internal style mixins have 's' (style) prefix
9
+ */
10
+ /*@small: 5px;
11
+ @normal: 10px;
12
+ @big: 20px;*/
13
+ .m_tiny {
14
+ color: #cccccc !important;
15
+ }
16
+ .m_tiny a {
17
+ color: #cccccc !important;
18
+ }
19
+ .m_bold {
20
+ font-weight: bold;
21
+ }
22
+ .m_hidden {
23
+ display: none !important;
24
+ }
25
+ /*.s_width () {max-width: @max_width; margin-left: auto; margin-right: auto;}*/
26
+ a {
27
+ color: black;
28
+ text-decoration: none;
29
+ }
30
+ a:visited {
31
+ color: black;
32
+ }
33
+ .css_clear {
34
+ display: block !important;
35
+ clear: both !important;
36
+ width: 0px !important;
37
+ height: 0px !important;
38
+ min-width: 0px !important;
39
+ min-height: 0px !important;
40
+ margin: 0px !important;
41
+ padding: 0px !important;
42
+ border: 0px !important;
43
+ }
44
+ table.css_table {
45
+ margin: 0;
46
+ padding: 0;
47
+ border: 0;
48
+ width: 100%;
49
+ }
50
+ table.css_table > tbody {
51
+ margin: 0;
52
+ padding: 0;
53
+ border: 0;
54
+ }
55
+ table.css_table > tbody > tr {
56
+ margin: 0;
57
+ padding: 0;
58
+ border: 0;
59
+ }
60
+ table.css_table > tbody > tr > td {
61
+ margin: 0;
62
+ padding: 0;
63
+ border: 0;
64
+ vertical-align: top;
65
+ }
66
+ .m_title {
67
+ font-size: 180%;
68
+ font-weight: bold;
69
+ padding-top: 5px;
70
+ padding-bottom: 5px;
71
+ margin-top: 0px;
72
+ margin-bottom: 0px;
73
+ margin-top: 0px;
74
+ padding-top: 0px;
75
+ }
76
+ .m_details {
77
+ float: right;
78
+ color: #cccccc;
79
+ }
80
+ .m_details > *, .m_details > a {
81
+ float: left;
82
+ }
83
+ .m_details a {
84
+ color: #2a5db0;
85
+ text-decoration: underline;
86
+ }
87
+ .m_details a:visited {
88
+ color: #2a5db0;
89
+ }
90
+ .m_details > * {
91
+ padding-right: 5px;
92
+ }
93
+ .m_details a {
94
+ color: #cccccc !important;
95
+ }
96
+ .m_tags {
97
+ float: left;
98
+ margin-top: 5px;
99
+ margin-bottom: 5px;
100
+ }
101
+ .m_tags > *, .m_tags > a {
102
+ float: left;
103
+ }
104
+ .m_tags > *, .m_tags > a {
105
+ -moz-border-radius: 3px;
106
+ -webkit-border-radius: 3px;
107
+ border-radius: 3px;
108
+ font-size: 90%;
109
+ padding-left: 5px;
110
+ padding-right: 5px;
111
+ background: #efefef;
112
+ margin-right: 5px;
113
+ }
114
+ .m_tags .m_owner_visibility,
115
+ .m_tags .m_member_visibility,
116
+ .m_tags .m_custom_visibility,
117
+ .m_tags .m_item_type {
118
+ background: white;
119
+ }
120
+ .m_tags .m_owner_visibility {
121
+ color: #dd0000;
122
+ }
123
+ .m_tags .m_member_visibility, .m_tags .m_custom_visibility {
124
+ color: #dddd00;
125
+ }
126
+ .m_tags .m_item_type {
127
+ color: #cccccc !important;
128
+ }
129
+ .m_tags .m_item_type a {
130
+ color: #cccccc !important;
131
+ }
132
+ .m_attachments {
133
+ float: left;
134
+ margin-top: 5px;
135
+ margin-bottom: 5px;
136
+ }
137
+ .m_attachments > *, .m_attachments > a {
138
+ float: left;
139
+ }
140
+ .m_attachments a {
141
+ color: #2a5db0;
142
+ text-decoration: underline;
143
+ }
144
+ .m_attachments a:visited {
145
+ color: #2a5db0;
146
+ }
147
+ .m_attachments > *, .m_attachments > a {
148
+ padding-right: 5px;
149
+ }
150
+ .m_hover_controls {
151
+ position: absolute;
152
+ right: 0px;
153
+ top: 0px;
154
+ z-index: 1;
155
+ display: none;
156
+ font-size: 100%;
157
+ text-align: right;
158
+ }
159
+ .m_hover_controls a {
160
+ color: #2a5db0;
161
+ text-decoration: underline;
162
+ }
163
+ .m_hover_controls a:visited {
164
+ color: #2a5db0;
165
+ }
166
+ .m_selectable > .m_hover_controls {
167
+ background: white;
168
+ border: solid 1px white;
169
+ padding: 5px;
170
+ margin: 5px;
171
+ border-color: #cccccc;
172
+ -moz-border-radius-bottomleft: 3px;
173
+ -webkit-border-bottom-left-radius: 3px;
174
+ border-bottom-left-radius: 3px;
175
+ border-right: 0px;
176
+ border-top: 0px;
177
+ margin: 0px;
178
+ }
179
+ .m_selectable_hover {
180
+ border-color: #cccccc !important;
181
+ }
182
+ /*.t_left () {float: left;}
183
+ .t_right () {float: right;}
184
+ */.m_markup a {
185
+ color: #2a5db0;
186
+ text-decoration: underline;
187
+ }
188
+ .m_markup a:visited {
189
+ color: #2a5db0;
190
+ }
191
+ .m_markup .left {
192
+ float: left;
193
+ margin-top: 2.5px;
194
+ margin-right: 5px;
195
+ }
196
+ .m_markup .right {
197
+ float: right;
198
+ margin-top: 2.5px;
199
+ margin-left: 5px;
200
+ }
201
+ .m_markup .clear {
202
+ clear: both;
203
+ }
204
+ .m_markup .space {
205
+ height: 10px;
206
+ clear: both;
207
+ }
208
+ .m_markup .tiny {
209
+ color: #cccccc !important;
210
+ }
211
+ .m_markup .tiny a {
212
+ color: #cccccc !important;
213
+ }
214
+ .m_markup table tr td {
215
+ vertical-align: top;
216
+ }
217
+ .m_markup p {
218
+ margin-bottom: 10px;
219
+ }
220
+ .m_markup h1,
221
+ .m_markup h2,
222
+ .m_markup h3,
223
+ .m_markup h4,
224
+ .m_markup h5,
225
+ .m_markup h6 {
226
+ clear: both;
227
+ }
228
+ .m_markup object {
229
+ clear: both;
230
+ display: block;
231
+ margin-bottom: 5px;
232
+ }
233
+ .m_markup pre {
234
+ padding: 5px;
235
+ margin-bottom: 5px;
236
+ -moz-border-radius: 5px;
237
+ -webkit-border-radius: 5px;
238
+ border-radius: 5px;
239
+ background-color: #efefef;
240
+ max-width: 807.2px;
241
+ }
242
+ .m_markup .left pre, .m_markup .right pre {
243
+ width: 450px;
244
+ margin-left: 5px;
245
+ }
246
+ body > .css_box {
247
+ max-width: 1024px;
248
+ margin-left: auto;
249
+ margin-right: auto;
250
+ }
251
+ body > .css_box > table.css_table > tbody > tr > td.css_td2 {
252
+ width: 20%;
253
+ }
254
+ .the_tools {
255
+ background: white;
256
+ border: solid 1px white;
257
+ padding: 5px;
258
+ margin: 5px;
259
+ border-color: #cccccc;
260
+ -moz-border-radius: 5px;
261
+ -webkit-border-radius: 5px;
262
+ border-radius: 5px;
263
+ }
264
+ .panel_s {
265
+ font-size: 90%;
266
+ }
267
+ .panel_s .l_left {
268
+ padding-left: 5px;
269
+ }
270
+ .panel_s .l_left .l_item {
271
+ padding-left: 5px;
272
+ padding-right: 5px;
273
+ padding-top: 1px;
274
+ padding-bottom: 1px;
275
+ }
276
+ .panel_s .l_right {
277
+ padding-right: 5px;
278
+ }
279
+ .panel_s .l_right .l_item {
280
+ padding-left: 5px;
281
+ padding-right: 5px;
282
+ padding-top: 1px;
283
+ padding-bottom: 1px;
284
+ }
285
+ .panel_s .css_box .l_left .l_logo {
286
+ font-weight: bold;
287
+ }
288
+ .the_top_panel {
289
+ font-size: 90%;
290
+ background: #cccccc;
291
+ }
292
+ .the_top_panel .l_left {
293
+ float: left;
294
+ }
295
+ .the_top_panel .l_left .l_item {
296
+ float: left;
297
+ }
298
+ .the_top_panel .l_right {
299
+ float: right;
300
+ }
301
+ .the_top_panel .l_right .l_item {
302
+ float: right;
303
+ }
304
+ .the_top_panel .css_box {
305
+ max-width: 1024px;
306
+ margin-left: auto;
307
+ margin-right: auto;
308
+ }
309
+ .the_top_panel .l_left {
310
+ padding-left: 5px;
311
+ }
312
+ .the_top_panel .l_left .l_item {
313
+ padding-left: 5px;
314
+ padding-right: 5px;
315
+ padding-top: 1px;
316
+ padding-bottom: 1px;
317
+ }
318
+ .the_top_panel .l_right {
319
+ padding-right: 5px;
320
+ }
321
+ .the_top_panel .l_right .l_item {
322
+ padding-left: 5px;
323
+ padding-right: 5px;
324
+ padding-top: 1px;
325
+ padding-bottom: 1px;
326
+ }
327
+ .the_top_panel .css_box .l_left .l_logo {
328
+ font-weight: bold;
329
+ }
330
+ .the_top_panel .css_box .l_left .l_logo {
331
+ font-weight: bold;
332
+ }
333
+ .the_bottom_panel {
334
+ font-size: 90%;
335
+ background-color: #cccccc;
336
+ padding-top: 10px;
337
+ padding-bottom: 10px;
338
+ }
339
+ .the_bottom_panel .l_left {
340
+ float: left;
341
+ }
342
+ .the_bottom_panel .l_left .l_item {
343
+ float: left;
344
+ }
345
+ .the_bottom_panel .l_right {
346
+ float: right;
347
+ }
348
+ .the_bottom_panel .l_right .l_item {
349
+ float: right;
350
+ }
351
+ .the_bottom_panel .css_box {
352
+ max-width: 1024px;
353
+ margin-left: auto;
354
+ margin-right: auto;
355
+ }
356
+ .the_bottom_panel .l_left {
357
+ padding-left: 5px;
358
+ }
359
+ .the_bottom_panel .l_left .l_item {
360
+ padding-left: 5px;
361
+ padding-right: 5px;
362
+ padding-top: 1px;
363
+ padding-bottom: 1px;
364
+ }
365
+ .the_bottom_panel .l_right {
366
+ padding-right: 5px;
367
+ }
368
+ .the_bottom_panel .l_right .l_item {
369
+ padding-left: 5px;
370
+ padding-right: 5px;
371
+ padding-top: 1px;
372
+ padding-bottom: 1px;
373
+ }
374
+ .the_bottom_panel .css_box .l_left .l_logo {
375
+ font-weight: bold;
376
+ }
377
+ .the_navigation {
378
+ font-size: 90%;
379
+ }
380
+ .the_navigation .l_left {
381
+ float: left;
382
+ }
383
+ .the_navigation .l_left .l_item {
384
+ float: left;
385
+ }
386
+ .the_navigation .l_right {
387
+ float: right;
388
+ }
389
+ .the_navigation .l_right .l_item {
390
+ float: right;
391
+ }
392
+ .the_navigation .css_box {
393
+ max-width: 1024px;
394
+ margin-left: auto;
395
+ margin-right: auto;
396
+ }
397
+ .the_navigation .l_left {
398
+ padding-left: 5px;
399
+ }
400
+ .the_navigation .l_left .l_item {
401
+ padding-left: 5px;
402
+ padding-right: 5px;
403
+ padding-top: 1px;
404
+ padding-bottom: 1px;
405
+ }
406
+ .the_navigation .l_right {
407
+ padding-right: 5px;
408
+ }
409
+ .the_navigation .l_right .l_item {
410
+ padding-left: 5px;
411
+ padding-right: 5px;
412
+ padding-top: 1px;
413
+ padding-bottom: 1px;
414
+ }
415
+ .the_navigation .css_box .l_left .l_logo {
416
+ font-weight: bold;
417
+ }
418
+ .the_navigation .css_box .l_active {
419
+ font-weight: bold;
420
+ background-color: #cccccc;
421
+ -moz-border-radius-bottomleft: 3px;
422
+ -webkit-border-bottom-left-radius: 3px;
423
+ border-bottom-left-radius: 3px;
424
+ -moz-border-radius-bottomright: 3px;
425
+ -webkit-border-bottom-right-radius: 3px;
426
+ border-bottom-right-radius: 3px;
427
+ }
428
+ /*.the_navigation_t {.t_tabs;
429
+ > .css_box {.t_max_width;}}
430
+ .the_navigation {.the_navigation_t; .s_tabs; .s_small_text; padding-left: 0; padding-right: 0;
431
+ > .css_box {
432
+ .l_item:first-child {margin-left: @normal + @small;}
433
+ .l_active {.s_round_bl(@small_radius); .s_round_br(@small_radius);}}}*/.the_controls {
434
+ font-size: 100%;
435
+ }
436
+ .the_controls a {
437
+ color: #2a5db0;
438
+ text-decoration: underline;
439
+ }
440
+ .the_controls a:visited {
441
+ color: #2a5db0;
442
+ }
443
+ .the_discussion > .l_controls {
444
+ float: right;
445
+ }
446
+ .the_discussion > .l_controls {
447
+ background: white;
448
+ border: solid 1px white;
449
+ padding: 5px;
450
+ margin: 5px;
451
+ font-size: 100%;
452
+ }
453
+ .the_discussion > .l_controls a {
454
+ color: #2a5db0;
455
+ text-decoration: underline;
456
+ }
457
+ .the_discussion > .l_controls a:visited {
458
+ color: #2a5db0;
459
+ }
460
+ .the_paginator {
461
+ background: white;
462
+ border: solid 1px white;
463
+ padding: 5px;
464
+ margin: 5px;
465
+ }
466
+ .the_paginator a {
467
+ color: #2a5db0;
468
+ text-decoration: underline;
469
+ }
470
+ .the_paginator a:visited {
471
+ color: #2a5db0;
472
+ }
473
+ .the_paginator > * {
474
+ margin-right: 5px;
475
+ }
476
+ .the_paginator .l_active {
477
+ font-weight: bold;
478
+ }
479
+ .the_more {
480
+ color: #cccccc !important;
481
+ color: #2a5db0;
482
+ text-decoration: underline;
483
+ }
484
+ .the_more a {
485
+ color: #cccccc !important;
486
+ }
487
+ .the_more:visited {
488
+ color: #2a5db0;
489
+ }
490
+ .the_narrow {
491
+ margin-left: 20%;
492
+ margin-right: 20%;
493
+ }
494
+ .the_tabs > .l_panel {
495
+ padding-left: 5px;
496
+ padding-right: 5px;
497
+ background: white;
498
+ border-bottom: 1px solid #cccccc;
499
+ }
500
+ .the_tabs > .l_panel .l_item {
501
+ float: left;
502
+ }
503
+ .the_tabs > .l_panel .l_item {
504
+ padding-left: 5px;
505
+ padding-right: 5px;
506
+ padding-top: 1px;
507
+ padding-bottom: 1px;
508
+ }
509
+ .the_tabs > .l_panel .l_active {
510
+ background: #cccccc;
511
+ font-weight: bold;
512
+ }
513
+ .the_tabs > .l_panel .l_active {
514
+ -moz-border-radius-topleft: 3px;
515
+ -webkit-border-top-left-radius: 3px;
516
+ border-top-left-radius: 3px;
517
+ -moz-border-radius-topright: 3px;
518
+ -webkit-border-top-right-radius: 3px;
519
+ border-top-right-radius: 3px;
520
+ cursor: text;
521
+ }
522
+ .the_tabs > .l_panel .l_active a {
523
+ cursor: text;
524
+ }
525
+ .the_tabs > .l_panel a {
526
+ outline: none;
527
+ }
528
+ .the_basic_list .l_item .l_check_box {
529
+ display: inline;
530
+ }
531
+ .the_basic_list .l_item .l_content {
532
+ display: inline;
533
+ }
534
+ .the_basic_list .l_item .l_content > div {
535
+ display: inline;
536
+ }
537
+ .the_basic_list .l_item a {
538
+ color: #2a5db0;
539
+ text-decoration: underline;
540
+ }
541
+ .the_basic_list .l_item a:visited {
542
+ color: #2a5db0;
543
+ }
544
+ .the_info_message {
545
+ background: white;
546
+ border: solid 1px white;
547
+ padding: 5px;
548
+ margin: 5px;
549
+ -moz-border-radius: 5px;
550
+ -webkit-border-radius: 5px;
551
+ border-radius: 5px;
552
+ margin-left: 20%;
553
+ margin-right: 20%;
554
+ background: #eeeebb;
555
+ }
556
+ .the_info_message a {
557
+ color: #2a5db0;
558
+ text-decoration: underline;
559
+ }
560
+ .the_info_message a:visited {
561
+ color: #2a5db0;
562
+ }
563
+ .the_error_message {
564
+ background: white;
565
+ border: solid 1px white;
566
+ padding: 5px;
567
+ margin: 5px;
568
+ -moz-border-radius: 5px;
569
+ -webkit-border-radius: 5px;
570
+ border-radius: 5px;
571
+ margin-left: 20%;
572
+ margin-right: 20%;
573
+ background: #eebbbb;
574
+ }
575
+ .the_error_message a {
576
+ color: #2a5db0;
577
+ text-decoration: underline;
578
+ }
579
+ .the_error_message a:visited {
580
+ color: #2a5db0;
581
+ }
582
+ .the_divider {
583
+ background: white;
584
+ border: solid 1px white;
585
+ padding: 5px;
586
+ margin: 5px;
587
+ clear: both;
588
+ font-size: 110%;
589
+ font-weight: bold;
590
+ text-align: right;
591
+ border-bottom: 1px solid black;
592
+ }
593
+ .the_table {
594
+ width: 100%;
595
+ }
596
+ .the_table a {
597
+ color: #2a5db0;
598
+ text-decoration: underline;
599
+ }
600
+ .the_table a:visited {
601
+ color: #2a5db0;
602
+ }
603
+ .the_table thead tr th {
604
+ background: #cccccc;
605
+ font-size: 110%;
606
+ font-weight: bold;
607
+ text-align: left;
608
+ padding: 5px;
609
+ }
610
+ .the_table thead tr th:first-child {
611
+ -moz-border-radius-topleft: 5px;
612
+ -webkit-border-top-left-radius: 5px;
613
+ border-top-left-radius: 5px;
614
+ }
615
+ .the_table thead tr th:last-child {
616
+ -moz-border-radius-topright: 5px;
617
+ -webkit-border-top-right-radius: 5px;
618
+ border-top-right-radius: 5px;
619
+ }
620
+ .the_table tbody tr td {
621
+ padding: 5px;
622
+ }
623
+ .the_table tbody .l_even {
624
+ background: #efefef;
625
+ }
626
+ .the_toolbar .l_left {
627
+ float: left;
628
+ }
629
+ .the_toolbar .l_left .l_item {
630
+ float: left;
631
+ }
632
+ .the_toolbar .l_right {
633
+ float: right;
634
+ }
635
+ .the_toolbar .l_right .l_item {
636
+ float: right;
637
+ }
638
+ .the_toolbar .l_left {
639
+ padding-left: 5px;
640
+ }
641
+ .the_toolbar .l_left .l_item {
642
+ padding-left: 5px;
643
+ padding-right: 5px;
644
+ padding-top: 1px;
645
+ padding-bottom: 1px;
646
+ }
647
+ .the_toolbar .l_right {
648
+ padding-right: 5px;
649
+ }
650
+ .the_toolbar .l_right .l_item {
651
+ padding-left: 5px;
652
+ padding-right: 5px;
653
+ padding-top: 1px;
654
+ padding-bottom: 1px;
655
+ }
656
+ .the_toolbar a {
657
+ color: #2a5db0;
658
+ text-decoration: underline;
659
+ }
660
+ .the_toolbar a:visited {
661
+ color: #2a5db0;
662
+ }
663
+ .the_dialog {
664
+ background: white;
665
+ border: solid 1px white;
666
+ padding: 5px;
667
+ margin: 5px;
668
+ border-width: 5px;
669
+ border-color: #cccccc;
670
+ -moz-border-radius: 5px;
671
+ -webkit-border-radius: 5px;
672
+ border-radius: 5px;
673
+ width: 60%;
674
+ }
675
+ .the_image_dialog {
676
+ background: white;
677
+ border: solid 1px white;
678
+ padding: 5px;
679
+ margin: 5px;
680
+ border-color: #cccccc;
681
+ -moz-border-radius: 5px;
682
+ -webkit-border-radius: 5px;
683
+ border-radius: 5px;
684
+ }
685
+ .the_context_menu {
686
+ background: white;
687
+ border: solid 1px white;
688
+ padding: 5px;
689
+ margin: 5px;
690
+ border-color: #cccccc;
691
+ -moz-border-radius: 3px;
692
+ -webkit-border-radius: 3px;
693
+ border-radius: 3px;
694
+ max-width: 100px;
695
+ }
696
+ .the_context_menu a {
697
+ color: #2a5db0;
698
+ text-decoration: underline;
699
+ }
700
+ .the_context_menu a:visited {
701
+ color: #2a5db0;
702
+ }
703
+ .the_inplace_editor {
704
+ background: white;
705
+ border: solid 1px white;
706
+ padding: 5px;
707
+ margin: 5px;
708
+ border-color: #cccccc;
709
+ -moz-border-radius: 5px;
710
+ -webkit-border-radius: 5px;
711
+ border-radius: 5px;
712
+ }
713
+ .the_form .l_field > table.css_table > tbody > tr > td.css_td1 {
714
+ width: 30%;
715
+ }
716
+ .the_form .l_line .l_item {
717
+ float: left;
718
+ }
719
+ .the_form .l_errors .l_error {
720
+ font-size: 90%;
721
+ color: #dd0000;
722
+ }
723
+ .the_form .l_field {
724
+ background: white;
725
+ border: solid 1px white;
726
+ padding-top: 1px;
727
+ padding-bottom: 1px;
728
+ margin-top: 1px;
729
+ margin-bottom: 1px;
730
+ }
731
+ .the_form .l_field a {
732
+ color: #2a5db0;
733
+ text-decoration: underline;
734
+ }
735
+ .the_form .l_field a:visited {
736
+ color: #2a5db0;
737
+ }
738
+ .the_form .l_field .l_required {
739
+ font-weight: bold;
740
+ }
741
+ .the_form .l_field .l_input select {
742
+ min-width: 30%;
743
+ }
744
+ .the_form .l_field .l_input input, .the_form .l_field .l_input textarea {
745
+ width: 100%;
746
+ }
747
+ .the_form .l_field .l_input textarea {
748
+ min-height: 60px !important;
749
+ }
750
+ .the_form .l_field .l_input input[type=checkbox] {
751
+ width: auto;
752
+ }
753
+ .the_form .l_field .l_input input[type=radio] {
754
+ width: auto;
755
+ }
756
+ .the_form .l_field .l_input label {
757
+ margin-left: 5px;
758
+ margin-right: 10px;
759
+ }
760
+ .the_form .l_field .l_description {
761
+ font-size: 90%;
762
+ color: #cccccc;
763
+ }
764
+ .the_form .l_line {
765
+ padding-left: 5px;
766
+ padding-right: 5px;
767
+ background: white;
768
+ background: white;
769
+ border: solid 1px white;
770
+ padding-top: 5px;
771
+ padding-bottom: 5px;
772
+ margin-top: 5px;
773
+ margin-bottom: 5px;
774
+ }
775
+ .the_form .l_line .l_item {
776
+ padding-left: 5px;
777
+ padding-right: 5px;
778
+ padding-top: 1px;
779
+ padding-bottom: 1px;
780
+ }
781
+ .the_form .l_line .l_active {
782
+ background: #cccccc;
783
+ font-weight: bold;
784
+ }
785
+ .the_form .l_line a {
786
+ color: #2a5db0;
787
+ text-decoration: underline;
788
+ }
789
+ .the_form .l_line a:visited {
790
+ color: #2a5db0;
791
+ }
792
+ .the_form .l_line .l_item a {
793
+ padding: 3px 0px 4px;
794
+ display: block;
795
+ }
796
+ .the_form .the_more {
797
+ float: right;
798
+ }
799
+ .the_attachments .l_item {
800
+ float: left;
801
+ }
802
+ .the_attachments .l_item > a, .the_attachments .l_item div {
803
+ float: left;
804
+ }
805
+ .the_attachments .l_item > a, .the_attachments .l_item div {
806
+ margin-right: 5px;
807
+ }
808
+ .the_attachments .l_item_style {
809
+ background: white;
810
+ border: solid 1px white;
811
+ padding: 5px;
812
+ margin: 5px;
813
+ -moz-border-radius: 5px;
814
+ -webkit-border-radius: 5px;
815
+ border-radius: 5px;
816
+ border-color: #cccccc;
817
+ margin-left: 0;
818
+ margin-right: 10px;
819
+ }
820
+ .the_attachments .l_empty_item_style {
821
+ background: white;
822
+ border: solid 1px white;
823
+ padding: 5px;
824
+ margin: 5px;
825
+ margin-left: 0;
826
+ margin-right: 10px;
827
+ }
828
+ .the_comment {
829
+ background: white;
830
+ border: solid 1px white;
831
+ padding: 5px;
832
+ margin: 5px;
833
+ -moz-border-radius: 5px;
834
+ -webkit-border-radius: 5px;
835
+ border-radius: 5px;
836
+ }
837
+ .the_comment > table.css_table > tbody > tr > td.css_td1 {
838
+ width: 50px;
839
+ }
840
+ .the_comment .l_image {
841
+ margin-right: 5px;
842
+ }
843
+ .the_thumb {
844
+ float: left;
845
+ background: white;
846
+ border: solid 1px white;
847
+ padding: 5px;
848
+ margin: 5px;
849
+ -moz-border-radius: 5px;
850
+ -webkit-border-radius: 5px;
851
+ border-radius: 5px;
852
+ min-width: 150px;
853
+ min-height: 150px;
854
+ margin: 0px;
855
+ }
856
+ .the_thumb .l_title {
857
+ display: block;
858
+ }
859
+ .the_thumb .m_hover_controls {
860
+ font-size: 90%;
861
+ }
862
+ .the_thumb .l_title {
863
+ font-size: 90%;
864
+ max-width: 150px;
865
+ }
866
+ .the_line {
867
+ background: white;
868
+ border: solid 1px white;
869
+ padding: 5px;
870
+ margin: 5px;
871
+ -moz-border-radius: 5px;
872
+ -webkit-border-radius: 5px;
873
+ border-radius: 5px;
874
+ }
875
+ .the_line > table.css_table > tbody > tr > td.css_td1 {
876
+ width: 50px;
877
+ }
878
+ .the_line .l_image {
879
+ width: 50px;
880
+ margin-right: 5px;
881
+ }
882
+ .the_line .l_title {
883
+ font-size: 110%;
884
+ font-weight: bold;
885
+ color: #2a5db0;
886
+ }
887
+ .the_line .l_title:visited {
888
+ color: #2a5db0;
889
+ }
890
+ .the_item {
891
+ background: white;
892
+ border: solid 1px white;
893
+ padding: 5px;
894
+ margin: 5px;
895
+ -moz-border-radius: 5px;
896
+ -webkit-border-radius: 5px;
897
+ border-radius: 5px;
898
+ }
899
+ .the_tool {
900
+ padding-bottom: 10px;
901
+ }
902
+ .the_tool > .l_title {
903
+ color: #cccccc;
904
+ font-weight: bold;
905
+ }
906
+ .the_tag_selector {
907
+ text-align: center;
908
+ }
909
+ .the_tag_selector .l_tag {
910
+ display: inline-block;
911
+ }
912
+ .the_tag_selector .l_selected {
913
+ -moz-border-radius: 3px;
914
+ -webkit-border-radius: 3px;
915
+ border-radius: 3px;
916
+ color: white;
917
+ padding-left: 5px;
918
+ padding-right: 5px;
919
+ background: #2a5db0;
920
+ }
921
+ .the_tag_selector .l_selected a {
922
+ color: white;
923
+ }
924
+ .the_tag_selector .l_tag {
925
+ margin: 1px;
926
+ }
927
+ .the_tag_selector .l_size_1 {
928
+ font-size: 90%;
929
+ }
930
+ .the_tag_selector .l_size_2 {
931
+ font-size: 120%;
932
+ }
933
+ .the_tag_selector .l_size_3 {
934
+ font-size: 130%;
935
+ }
936
+ .the_tag_selector .l_size_4 {
937
+ font-size: 140%;
938
+ }
939
+ .the_user {
940
+ background: white;
941
+ border: solid 1px white;
942
+ padding: 5px;
943
+ margin: 5px;
944
+ -moz-border-radius: 5px;
945
+ -webkit-border-radius: 5px;
946
+ border-radius: 5px;
947
+ }