Theme My Login - Version 4.0

Version Description

  • Implemented custom links for logged in users based on role
  • Implemented custom redirection upon log in based on role
  • Implemented custom registration/password recovery emails
  • Implemented true shortcode and template tag functionality
  • Implemented true multi-instance functionality
  • Implemented an easy-to-use jQuery tabbed administration menu
  • Implemented both 'fresh' and 'classic' colors for administration menu
Download this release

Release Info

Developer jfarthing84
Plugin Icon 128x128 Theme My Login
Version 4.0
Comparing to
See all releases

Code changes from version 3.3.1 to 4.0

Files changed (52) hide show
  1. classes/class.plugin-shell.php +315 -0
  2. classes/class.widget-new.php +81 -0
  3. classes/class.widget-old.php +74 -0
  4. classes/class.wp-login.php +660 -0
  5. css/theme-my-login-admin.css.php +47 -0
  6. theme-my-login.css → css/theme-my-login.css +6 -3
  7. css/wp-colors-classic/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  8. css/wp-colors-classic/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  9. css/wp-colors-classic/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  10. css/wp-colors-classic/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  11. css/wp-colors-classic/images/ui-bg_glass_75_eaf3fa_1x400.png +0 -0
  12. css/wp-colors-classic/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  13. css/wp-colors-classic/images/ui-bg_highlight-soft_75_bbd8e7_1x100.png +0 -0
  14. css/wp-colors-classic/images/ui-icons_222222_256x240.png +0 -0
  15. css/wp-colors-classic/images/ui-icons_2e83ff_256x240.png +0 -0
  16. css/wp-colors-classic/images/ui-icons_454545_256x240.png +0 -0
  17. css/wp-colors-classic/images/ui-icons_888888_256x240.png +0 -0
  18. css/wp-colors-classic/images/ui-icons_cd0a0a_256x240.png +0 -0
  19. css/wp-colors-classic/wp-colors-classic.css +428 -0
  20. css/wp-colors-fresh/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  21. css/wp-colors-fresh/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  22. css/wp-colors-fresh/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  23. css/wp-colors-fresh/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  24. css/wp-colors-fresh/images/ui-bg_glass_75_f1f1f1_1x400.png +0 -0
  25. css/wp-colors-fresh/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  26. css/wp-colors-fresh/images/ui-bg_highlight-soft_75_dfdfdf_1x100.png +0 -0
  27. css/wp-colors-fresh/images/ui-icons_222222_256x240.png +0 -0
  28. css/wp-colors-fresh/images/ui-icons_2e83ff_256x240.png +0 -0
  29. css/wp-colors-fresh/images/ui-icons_454545_256x240.png +0 -0
  30. css/wp-colors-fresh/images/ui-icons_888888_256x240.png +0 -0
  31. css/wp-colors-fresh/images/ui-icons_cd0a0a_256x240.png +0 -0
  32. css/wp-colors-fresh/wp-colors-fresh.css +428 -0
  33. images/add.gif +0 -0
  34. images/remove.gif +0 -0
  35. includes/admin-page.php +316 -135
  36. includes/widget-new.php +0 -127
  37. includes/widget-old.php +0 -140
  38. includes/wp-login-actions.php +0 -144
  39. includes/wp-login-forms.php +0 -131
  40. includes/wp-login-functions.php +0 -244
  41. js/jquery/jquery.js +20 -0
  42. js/jquery/ui.core.js +10 -0
  43. js/jquery/ui.tabs.js +13 -0
  44. js/theme-my-login-admin.js.php +47 -0
  45. language/theme-my-login-es_ES.mo +0 -0
  46. language/theme-my-login-fr_FR.mo +0 -0
  47. language/theme-my-login-fr_FR.po +0 -368
  48. language/theme-my-login-nl_NL.mo +0 -0
  49. language/theme-my-login-nl_NL.po +0 -368
  50. language/theme-my-login.pot +0 -375
  51. readme.txt +21 -3
  52. theme-my-login.php +368 -212
classes/class.plugin-shell.php ADDED
@@ -0,0 +1,315 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ global $wp_version;
4
+
5
+ if ($wp_version < '2.6') {
6
+ if ( !defined('WP_CONTENT_DIR') )
7
+ define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' );
8
+ if ( !defined('WP_CONTENT_URL') )
9
+ define( 'WP_CONTENT_URL', get_option('siteurl') . '/wp-content');
10
+ if ( !defined('WP_PLUGIN_DIR') )
11
+ define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins' );
12
+ if ( !defined('WP_PLUGIN_URL') )
13
+ define( 'WP_PLUGIN_URL', WP_CONTENT_URL . '/plugins' );
14
+ }
15
+
16
+ if ( !class_exists('WPPluginShell')) {
17
+
18
+ class WPPluginShell {
19
+
20
+ var $plugin_title = 'My Plugin';
21
+ var $plugin_textdomain = 'my-plugin';
22
+ var $plugin_options_name = 'my_plugin';
23
+
24
+ var $actions;
25
+ var $filters;
26
+ var $shortcodes;
27
+
28
+ var $styles;
29
+ var $scripts;
30
+ var $admin_styles;
31
+ var $admin_scripts;
32
+ var $admin_pages;
33
+
34
+ var $header_code = '';
35
+ var $footer_code = '';
36
+
37
+ var $options;
38
+
39
+ var $mail_from;
40
+
41
+ var $wp_version;
42
+
43
+ function WPPluginShell() {
44
+ $this->__construct();
45
+ }
46
+
47
+ function __construct() {
48
+ global $wp_version;
49
+
50
+ $this->wp_version = $wp_version;
51
+
52
+ $this->AddAction('wp_head', '_WPHead_');
53
+ $this->AddAction('wp_footer', '_WPFooter_');
54
+ $this->AddAction('wp_print_styles', '_WPPrintStyles_');
55
+ $this->AddAction('wp_print_scripts', '_WPPrintScripts_');
56
+ $this->AddAction('admin_print_styles', '_AdminPrintStyles_');
57
+ $this->AddAction('admin_print_scripts', '_AdminPrintScripts_');
58
+ $this->AddAction('admin_head', '_AdminHead_');
59
+ $this->AddAction('admin_menu', '_AdminMenu_');
60
+
61
+ $this->AddFilter('wp_mail_from', '_WPMailFrom_');
62
+ $this->AddFilter('wp_mail_from_name', '_WPMailFromName_');
63
+
64
+ $this->ActivateHooks('actions');
65
+ $this->ActivateHooks('filters');
66
+ $this->ActivateHooks('shortcodes');
67
+
68
+ }
69
+
70
+ /*
71
+ function __call($method, $args) {
72
+ print '';
73
+ }
74
+ */
75
+ function SetPluginTitle($name) {
76
+ $this->plugin_textdomain = sanitize_title($name);
77
+ $this->plugin_title = __($name, $this->plugin_textdomain);
78
+ $this->plugin_options_name = str_replace(' ', '_', strtolower($name));
79
+ }
80
+
81
+ function ActivateHooks($type = 'actions') {
82
+ if (is_array($this->$type) && !empty($this->$type)) {
83
+ foreach ( $this->$type as $key => $args ) {
84
+ $func = (is_array($args['func'])) ? $args['func'] : array(&$this, $args['func']);
85
+ if ( 'actions' == $type ) {
86
+ if ( version_compare($this->wp_version, $args['wp_version'], '>=') )
87
+ add_action($args['tag'], $func, $args['priority'], $args['args']);
88
+ } elseif ( 'filters' == $type ) {
89
+ if ( version_compare($this->wp_version, $args['wp_version'], '>=') )
90
+ add_filter($args['tag'], $func, $args['priority'], $args['args']);
91
+ } elseif ( 'shortcodes' == $type ) {
92
+ add_shortcode($args['tag'], $func);
93
+ }
94
+ }
95
+ }
96
+ }
97
+
98
+ function AddAction($tag, $func = false, $priority = 10, $args = 1, $wp_version = '2.5') {
99
+ if (empty($func)) {
100
+ $tmp = explode('_', $tag);
101
+ foreach ($tmp as $k => $v)
102
+ $tmp[$k] = (in_array($v, array('wp', 'url'))) ? strtoupper($v) : ucwords($v);
103
+ $func = implode($tmp);
104
+ }
105
+ $this->actions[] = array('tag' => $tag, 'func' => $func, 'priority' => $priority, 'args' => $args, 'wp_version' => $wp_version);
106
+ }
107
+
108
+ function AddFilter($tag, $func = false, $priority = 10, $args = 1, $wp_version = '2.5') {
109
+ if (empty($func)) {
110
+ $tmp = explode('_', $tag);
111
+ foreach ($tmp as $k => $v)
112
+ $tmp[$k] = (in_array($v, array('wp', 'url'))) ? strtoupper($v) : ucwords($v);
113
+ $func = implode($tmp);
114
+ }
115
+ $this->filters[] = array('tag' => $tag, 'func' => $func, 'priority' => $priority, 'args' => $args, 'wp_version' => $wp_version);
116
+ }
117
+
118
+ function AddShortcode($tag, $func = '') {
119
+ if (empty($func)) {
120
+ $tmp = explode('_', str_replace('-', '_', $tag));
121
+ foreach ($tmp as $k => $v)
122
+ $tmp[$k] = (in_array($v, array('wp', 'url'))) ? strtoupper($v) : ucwords($v);
123
+ $func = implode($tmp) . 'Shortcode';
124
+ }
125
+ $this->shortcodes[] = array('tag' => $tag, 'func' => $func);
126
+ }
127
+
128
+ function AddStyle($handle, $src = false, $deps = array(), $ver = false, $media = false) {
129
+ $this->styles[] = array('handle' => $handle, 'src' => $src, 'deps' => $deps, 'ver' => $ver, 'media' => $media);
130
+ }
131
+
132
+ function AddScript($handle, $src = false, $deps = array(), $ver = false, $in_footer = false) {
133
+ $this->scripts[] = array('handle' => $handle, 'src' => $src, 'deps' => $deps, 'ver' => $ver, 'in_footer' => $in_footer);
134
+ }
135
+
136
+ function AddAdminStyle($handle, $src = false, $deps = array(), $ver = false, $media = false) {
137
+ $this->admin_styles[] = array('handle' => $handle, 'src' => $src, 'deps' => $deps, 'ver' => $ver, 'media' => $media);
138
+ }
139
+
140
+ function AddAdminScript($handle, $src = false, $deps = array(), $ver = false, $in_footer = false) {
141
+ $this->admin_scripts[] = array('handle' => $handle, 'src' => $src, 'deps' => $deps, 'ver' => $ver, 'in_footer' => $in_footer);
142
+ }
143
+
144
+ function AddAdminPage($page, $page_title = '', $menu_title = '', $access_level = 8, $file = '', $function = '', $icon_url = '') {
145
+ $page_title = (empty($page_title)) ? $this->plugin_title : __($page_title, $this->plugin_textdomain);
146
+ $menu_title = (empty($menu_title)) ? (empty($page_title)) ? $this->plugin_title : __($page_title, $this->plugin_textdomain) : __($menu_title, $this->plugin_textdomain);
147
+ $access_level = (empty($access_level)) ? 8 : $access_level;
148
+ if ( empty($file) && empty($function) )
149
+ $function = str_replace(' ', '', ucwords(str_replace('-', ' ', sanitize_title($page_title))));
150
+ $file = (empty($file)) ? (empty($function)) ? __FILE__ : sanitize_title($page_title) : $file;
151
+ $function = (empty($function)) ? '' : $function;
152
+
153
+ $this->admin_pages[] = array('page' => $page, 'page_title' => $page_title, 'menu_title' => $menu_title, 'access_level' => $access_level, 'file' => $file, 'function' => $function, 'icon_url' => $icon_url);
154
+ }
155
+
156
+ function AddToHeader($code) {
157
+ $this->header_code .= $code;
158
+ }
159
+
160
+ function AddToFooter($code) {
161
+ $this->footer_code .= $code;
162
+ }
163
+
164
+ function SetMailFrom($email, $name = false) {
165
+ $this->mail_from['email'] = $email;
166
+ if (!empty($name))
167
+ $this->mail_from['name'] = $name;
168
+ }
169
+
170
+ function _WPHead_() {
171
+ if ( version_compare($this->wp_version, '2.6', '<') ) {
172
+ if ( is_array($this->styles) && !empty($this->styles) ) {
173
+ foreach ( $this->styles as $key => $args )
174
+ if (empty($args['ver']))
175
+ $args['ver'] = $this->wp_version;
176
+ echo '<link rel="stylesheet" id="'.$args['handle'].'-css" href="'.$args['src'].'?ver='.$args['ver'].'" type="text/css" media="'.$args['media'].'" />'."\n";
177
+ }
178
+ }
179
+ echo $this->header_code;
180
+ }
181
+
182
+ function _WPFooter_() {
183
+ echo $this->footer_code;
184
+ }
185
+
186
+ function _WPPrintStyles_() {
187
+ if ( !is_admin() )
188
+ $this->_handle_enqueues('style', $this->styles);
189
+ }
190
+
191
+ function _WPPrintScripts_() {
192
+ if ( !is_admin() )
193
+ $this->_handle_enqueues('script', $this->scripts);
194
+ }
195
+
196
+ function _AdminPrintStyles_() {
197
+ $this->_handle_enqueues('style', $this->admin_styles);
198
+ }
199
+
200
+ function _AdminPrintScripts_() {
201
+ $this->_handle_enqueues('script', $this->admin_scripts);
202
+ }
203
+
204
+ function _AdminHead_() {
205
+ if ( version_compare($this->wp_version, '2.6', '<') ) {
206
+ if ( is_array($this->admin_styles) && !empty($this->admin_styles) ) {
207
+ foreach ( $this->admin_styles as $key => $args ) {
208
+ if (empty($args['ver']))
209
+ $args['ver'] = $this->wp_version;
210
+ echo '<link rel="stylesheet" id="'.$args['handle'].'-css" href="'.$args['src'].'?ver='.$args['ver'].'" type="text/css" media="'.$args['media'].'" />'."\n";
211
+ }
212
+ }
213
+ }
214
+ }
215
+
216
+ function _AdminMenu_() {
217
+ if ( is_array($this->admin_pages) && !empty($this->admin_pages) ) {
218
+ foreach ( $this->admin_pages as $key => $args ) {
219
+ extract($args);
220
+
221
+ $function = (empty($function)) ? '' : array(&$this, $function);
222
+
223
+ if ( version_compare($this->wp_version, '2.7', '>=') ) {
224
+ if ('menu' == $page)
225
+ add_menu_page($page_title, $menu_title, $access_level, $file, $function, $icon_url = '');
226
+ elseif ('object' == $page)
227
+ add_object_page($page_title, $menu_title, $access_level, $file, $function, $icon_url = '');
228
+ elseif ('utility' == $page)
229
+ add_utility_page($page_title, $menu_title, $access_level, $file, $function, $icon_url = '');
230
+ elseif ('dashboard' == $page)
231
+ add_dashboard_page($page_title, $menu_title, $access_level, $file, $function);
232
+ elseif ('posts' == $page)
233
+ add_posts_page($page_title, $menu_title, $access_level, $file, $function);
234
+ elseif ('media' == $page)
235
+ add_media_page($page_title, $menu_title, $access_level, $file, $function);
236
+ elseif ('links' == $page)
237
+ add_links_page($page_title, $menu_title, $access_level, $file, $function);
238
+ elseif ('pages' == $page)
239
+ add_pages_page($page_title, $menu_title, $access_level, $file, $function);
240
+ elseif ('comments' == $page)
241
+ add_comments_page($page_title, $menu_title, $access_level, $file, $function);
242
+ } else {
243
+ if (in_array($page, array('menu', 'object', 'utility', 'dashboard', 'posts', 'media', 'links', 'pages', 'comments')))
244
+ add_menu_page($page_title, $menu_title, $access_level, $file, $function);
245
+ }
246
+ if ('management' == $page)
247
+ add_management_page($page_title, $menu_title, $access_level, $file, $function);
248
+ elseif ('options' == $page)
249
+ add_options_page($page_title, $menu_title, $access_level, $file, $function);
250
+ elseif ('theme' == $page)
251
+ add_theme_page($page_title, $menu_title, $access_level, $file, $function);
252
+ elseif ('users' == $page)
253
+ add_users_page($page_title, $menu_title, $access_level, $file, $function);
254
+ else
255
+ add_submenu_page($page, $page_title, $menu_title, $access_level, $file, $function);
256
+ }
257
+ }
258
+ }
259
+
260
+ function _WPMailFrom_($from_email) {
261
+ return (empty($this->mail_from['email'])) ? $from_email : $this->mail_from['email'];
262
+ }
263
+
264
+ function _WPMailFromName_($from_name) {
265
+ return (empty($this->mail_from['name'])) ? $from_email : $this->mail_from['name'];
266
+ }
267
+
268
+ function _handle_enqueues($type, $to_enqueue) {
269
+ if ( is_array($to_enqueue) && !empty($to_enqueue) ) {
270
+ foreach ( $to_enqueue as $key => $args ) {
271
+ if ('style' == $type)
272
+ wp_enqueue_style($args['handle'], $args['src'], $args['deps'], $args['ver'], $args['media']);
273
+ elseif ('script' == $type)
274
+ wp_enqueue_script($args['handle'], $args['src'], $args['deps'], $args['ver'], $args['in_footer']);
275
+ }
276
+ }
277
+ }
278
+
279
+ function LoadOptions($options = '') {
280
+
281
+ if (is_array($options) && !empty($options))
282
+ $this->options = $options;
283
+ elseif (is_callable(array(&$this, 'InitOptions')))
284
+ $this->InitOptions();
285
+
286
+ $storedoptions = get_option( $this->plugin_options_name );
287
+ if ( $storedoptions && is_array( $storedoptions ) ) {
288
+ foreach ( $storedoptions as $key => $value ) {
289
+ $this->options[$key] = $value;
290
+ }
291
+ } else update_option( $this->plugin_options_name, $this->options );
292
+ }
293
+
294
+ function GetOption( $key ) {
295
+ if ( array_key_exists( $key, $this->options ) ) {
296
+ return $this->options[$key];
297
+ } else return null;
298
+ }
299
+
300
+ function SetOption( $key, $value ) {
301
+ $this->options[$key] = $value;
302
+ }
303
+
304
+ function SaveOptions() {
305
+ $oldvalue = get_option( $this->plugin_options_name );
306
+ if( $oldvalue == $this->options ) {
307
+ return true;
308
+ } else return update_option( $this->plugin_options_name, $this->options );
309
+ }
310
+
311
+ }
312
+
313
+ }
314
+
315
+ ?>
classes/class.widget-new.php ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class ThemeMyLoginWidget extends WP_Widget {
4
+
5
+ function ThemeMyLoginWidget(){
6
+ $widget_ops = array('classname' => 'widget_theme_my_login', 'description' => __('A login form for your blog.', 'theme-my-login') );
7
+ $this->WP_Widget('theme-my-login', __('Theme My Login', 'theme-my-login'), $widget_ops);
8
+ }
9
+
10
+ function widget($args, $instance){
11
+ global $ThemeMyLogin;
12
+
13
+ $WPLogin = new WPLogin('theme-my-login');
14
+
15
+ $new_args['widget'] = array_merge($args, $instance);
16
+
17
+ if (!is_page($ThemeMyLogin->GetOption('page_id'))) {
18
+ echo $ThemeMyLogin->ThemeMyLoginShortcode($new_args);
19
+ }
20
+ }
21
+
22
+ function update($new_instance, $old_instance){
23
+
24
+ $instance = $old_instance;
25
+ $instance['default_action'] = $new_instance['default_action'];
26
+ $instance['show_logged'] = (empty($new_instance['show_logged'])) ? false : true;
27
+ $instance['show_title'] = (empty($new_instance['show_title'])) ? false : true;
28
+ $instance['show_links'] = (empty($new_instance['show_links'])) ? false: true;
29
+ $instance['show_gravatar'] = (empty($new_instance['show_gravatar'])) ? false : true;
30
+ $instance['gravatar_size'] = absint($new_instance['gravatar_size']);
31
+ $instance['registration'] = (empty($new_instance['registration'])) ? false : true;
32
+ $instance['lostpassword'] = (empty($new_instance['lostpassword'])) ? false : true;
33
+
34
+ return $instance;
35
+ }
36
+
37
+ function form($instance){
38
+ global $wp_roles;
39
+ $user_roles = $wp_roles->get_names();
40
+
41
+ //Defaults
42
+ $defaults['default_action'] = 'login';
43
+ $defaults['show_logged'] = 1;
44
+ $defaults['show_title'] = 1;
45
+ $defaults['show_links'] = 1;
46
+ $defaults['show_gravatar'] = 1;
47
+ $defaults['gravatar_size'] = 50;
48
+ $defaults['registration'] = 1;
49
+ $defaults['lostpassword'] = 1;
50
+
51
+ $instance = wp_parse_args( (array) $instance, (array) $defaults );
52
+ $actions = array('login' => 'Login', 'register' => 'Register', 'lostpassword' => 'Lost Password');
53
+ echo '<p>Default Action<br /><select name="' . $this->get_field_name('default_action') . '" id="' . $this->get_field_id('default_action') . '">';
54
+ foreach ($actions as $action => $title) {
55
+ $is_selected = ($instance['default_action'] == $action) ? ' selected="selected"' : '';
56
+ echo '<option value="' . $action . '"' . $is_selected . '>' . $title . '</option>';
57
+ }
58
+ echo '</select></p>' . "\n";
59
+ $is_checked = (empty($instance['show_logged'])) ? '' : 'checked="checked" ';
60
+ echo '<p><input name="' . $this->get_field_name('show_logged') . '" type="checkbox" id="' . $this->get_field_id('show_logged') . '" value="1" ' . $is_checked . '/> <label for="' . $this->get_field_id('show_logged') . '">' . __('Show When Logged In', 'theme-my-login') . '</label></p>' . "\n";
61
+ $is_checked = (empty($instance['show_title'])) ? '' : 'checked="checked" ';
62
+ echo '<p><input name="' . $this->get_field_name('show_title') . '" type="checkbox" id="' . $this->get_field_id('show_title') . '" value="1" ' . $is_checked . '/> <label for="' . $this->get_field_id('show_title') . '">' . __('Show Title', 'theme-my-login') . '</label></p>' . "\n";
63
+ $is_checked = (empty($instance['show_links'])) ? '' : 'checked="checked" ';
64
+ echo '<p><input name="' . $this->get_field_name('show_links') . '" type="checkbox" id="' . $this->get_field_id('show_links') . '" value="1" ' . $is_checked . '/> <label for="' . $this->get_field_id('show_links') . '">' . __('Show Action Links', 'theme-my-login') . '</label></p>' . "\n";
65
+ $is_checked = (empty($instance['show_gravatar'])) ? '' : 'checked="checked" ';
66
+ echo '<p><input name="' . $this->get_field_name('show_gravatar') . '" type="checkbox" id="' . $this->get_field_id('show_gravatar') . '" value="1" ' . $is_checked . '/> <label for="' . $this->get_field_id('show_gravatar') . '">' . __('Show Gravatar', 'theme-my-login') . '</label></p>' . "\n";
67
+ echo '<p>' . __('Gravatar Size', 'theme-my-login') . ': <input name="' . $this->get_field_name('gravatar_size') . '" type="text" id="' . $this->get_field_id('gravatar_size') . '" value="' . $instance['gravatar_size'] . '" size="3" /> <label for="' . $this->get_field_id('gravatar_size') . '"></label></p>' . "\n";
68
+ $is_checked = (empty($instance['registration'])) ? '' : 'checked="checked" ';
69
+ echo '<p><input name="' . $this->get_field_name('registration') . '" type="checkbox" id="' . $this->get_field_id('registration') . '" value="1" ' . $is_checked . '/> <label for="' . $this->get_field_id('registration') . '">' . __('Allow Registration', 'theme-my-login') . '</label></p>' . "\n";
70
+ $is_checked = (empty($instance['lostpassword'])) ? '' : 'checked="checked" ';
71
+ echo '<p><input name="' . $this->get_field_name('lostpassword') . '" type="checkbox" id="' . $this->get_field_id('lostpassword') . '" value="1" ' . $is_checked . '/> <label for="' . $this->get_field_id('lostpassword') . '">' . __('Allow Password Recovery', 'theme-my-login') . '</label></p>' . "\n";
72
+ }
73
+
74
+ }// END class
75
+
76
+ function ThemeMyLoginWidgetInit() {
77
+ register_widget('ThemeMyLoginWidget');
78
+ }
79
+ add_action('widgets_init', 'ThemeMyLoginWidgetInit');
80
+
81
+ ?>
classes/class.widget-old.php ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class ThemeMyLoginWidget {
4
+
5
+ function ThemeMyLoginWidget() {
6
+ add_action('plugins_loaded', array(&$this, 'PluginsLoaded'));
7
+ }
8
+
9
+ function PluginsLoaded() {
10
+ wp_register_sidebar_widget('theme-my-login', 'Theme My Login', array(&$this, 'Widget'), array('description' => 'A login form for your blog'));
11
+ wp_register_widget_control('theme-my-login', 'Theme My Login', array(&$this, 'WidgetControl'));
12
+ }
13
+
14
+ function Widget($args) {
15
+ global $ThemeMyLogin;
16
+
17
+ $new_args['widget'] = wp_parse_args($args);
18
+
19
+ echo $ThemeMyLogin->ThemeMyLoginShortcode($new_args);
20
+
21
+ }
22
+
23
+ function WidgetControl() {
24
+ global $ThemeMyLogin;
25
+
26
+ if ( $_POST['tml_submit'] ) {
27
+
28
+ $widget['default_action'] = $_POST['tml_default_action'];
29
+ $widget['show_logged'] = (empty($_POST['tml_show_logged'])) ? false : true;
30
+ $widget['show_title'] = (empty($_POST['tml_show_title'])) ? false : true;
31
+ $widget['show_links'] = (empty($_POST['tml_show_links'])) ? false: true;
32
+ $widget['show_gravatar'] = (empty($_POST['tml_show_gravatar'])) ? false : true;
33
+ $widget['gravatar_size'] = absint($_POST['tml_gravatar_size']);
34
+ $widget['registration'] = (empty($_POST['tml_registration'])) ? false : true;
35
+ $widget['lostpassword'] = (empty($_POST['tml_lostpassword'])) ? false : true;
36
+ //$ThemeMyLogin->options['widget'] = array_merge($ThemeMyLogin->options['widget'], $widget);
37
+ $ThemeMyLogin->SetOption('widget', $widget);
38
+ $ThemeMyLogin->SaveOptions();
39
+
40
+ }
41
+
42
+ $widget = $ThemeMyLogin->GetOption('widget');
43
+
44
+ $actions = array('login' => 'Login', 'register' => 'Register', 'lostpassword' => 'Lost Password');
45
+ echo '<p>Default Action<br /><select name="tml_default_action" id="tml_default_action">';
46
+ foreach ($actions as $action => $title) {
47
+ $is_selected = ($widget['default_action'] == $action) ? ' selected="selected"' : '';
48
+ echo '<option value="' . $action . '"' . $is_selected . '>' . $title . '</option>';
49
+ }
50
+ echo '</select></p>' . "\n";
51
+ $is_checked = (empty($widget['show_logged'])) ? '' : 'checked="checked" ';
52
+ echo '<p><input name="tml_show_logged" type="checkbox" id="tml_show_logged" value="1" ' . $is_checked . '/> <label for="tml_show_logged">' . __('Show When Logged In', 'theme-my-login') . '</label></p>' . "\n";
53
+ $is_checked = (empty($widget['show_title'])) ? '' : 'checked="checked" ';
54
+ echo '<p><input name="tml_show_title" type="checkbox" id="tml_show_title" value="1" ' . $is_checked . '/> <label for="tml_show_title">' . __('Show Title', 'theme-my-login') . '</label></p>' . "\n";
55
+ $is_checked = (empty($widget['show_links'])) ? '' : 'checked="checked" ';
56
+ echo '<p><input name="tml_show_links" type="checkbox" id="tml_show_links" value="1" ' . $is_checked . '/> <label for="tml_show_links">' . __('Show Action Links', 'theme-my-login') . '</label></p>' . "\n";
57
+ $is_checked = (empty($widget['show_gravatar'])) ? '' : 'checked="checked" ';
58
+ echo '<p><input name="tml_show_gravatar" type="checkbox" id="tml_show_gravatar" value="1" ' . $is_checked . '/> <label for="tml_show_gravatar">' . __('Show Gravatar', 'theme-my-login') . '</label></p>' . "\n";
59
+ echo '<p>' . __('Gravatar Size', 'theme-my-login') . ': <input name="tml_gravatar_size" type="text" id="tml_gravatar_size" value="' . $widget['gravatar_size'] . '" size="3" /> <label for="tml_gravatar_size"></label></p>' . "\n";
60
+ $is_checked = (empty($widget['registration'])) ? '' : 'checked="checked" ';
61
+ echo '<p><input name="tml_registration" type="checkbox" id="tml_registration" value="1" ' . $is_checked . '/> <label for="tml_registration">' . __('Allow Registration', 'theme-my-login') . '</label></p>' . "\n";
62
+ $is_checked = (empty($widget['lostpassword'])) ? '' : 'checked="checked" ';
63
+ echo '<p><input name="tml_lostpassword" type="checkbox" id="tml_lostpassword" value="1" ' . $is_checked . '/> <label for="tml_lostpassword">' . __('Allow Password Recovery', 'theme-my-login') . '</label></p>' . "\n";
64
+ echo '<p><input type="hidden" id="tml_submit" name="tml_submit" value="1" /></p>' . "\n";
65
+
66
+ }
67
+
68
+ }
69
+
70
+ if (class_exists('ThemeMyLoginWidget')) {
71
+ $ThemeMyLoginWidget = new ThemeMyLoginWidget();
72
+ }
73
+
74
+ ?>
classes/class.wp-login.php ADDED
@@ -0,0 +1,660 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( !class_exists('WPLogin') ) {
4
+ class WPLogin {
5
+
6
+ var $textdomain;
7
+
8
+ var $action;
9
+ var $errors;
10
+ var $redirect_to;
11
+ var $secure_cookie;
12
+
13
+ var $instance;
14
+
15
+ var $options;
16
+
17
+ function WPLogin($textdomain = '', $options = '') {
18
+ $this->__construct($textdomain, $options);
19
+ }
20
+
21
+ function __construct($textdomain = '', $options = '') {
22
+
23
+ $this->textdomain = $textdomain;
24
+
25
+ $this->LoadOptions($options);
26
+
27
+ $this->ForceSSL();
28
+
29
+ $this->action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';
30
+ $this->instance = isset($_REQUEST['instance']) ? $_REQUEST['instance'] : '';
31
+ $this->errors = new WP_Error();
32
+
33
+ if ( isset($_GET['key']) )
34
+ $this->action = 'resetpass';
35
+
36
+ nocache_headers();
37
+
38
+ header('Content-Type: '.get_bloginfo('html_type').'; charset='.get_bloginfo('charset'));
39
+
40
+ $this->HandleRelocate();
41
+
42
+ $this->SetTestCookie();
43
+
44
+ if ( !empty( $_REQUEST['redirect_to'] ) ) {
45
+ $this->redirect_to = $_REQUEST['redirect_to'];
46
+ // Redirect to https if user wants ssl
47
+ if ( $this->secure_cookie && false !== strpos($this->redirect_to, 'wp-admin') )
48
+ $this->redirect_to = preg_replace('|^http://|', 'https://', $this->redirect_to);
49
+ } else {
50
+ $this->redirect_to = admin_url();
51
+ }
52
+
53
+ $this->redirect_to = apply_filters('login_redirect', $this->redirect_to, isset( $_REQUEST['redirect_to'] ) ? $_REQUEST['redirect_to'] : '', '');
54
+
55
+ // allow plugins to override the default actions, and to add extra actions if they want
56
+ do_action('login_form_' . $this->action);
57
+
58
+ switch ($this->action) {
59
+
60
+ case 'logout' :
61
+ $this->LogoutAction();
62
+ break;
63
+
64
+ case 'lostpassword' :
65
+ case 'retrievepassword' :
66
+ $this->RetrievePasswordAction();
67
+ break;
68
+
69
+ case 'resetpass' :
70
+ case 'rp' :
71
+ $this->ResetPassAction();
72
+ break;
73
+
74
+ case 'register' :
75
+ $this->RegisterAction();
76
+ break;
77
+
78
+ case 'login' :
79
+ default:
80
+ $this->LoginAction();
81
+ break;
82
+ }
83
+
84
+ }
85
+
86
+ function Display($instance, $args = '') {
87
+ global $user_ID, $current_user, $wp_version;
88
+
89
+ $this->LoadOptions($args);
90
+
91
+ $action = (isset($this->options['widget']['default_action'])) ? $this->options['widget']['default_action'] : 'login';
92
+ if ($instance == $this->instance)
93
+ $action = $this->action;
94
+
95
+ ob_start();
96
+ echo $this->options['widget']['before_widget'];
97
+ if ( is_user_logged_in() ) {
98
+ if ( $this->options['widget']['show_logged'] ) {
99
+ $user = new WP_User($user_ID);
100
+ $user_role = array_shift($user->roles);
101
+ $replace_this = array('/%user_login%/', '/%display_name%/');
102
+ $replace_with = array($user->user_login, $user->display_name);
103
+ $welcome = preg_replace($replace_this, $replace_with, $this->options['titles']['welcome']);
104
+ if ( $this->options['widget']['show_title'] )
105
+ echo $this->options['widget']['before_title'] . $welcome . $this->options['widget']['after_title'] . "\n";
106
+ if ($this->options['widget']['show_gravatar'])
107
+ echo '<div class="login-avatar">' . get_avatar( $user_ID, $size = $this->options['widget']['gravatar_size'] ) . '</div>' . "\n";
108
+ do_action('login_avatar', $current_user);
109
+ echo '<ul class="login-links">' . "\n";
110
+ foreach ($this->options['links'][$user_role] as $key => $data) {
111
+ echo '<li><a href="' . $data['url'] . '">' . $data['title'] . '</a></li>' . "\n";
112
+ }
113
+ do_action('login_links', $current_user);
114
+ $redirect = $this->GuessURL();
115
+ if ($wp_version >= '2.7')
116
+ echo '<li><a href="' . wp_logout_url($redirect) . '">' . __('Log Out') . '</a></li>' . "\n";
117
+ else
118
+ echo '<li><a href="' . site_url('wp-login.php?action=logout&redirect_to='.$redirect, 'login') . '">' . __('Log Out') . '</a></li>' . "\n";
119
+ echo '</ul>' . "\n";
120
+ }
121
+ } else {
122
+ if ( $this->options['widget']['show_title'] )
123
+ echo $this->options['widget']['before_title'] . $this->GetTitle($instance) . $this->options['widget']['after_title'] . "\n";
124
+ if ($instance == $this->instance || !empty($action)) {
125
+ switch ($action) {
126
+ case 'lostpassword' :
127
+ case 'retrievepassword' :
128
+ echo $this->RetrievePasswordForm($instance);
129
+ break;
130
+ case 'register' :
131
+ echo $this->RegisterForm($instance);
132
+ break;
133
+ case 'login' :
134
+ default :
135
+ echo $this->LoginForm($instance);
136
+ break;
137
+ }
138
+ } else {
139
+ echo $this->LoginForm($instance);
140
+ }
141
+ }
142
+ echo $this->options['widget']['after_widget'] . "\n";
143
+ $contents = ob_get_contents();
144
+ ob_end_clean();
145
+ return $contents;
146
+ }
147
+
148
+ function LoadOptions($options = array()) {
149
+ $this->options = wp_parse_args($options);
150
+ }
151
+
152
+ function GetTitle($instance) {
153
+ $action = (isset($this->options['widget']['default_action'])) ? $this->options['widget']['default_action'] : 'login';
154
+ if ($instance == $this->instance)
155
+ $action = $this->action;
156
+
157
+ switch ($action) {
158
+ case 'register':
159
+ return $this->options['titles']['register'];
160
+ break;
161
+ case 'lostpassword':
162
+ case 'retrievepassword':
163
+ return $this->options['titles']['lostpassword'];
164
+ break;
165
+ case 'login':
166
+ default:
167
+ return $this->options['titles']['login'];
168
+ break;
169
+ }
170
+ }
171
+
172
+ function PageHeader($instance, $message = '') {
173
+ global $error;
174
+
175
+ echo '<div class="login" id="' . $instance . '">';
176
+
177
+ if ( !empty( $message ) ) echo '<p class="message">' . apply_filters('login_message', $message) . "</p>\n";
178
+
179
+ // Incase a plugin uses $error rather than the $errors object
180
+ if ( !empty( $error ) ) {
181
+ $this->errors->add('error', $error);
182
+ unset($error);
183
+ }
184
+
185
+ if ( $instance == $this->instance || $this->options['widget']['show_all_msgs'] ) {
186
+ if ( $this->errors->get_error_code() ) {
187
+ $errors = '';
188
+ $messages = '';
189
+ foreach ( $this->errors->get_error_codes() as $code ) {
190
+ $severity = $this->errors->get_error_data($code);
191
+ foreach ( $this->errors->get_error_messages($code) as $error ) {
192
+ if ( 'message' == $severity )
193
+ $messages .= ' ' . $error . "<br />\n";
194
+ else
195
+ $errors .= ' ' . $error . "<br />\n";
196
+ }
197
+ }
198
+ if ( !empty($errors) )
199
+ echo '<p class="error">' . apply_filters('login_errors', $errors) . "</p>\n";
200
+ if ( !empty($messages) )
201
+ echo '<p class="message">' . apply_filters('login_messages', $messages) . "</p>\n";
202
+ }
203
+ }
204
+ }
205
+
206
+ function PageFooter($instance) {
207
+ $action = (isset($this->options['widget']['default_action'])) ? $this->options['widget']['default_action'] : 'login';
208
+ if ($instance == $this->instance)
209
+ $action = $this->action;
210
+
211
+ if ( isset($this->options['widget']['show_links']) && true == $this->options['widget']['show_links'] ) {
212
+ echo '<ul class="links">' . "\n";
213
+ if (in_array($action, array('register', 'lostpassword')) || $action == 'login' && isset($_GET['checkemail']) && 'registered' != $_GET['checkemail']) {
214
+ $url = $this->GuessURL(array('instance' => $instance, 'action' => 'login'));
215
+ echo '<li><a href="' . $url . '">' . $this->options['titles']['login'] . '</a></li>' . "\n";
216
+ }
217
+ if (get_option('users_can_register')) {
218
+ if ( 'register' != $action ) {
219
+ $url = ($this->options['widget']['registration']) ? $this->GuessURL(array('instance' => $instance, 'action' => 'register')) : site_url('wp-login.php?instance='.$instance.'&action=register', 'login');
220
+ $url = apply_filters('login_footer_registration_link', $url);
221
+ echo '<li><a href="' . $url . '">' . $this->options['titles']['register'] . '</a></li>' . "\n";
222
+ }
223
+ }
224
+ if ( 'lostpassword' != $action ) {
225
+ $url = ($this->options['widget']['lostpassword']) ? $this->GuessURL(array('instance' => $instance, 'action' => 'lostpassword')) : site_url('wp-login.php?instance='.$instance.'&action=lostpassword', 'login');
226
+ $url = apply_filters('login_footer_forgotpassword_link', $url);
227
+ echo '<li><a href="' . $url . '">' . $this->options['titles']['lostpassword'] . '</a></li>' . "\n";
228
+ }
229
+ echo '</ul>' . "\n";
230
+ }
231
+ echo '</div>' . "\n";
232
+ }
233
+
234
+ function LoginForm($instance) {
235
+
236
+ // Clear errors if loggedout is set.
237
+ if ( !empty($_GET['loggedout']) )
238
+ $this->errors = new WP_Error();
239
+
240
+ // If cookies are disabled we can't log in even with a valid user+pass
241
+ if ( isset($_POST['testcookie']) && empty($_COOKIE[TEST_COOKIE]) )
242
+ $this->errors->add('test_cookie', __("<strong>ERROR</strong>: Cookies are blocked or not supported by your browser. You must <a href='http://www.google.com/cookies.html'>enable cookies</a> to use WordPress."));
243
+
244
+ // Some parts of this script use the main login form to display a message
245
+ if ( isset($_GET['loggedout']) && TRUE == $_GET['loggedout'] ) $this->errors->add('loggedout', __('You are now logged out.'), 'message');
246
+ elseif ( isset($_GET['registration']) && 'disabled' == $_GET['registration'] ) $this->errors->add('registerdisabled', __('User registration is currently not allowed.'));
247
+ elseif ( isset($_GET['checkemail']) && 'confirm' == $_GET['checkemail'] ) $this->errors->add('confirm', __('Check your e-mail for the confirmation link.'), 'message');
248
+ elseif ( isset($_GET['checkemail']) && 'newpass' == $_GET['checkemail'] ) $this->errors->add('newpass', __('Check your e-mail for your new password.'), 'message');
249
+ elseif ( isset($_GET['checkemail']) && 'registered' == $_GET['checkemail'] ) $this->errors->add('registered', $this->options['messages']['success'], 'message');
250
+
251
+ $this->PageHeader($instance);
252
+
253
+ if ( isset($_POST['log']) )
254
+ $user_login = ( 'incorrect_password' == $this->errors->get_error_code() || 'empty_password' == $this->errors->get_error_code() ) ? attribute_escape(stripslashes($_POST['log'])) : '';
255
+
256
+ $user_login = ( $this->instance == $instance && isset($user_login) ) ? $user_login : '';
257
+
258
+ if ( !isset($_GET['checkemail']) || (isset($_GET['checkemail']) && $instance != $this->instance) || (!in_array( $_GET['checkemail'], array('confirm', 'newpass') ) && $instance == $this->instance) || (in_array( $_GET['checkemail'], array('confirm', 'newpass') ) && $instance != $this->instance) ) {
259
+ ?>
260
+ <form name="loginform" id="loginform-<?php echo $instance; ?>" action="<?php echo $this->GuessURL(array('instance' => $instance, 'action' => 'login')); ?>" method="post">
261
+ <p>
262
+ <label><?php _e('Username') ?><br />
263
+ <input type="text" name="log" id="user_login-<?php echo $instance; ?>" class="input" value="<?php echo isset($user_login) ? $user_login : ''; ?>" size="20" /></label>
264
+ </p>
265
+ <p>
266
+ <label><?php _e('Password') ?><br />
267
+ <input type="password" name="pwd" id="user_pass-<?php echo $instance; ?>" class="input" value="" size="20" /></label>
268
+ </p>
269
+ <?php do_action('login_form'); ?>
270
+ <p class="forgetmenot"><label><input name="rememberme" type="checkbox" id="rememberme-<?php echo $instance; ?>" value="forever" /> <?php _e('Remember Me'); ?></label></p>
271
+ <p class="submit">
272
+ <input type="submit" name="login-submit" id="login-submit-<?php echo $instance; ?>" value="<?php _e('Log In'); ?>" />
273
+ <input type="hidden" name="redirect_to" value="<?php echo attribute_escape($this->redirect_to); ?>" />
274
+ <input type="hidden" name="testcookie" value="1" />
275
+ </p>
276
+ </form>
277
+ <?php
278
+ }
279
+ if ($instance == $this->instance) { ?>
280
+ <script type="text/javascript">
281
+ <?php if ( $user_login ) { ?>
282
+ setTimeout( function(){ try{
283
+ d = document.getElementById('user_pass-<?php echo $this->instance; ?>');
284
+ d.value = '';
285
+ d.focus();
286
+ } catch(e){}
287
+ }, 200);
288
+ <?php } else { ?>
289
+ try{document.getElementById('user_login-<?php echo $this->instance; ?>').focus();}catch(e){}
290
+ <?php } ?>
291
+ </script>
292
+ <?php }
293
+ $this->PageFooter($instance);
294
+ }
295
+
296
+ function RegisterForm($instance) {
297
+ $user_login = isset($_POST['user_login']) ? $_POST['user_login'] : '';
298
+ $user_email = isset($_POST['user_email']) ? $_POST['user_email'] : '';
299
+ $this->PageHeader($instance);
300
+ ?>
301
+ <form name="registerform" id="registerform-<?php echo $instance; ?>" action="<?php echo $this->GuessURL(array('instance' => $instance, 'action' => 'register')); ?>" method="post">
302
+ <p>
303
+ <label><?php _e('Username') ?><br />
304
+ <input type="text" name="user_login" id="user_login-<?php echo $instance; ?>" class="input" value="<?php echo attribute_escape(stripslashes($user_login)); ?>" size="20" /></label>
305
+ </p>
306
+ <p>
307
+ <label><?php _e('E-mail') ?><br />
308
+ <input type="text" name="user_email" id="user_email-<?php echo $instance; ?>" class="input" value="<?php echo attribute_escape(stripslashes($user_email)); ?>" size="20" /></label>
309
+ </p>
310
+ <?php do_action('register_form'); ?>
311
+ <p id="reg_passmail-<?php echo $instance; ?>"><?php echo $this->options['messages']['register']; ?></p>
312
+ <p class="submit">
313
+ <input type="submit" name="register-submit" id="register-submit-<?php echo $instance; ?>" value="<?php _e('Register'); ?>" />
314
+ </p>
315
+ </form>
316
+ <?php
317
+ if ($instance == $this->instance) { ?>
318
+ <script type="text/javascript">
319
+ try{document.getElementById('user_login-<?php echo $this->instance; ?>').focus();}catch(e){}
320
+ </script>
321
+ <?php }
322
+ $this->PageFooter($instance);
323
+ }
324
+
325
+ function RetrievePasswordForm($instance) {
326
+ do_action('lost_password');
327
+ $this->PageHeader($instance, $this->options['messages']['lostpassword']);
328
+ $user_login = isset($_POST['user_login']) ? stripslashes($_POST['user_login']) : '';
329
+ ?>
330
+ <form name="lostpasswordform" id="lostpasswordform-<?php echo $instance; ?>" action="<?php echo $this->GuessURL(array('instance' => $instance, 'action' => 'lostpassword')); ?>" method="post">
331
+ <p>
332
+ <label><?php _e('Username or E-mail:') ?><br />
333
+ <input type="text" name="user_login" id="user_login-<?php echo $instance; ?>" class="input" value="<?php echo attribute_escape($user_login); ?>" size="20" /></label>
334
+ </p>
335
+ <?php do_action('lostpassword_form'); ?>
336
+ <p class="submit">
337
+ <input type="submit" name="lostpassword-submit" id="lostpassword-submit-<?php echo $instance; ?>" value="<?php _e('Get New Password'); ?>" />
338
+ </p>
339
+ </form>
340
+ <?php
341
+ if ($instance == $this->instance) { ?>
342
+ <script type="text/javascript">
343
+ try{document.getElementById('user_login-<?php echo $this->instance; ?>').focus();}catch(e){}
344
+ </script>
345
+ <?php }
346
+ $this->PageFooter($instance);
347
+ }
348
+
349
+ function LogoutAction() {
350
+ global $wp_version;
351
+
352
+ if ($wp_version >= '2.7')
353
+ check_admin_referer('log-out');
354
+ wp_logout();
355
+
356
+ $this->redirect_to = site_url('wp-login.php?loggedout=true', 'login');
357
+ if ( isset( $_REQUEST['redirect_to'] ) )
358
+ $this->redirect_to = $_REQUEST['redirect_to'];
359
+
360
+ wp_safe_redirect($this->redirect_to);
361
+ exit();
362
+ }
363
+
364
+ function RetrievePasswordAction() {
365
+ if ( isset($_POST['lostpassword-submit']) ) {
366
+ $this->errors = $this->RetrievePassword();
367
+ if ( !is_wp_error($this->errors) ) {
368
+ $this->redirect_to = ( isset($this->instance) ) ? $this->GuessURL(array('instance' => $this->instance, 'checkemail' => 'confirm')) : site_url('wp-login.php?instance='.$this->instance.'&checkemail=confirm', 'login');
369
+ wp_redirect($this->redirect_to);
370
+ exit();
371
+ }
372
+ }
373
+
374
+ if ( isset($_GET['error']) && 'invalidkey' == $_GET['error'] )
375
+ $this->errors->add('invalidkey', __('Sorry, that key does not appear to be valid.'));
376
+ }
377
+
378
+ function ResetPassAction() {
379
+ $this->errors = $this->ResetPassword($_GET['key'], $_GET['login']);
380
+
381
+ if ( ! is_wp_error($this->errors) ) {
382
+ $this->redirect_to = ( isset($this->instance) ) ? $this->GuessURL(array('checkemail' => 'newpass')) : site_url('wp-login.php?checkemail=newpass', 'login');
383
+ wp_redirect($this->redirect_to);
384
+ exit();
385
+ }
386
+
387
+ $this->redirect_to = ( isset($this->instance) ) ? $this->GuessURL(array('action' => 'lostpassword', 'error' => 'invalidkey')) : site_url('wp-login.php?action=lostpassword&error=invalidkey', 'login');
388
+ wp_redirect($this->redirect_to);
389
+ exit();
390
+ }
391
+
392
+ function RegisterAction() {
393
+ if ( !get_option('users_can_register') ) {
394
+ $this->redirect_to = ( isset($this->instance) ) ? $this->GuessURL(array('registration' => 'disabled')) : site_url('wp-login.php?registration=disabled', 'login');
395
+ wp_redirect($this->redirect_to);
396
+ exit();
397
+ }
398
+
399
+ if ( isset($_POST['register-submit']) ) {
400
+ require_once (ABSPATH . WPINC . '/registration.php');
401
+
402
+ $user_login = $_POST['user_login'];
403
+ $user_email = $_POST['user_email'];
404
+ $this->errors = $this->RegisterNewUser($user_login, $user_email);
405
+
406
+ if ( !is_wp_error($this->errors) ) {
407
+ $this->redirect_to = ( isset($this->instance) ) ? $this->GuessURL(array('checkemail' => 'registered')) : site_url('wp-login.php?checkemail=registered', 'login');
408
+ wp_redirect($this->redirect_to);
409
+ exit();
410
+ }
411
+ }
412
+ }
413
+
414
+ function LoginAction() {
415
+ $this->secure_cookie = '';
416
+
417
+ // If the user wants ssl but the session is not ssl, force a secure cookie.
418
+ if ( !empty($_POST['log']) && !force_ssl_admin() ) {
419
+ $user_name = sanitize_user($_POST['log']);
420
+ if ( $user = get_userdatabylogin($user_name) ) {
421
+ if ( get_user_option('use_ssl', $user->ID) ) {
422
+ $this->secure_cookie = true;
423
+ force_ssl_admin(true);
424
+ }
425
+ }
426
+ }
427
+ /*
428
+ if ( !empty( $_REQUEST['redirect_to'] ) ) {
429
+ $this->redirect_to = $_REQUEST['redirect_to'];
430
+ // Redirect to https if user wants ssl
431
+ if ( $this->secure_cookie && false !== strpos($this->redirect_to, 'wp-admin') )
432
+ $this->redirect_to = preg_replace('|^http://|', 'https://', $this->redirect_to);
433
+ } else {
434
+ $this->redirect_to = admin_url();
435
+ }
436
+ */
437
+ if ( !$this->secure_cookie && is_ssl() && force_ssl_login() && !force_ssl_admin() )
438
+ $this->secure_cookie = false;
439
+
440
+ if ( isset($_POST['login-submit']) ) {
441
+ $user = wp_signon('', $this->secure_cookie);
442
+
443
+ $this->redirect_to = apply_filters('login_redirect', $this->redirect_to, isset( $_REQUEST['redirect_to'] ) ? $_REQUEST['redirect_to'] : '', $user);
444
+
445
+ if ( !is_wp_error($user) ) {
446
+ // If the user can't edit posts, send them to their profile.
447
+ if ( !$user->has_cap('edit_posts') && ( empty( $this->redirect_to ) || $this->redirect_to == 'wp-admin/' || $this->redirect_to == admin_url() ) )
448
+ $this->redirect_to = admin_url('profile.php');
449
+ wp_safe_redirect($this->redirect_to);
450
+ exit();
451
+ }
452
+
453
+ $this->errors = $user;
454
+
455
+ }
456
+
457
+ }
458
+
459
+ function ForceSSL() {
460
+ if ( force_ssl_admin() && !is_ssl() ) {
461
+ if ( 0 === strpos($_SERVER['REQUEST_URI'], 'http') ) {
462
+ wp_redirect(preg_replace('|^http://|', 'https://', $_SERVER['REQUEST_URI']));
463
+ exit();
464
+ } else {
465
+ wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
466
+ exit();
467
+ }
468
+ }
469
+ }
470
+
471
+ function SetTestCookie() {
472
+ //Set a cookie now to see if they are supported by the browser.
473
+ setcookie(TEST_COOKIE, 'WP Cookie check', 0, COOKIEPATH, COOKIE_DOMAIN);
474
+ if ( SITECOOKIEPATH != COOKIEPATH )
475
+ setcookie(TEST_COOKIE, 'WP Cookie check', 0, SITECOOKIEPATH, COOKIE_DOMAIN);
476
+ }
477
+
478
+ function HandleRelocate() {
479
+ if ( defined('RELOCATE') ) { // Move flag is set
480
+ if ( isset( $_SERVER['PATH_INFO'] ) && ($_SERVER['PATH_INFO'] != $_SERVER['PHP_SELF']) )
481
+ $_SERVER['PHP_SELF'] = str_replace( $_SERVER['PATH_INFO'], '', $_SERVER['PHP_SELF'] );
482
+
483
+ $schema = ( isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on' ) ? 'https://' : 'http://';
484
+ if ( dirname($schema . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']) != get_option('siteurl') )
485
+ update_option('siteurl', dirname($schema . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']) );
486
+ }
487
+ }
488
+
489
+ function GuessURL($args = array()) {
490
+ /*
491
+ $url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://';
492
+
493
+ if ($_SERVER["SERVER_PORT"] != "80") {
494
+ $url .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
495
+ } else {
496
+ $url .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
497
+ }
498
+ */
499
+ $keys = array('action', 'checkemail', 'error', 'loggedout', 'registered', 'redirect_to', 'updated', 'key');
500
+ $url = remove_query_arg($keys);
501
+
502
+ if (!empty($args))
503
+ $url = add_query_arg($args, $url);
504
+
505
+ return $url;
506
+ }
507
+
508
+ function RetrievePassword() {
509
+ global $wpdb;
510
+
511
+ $errors = new WP_Error();
512
+
513
+ if ( empty( $_POST['user_login'] ) && empty( $_POST['user_email'] ) )
514
+ $errors->add('empty_username', __('<strong>ERROR</strong>: Enter a username or e-mail address.'));
515
+
516
+ if ( strpos($_POST['user_login'], '@') ) {
517
+ $user_data = get_user_by_email(trim($_POST['user_login']));
518
+ if ( empty($user_data) )
519
+ $errors->add('invalid_email', __('<strong>ERROR</strong>: There is no user registered with that email address.'));
520
+ } else {
521
+ $login = trim($_POST['user_login']);
522
+ $user_data = get_userdatabylogin($login);
523
+ }
524
+
525
+ do_action('lostpassword_post');
526
+
527
+ if ( $errors->get_error_code() )
528
+ return $errors;
529
+
530
+ if ( !$user_data ) {
531
+ $errors->add('invalidcombo', __('<strong>ERROR</strong>: Invalid username or e-mail.'));
532
+ return $errors;
533
+ }
534
+
535
+ // redefining user_login ensures we return the right case in the email
536
+ $user_login = $user_data->user_login;
537
+ $user_email = $user_data->user_email;
538
+
539
+ do_action('retreive_password', $user_login); // Misspelled and deprecated
540
+ do_action('retrieve_password', $user_login);
541
+
542
+ $allow = apply_filters('allow_password_reset', true, $user_data->ID);
543
+
544
+ if ( ! $allow )
545
+ return new WP_Error('no_password_reset', __('Password reset is not allowed for this user'));
546
+ else if ( is_wp_error($allow) )
547
+ return $allow;
548
+
549
+ $key = $wpdb->get_var($wpdb->prepare("SELECT user_activation_key FROM $wpdb->users WHERE user_login = %s", $user_login));
550
+ if ( empty($key) ) {
551
+ // Generate something random for a key...
552
+ $key = wp_generate_password(20, false);
553
+ do_action('retrieve_password_key', $user_login, $key);
554
+ // Now insert the new md5 key into the db
555
+ $wpdb->update($wpdb->users, array('user_activation_key' => $key), array('user_login' => $user_login));
556
+ }
557
+ $message = __('Someone has asked to reset the password for the following site and username.') . "\r\n\r\n";
558
+ $message .= get_option('siteurl') . "\r\n\r\n";
559
+ $message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
560
+ $message .= __('To reset your password visit the following address, otherwise just ignore this email and nothing will happen.') . "\r\n\r\n";
561
+ $message .= site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . "\r\n";
562
+
563
+ $title = sprintf(__('[%s] Password Reset'), get_option('blogname'));
564
+
565
+ $title = apply_filters('retrieve_password_title', $title, $user_data);
566
+ $message = apply_filters('retrieve_password_message', $message, $key, $user_data);
567
+
568
+ if ( $message && !wp_mail($user_email, $title, $message) )
569
+ die('<p>' . __('The e-mail could not be sent.') . "<br />\n" . __('Possible reason: your host may have disabled the mail() function...') . '</p>');
570
+
571
+ return true;
572
+ }
573
+
574
+ function ResetPassword($key, $login) {
575
+ global $wpdb;
576
+
577
+ $key = preg_replace('/[^a-z0-9]/i', '', $key);
578
+
579
+ if ( empty( $key ) || !is_string( $key ) )
580
+ return new WP_Error('invalid_key', __('Invalid key'));
581
+
582
+ if ( empty($login) || !is_string($login) )
583
+ return new WP_Error('invalid_key', __('Invalid key'));
584
+
585
+ $user = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->users WHERE user_activation_key = %s AND user_login = %s", $key, $login));
586
+ if ( empty( $user ) )
587
+ return new WP_Error('invalid_key', __('Invalid key'));
588
+
589
+ // Generate something random for a password...
590
+ $new_pass = wp_generate_password();
591
+
592
+ do_action('password_reset', $user, $new_pass);
593
+
594
+ wp_set_password($new_pass, $user->ID);
595
+ update_usermeta($user->ID, 'default_password_nag', true); //Set up the Password change nag.
596
+ $message = sprintf(__('Username: %s'), $user->user_login) . "\r\n";
597
+ $message .= sprintf(__('Password: %s'), $new_pass) . "\r\n";
598
+ $message .= site_url('wp-login.php', 'login') . "\r\n";
599
+
600
+ $title = sprintf(__('[%s] Your new password'), get_option('blogname'));
601
+
602
+ $title = apply_filters('password_reset_title', $title, $user);
603
+ $message = apply_filters('password_reset_message', $message, $new_pass, $user);
604
+
605
+ if ( $message && !wp_mail($user->user_email, $title, $message) )
606
+ die('<p>' . __('The e-mail could not be sent.') . "<br />\n" . __('Possible reason: your host may have disabled the mail() function...') . '</p>');
607
+
608
+ if ( !$this->options['emails']['resetpassword']['admin-disable'] )
609
+ wp_password_change_notification($user);
610
+
611
+ return true;
612
+ }
613
+
614
+ function RegisterNewUser($user_login, $user_email) {
615
+ $errors = new WP_Error();
616
+
617
+ $user_login = sanitize_user( $user_login );
618
+ $user_email = apply_filters( 'user_registration_email', $user_email );
619
+
620
+ // Check the username
621
+ if ( $user_login == '' )
622
+ $errors->add('empty_username', __('<strong>ERROR</strong>: Please enter a username.'));
623
+ elseif ( !validate_username( $user_login ) ) {
624
+ $errors->add('invalid_username', __('<strong>ERROR</strong>: This username is invalid. Please enter a valid username.'));
625
+ $user_login = '';
626
+ } elseif ( username_exists( $user_login ) )
627
+ $errors->add('username_exists', __('<strong>ERROR</strong>: This username is already registered, please choose another one.'));
628
+
629
+ // Check the e-mail address
630
+ if ($user_email == '') {
631
+ $errors->add('empty_email', __('<strong>ERROR</strong>: Please type your e-mail address.'));
632
+ } elseif ( !is_email( $user_email ) ) {
633
+ $errors->add('invalid_email', __('<strong>ERROR</strong>: The email address isn&#8217;t correct.'));
634
+ $user_email = '';
635
+ } elseif ( email_exists( $user_email ) )
636
+ $errors->add('email_exists', __('<strong>ERROR</strong>: This email is already registered, please choose another one.'));
637
+
638
+ do_action('register_post', $user_login, $user_email, $errors);
639
+
640
+ $errors = apply_filters( 'registration_errors', $errors );
641
+
642
+ if ( $errors->get_error_code() )
643
+ return $errors;
644
+
645
+ $user_pass = wp_generate_password();
646
+ $user_id = wp_create_user( $user_login, $user_pass, $user_email );
647
+ if ( !$user_id ) {
648
+ $errors->add('registerfail', sprintf(__('<strong>ERROR</strong>: Couldn&#8217;t register you... please contact the <a href="mailto:%s">webmaster</a> !'), get_option('admin_email')));
649
+ return $errors;
650
+ }
651
+
652
+ wp_new_user_notification($user_id, $user_pass);
653
+
654
+ return $user_id;
655
+ }
656
+
657
+ }
658
+ }
659
+
660
+ ?>
css/theme-my-login-admin.css.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $version = ( isset($_GET['ver']) ) ? $_GET['ver'] : '';
4
+
5
+ header("Content-type: text/css");
6
+
7
+ ?>
8
+
9
+ #container { margin: 20px 0 5px 0; font-size: 12px; }
10
+
11
+ /*
12
+ #container ul { list-style: none; position: relative; }
13
+ #container li { position: relative; display: inline; }
14
+ #container li a { float: left; text-decoration: none; padding: .5em 1em; }
15
+
16
+ #container h3 { clear: both; }
17
+ */
18
+
19
+ #container table input.regular-text { width: 25em; }
20
+ #container table input.extended-text { width: 40em; }
21
+ #container table input.full-text { width: 99%; }
22
+ #container table input.small-text { width: 50px; }
23
+
24
+ <?php if ( version_compare($version, '2.8', '>=') ) : ?>
25
+
26
+ <?php elseif ( version_compare($version, '2.7', '>=') ) : ?>
27
+
28
+ <?php elseif ( version_compare($version, '2.5', '>=') ) : ?>
29
+
30
+ .tabs {
31
+ height: auto;
32
+ max-height: auto;
33
+ }
34
+
35
+ .tabs .tabs-div {
36
+ height: auto;
37
+ max-height: auto;
38
+ margin-left: 0;
39
+ }
40
+
41
+ .tabs .tabs-div .tabs-div {
42
+ height: auto;
43
+ max-height: auto;
44
+ overflow: visible;
45
+ }
46
+
47
+ <?php endif; ?>
theme-my-login.css → css/theme-my-login.css RENAMED
@@ -1,14 +1,17 @@
1
- #login {
2
  padding: 5px;
3
  }
4
 
5
- #login .error {
6
  padding: 5px;
7
  border: 1px solid #ff0000;
8
  background-color: #f08080;
9
  }
 
 
 
10
 
11
- #login .message {
12
  padding: 5px;
13
  border: 1px solid #ffff00;
14
  background-color: #ffffe0;
1
+ .login {
2
  padding: 5px;
3
  }
4
 
5
+ .login p.error {
6
  padding: 5px;
7
  border: 1px solid #ff0000;
8
  background-color: #f08080;
9
  }
10
+ .login p.error a:link, a:hover, a:visited, a:active {
11
+ color: #333333;
12
+ }
13
 
14
+ .login p.message {
15
  padding: 5px;
16
  border: 1px solid #ffff00;
17
  background-color: #ffffe0;
css/wp-colors-classic/images/ui-bg_flat_0_aaaaaa_40x100.png ADDED
Binary file
css/wp-colors-classic/images/ui-bg_flat_75_ffffff_40x100.png ADDED
Binary file
css/wp-colors-classic/images/ui-bg_glass_55_fbf9ee_1x400.png ADDED
Binary file
css/wp-colors-classic/images/ui-bg_glass_65_ffffff_1x400.png ADDED
Binary file
css/wp-colors-classic/images/ui-bg_glass_75_eaf3fa_1x400.png ADDED
Binary file
css/wp-colors-classic/images/ui-bg_glass_95_fef1ec_1x400.png ADDED
Binary file
css/wp-colors-classic/images/ui-bg_highlight-soft_75_bbd8e7_1x100.png ADDED
Binary file
css/wp-colors-classic/images/ui-icons_222222_256x240.png ADDED
Binary file
css/wp-colors-classic/images/ui-icons_2e83ff_256x240.png ADDED
Binary file
css/wp-colors-classic/images/ui-icons_454545_256x240.png ADDED
Binary file
css/wp-colors-classic/images/ui-icons_888888_256x240.png ADDED
Binary file
css/wp-colors-classic/images/ui-icons_cd0a0a_256x240.png ADDED
Binary file
css/wp-colors-classic/wp-colors-classic.css ADDED
@@ -0,0 +1,428 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jQuery UI CSS Framework
3
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
4
+ * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
5
+ */
6
+
7
+ /* Layout helpers
8
+ ----------------------------------*/
9
+ .ui-helper-hidden { display: none; }
10
+ .ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
11
+ .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
12
+ .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
13
+ .ui-helper-clearfix { display: inline-block; }
14
+ /* required comment for clearfix to work in Opera \*/
15
+ * html .ui-helper-clearfix { height:1%; }
16
+ .ui-helper-clearfix { display:block; }
17
+ /* end clearfix */
18
+ .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
19
+
20
+
21
+ /* Interaction Cues
22
+ ----------------------------------*/
23
+ .ui-state-disabled { cursor: default !important; }
24
+
25
+
26
+ /* Icons
27
+ ----------------------------------*/
28
+
29
+ /* states and images */
30
+ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
31
+
32
+
33
+ /* Misc visuals
34
+ ----------------------------------*/
35
+
36
+ /* Overlays */
37
+ .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
38
+
39
+
40
+
41
+ /*
42
+ * jQuery UI CSS Framework
43
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
44
+ * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
45
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=bbd8e7&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=eaf3fa&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=1c6280&iconColorDefault=888888&bgColorHover=eaf3fa&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=d54e21&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
46
+ */
47
+
48
+
49
+ /* Component containers
50
+ ----------------------------------*/
51
+ .ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
52
+ .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
53
+ .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
54
+ .ui-widget-content a { color: #222222; }
55
+ .ui-widget-header { border: 1px solid #aaaaaa; background: #bbd8e7 url(images/ui-bg_highlight-soft_75_bbd8e7_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
56
+ .ui-widget-header a { color: #222222; }
57
+
58
+ /* Interaction states
59
+ ----------------------------------*/
60
+ .ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #d3d3d3; background: #eaf3fa url(images/ui-bg_glass_75_eaf3fa_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #1c6280; outline: none; }
61
+ .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c6280; text-decoration: none; outline: none; }
62
+ .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #999999; background: #eaf3fa url(images/ui-bg_glass_75_eaf3fa_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #d54e21; outline: none; }
63
+ .ui-state-hover a, .ui-state-hover a:hover { color: #d54e21; text-decoration: none; outline: none; }
64
+ .ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; outline: none; }
65
+ .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; outline: none; text-decoration: none; }
66
+
67
+ /* Interaction Cues
68
+ ----------------------------------*/
69
+ .ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
70
+ .ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636; }
71
+ .ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
72
+ .ui-state-error a, .ui-widget-content .ui-state-error a { color: #cd0a0a; }
73
+ .ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #cd0a0a; }
74
+ .ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
75
+ .ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; }
76
+ .ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
77
+
78
+ /* Icons
79
+ ----------------------------------*/
80
+
81
+ /* states and images */
82
+ .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
83
+ .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
84
+ .ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
85
+ .ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
86
+ .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
87
+ .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
88
+ .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
89
+ .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
90
+
91
+ /* positioning */
92
+ .ui-icon-carat-1-n { background-position: 0 0; }
93
+ .ui-icon-carat-1-ne { background-position: -16px 0; }
94
+ .ui-icon-carat-1-e { background-position: -32px 0; }
95
+ .ui-icon-carat-1-se { background-position: -48px 0; }
96
+ .ui-icon-carat-1-s { background-position: -64px 0; }
97
+ .ui-icon-carat-1-sw { background-position: -80px 0; }
98
+ .ui-icon-carat-1-w { background-position: -96px 0; }
99
+ .ui-icon-carat-1-nw { background-position: -112px 0; }
100
+ .ui-icon-carat-2-n-s { background-position: -128px 0; }
101
+ .ui-icon-carat-2-e-w { background-position: -144px 0; }
102
+ .ui-icon-triangle-1-n { background-position: 0 -16px; }
103
+ .ui-icon-triangle-1-ne { background-position: -16px -16px; }
104
+ .ui-icon-triangle-1-e { background-position: -32px -16px; }
105
+ .ui-icon-triangle-1-se { background-position: -48px -16px; }
106
+ .ui-icon-triangle-1-s { background-position: -64px -16px; }
107
+ .ui-icon-triangle-1-sw { background-position: -80px -16px; }
108
+ .ui-icon-triangle-1-w { background-position: -96px -16px; }
109
+ .ui-icon-triangle-1-nw { background-position: -112px -16px; }
110
+ .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
111
+ .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
112
+ .ui-icon-arrow-1-n { background-position: 0 -32px; }
113
+ .ui-icon-arrow-1-ne { background-position: -16px -32px; }
114
+ .ui-icon-arrow-1-e { background-position: -32px -32px; }
115
+ .ui-icon-arrow-1-se { background-position: -48px -32px; }
116
+ .ui-icon-arrow-1-s { background-position: -64px -32px; }
117
+ .ui-icon-arrow-1-sw { background-position: -80px -32px; }
118
+ .ui-icon-arrow-1-w { background-position: -96px -32px; }
119
+ .ui-icon-arrow-1-nw { background-position: -112px -32px; }
120
+ .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
121
+ .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
122
+ .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
123
+ .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
124
+ .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
125
+ .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
126
+ .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
127
+ .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
128
+ .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
129
+ .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
130
+ .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
131
+ .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
132
+ .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
133
+ .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
134
+ .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
135
+ .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
136
+ .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
137
+ .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
138
+ .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
139
+ .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
140
+ .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
141
+ .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
142
+ .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
143
+ .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
144
+ .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
145
+ .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
146
+ .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
147
+ .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
148
+ .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
149
+ .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
150
+ .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
151
+ .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
152
+ .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
153
+ .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
154
+ .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
155
+ .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
156
+ .ui-icon-arrow-4 { background-position: 0 -80px; }
157
+ .ui-icon-arrow-4-diag { background-position: -16px -80px; }
158
+ .ui-icon-extlink { background-position: -32px -80px; }
159
+ .ui-icon-newwin { background-position: -48px -80px; }
160
+ .ui-icon-refresh { background-position: -64px -80px; }
161
+ .ui-icon-shuffle { background-position: -80px -80px; }
162
+ .ui-icon-transfer-e-w { background-position: -96px -80px; }
163
+ .ui-icon-transferthick-e-w { background-position: -112px -80px; }
164
+ .ui-icon-folder-collapsed { background-position: 0 -96px; }
165
+ .ui-icon-folder-open { background-position: -16px -96px; }
166
+ .ui-icon-document { background-position: -32px -96px; }
167
+ .ui-icon-document-b { background-position: -48px -96px; }
168
+ .ui-icon-note { background-position: -64px -96px; }
169
+ .ui-icon-mail-closed { background-position: -80px -96px; }
170
+ .ui-icon-mail-open { background-position: -96px -96px; }
171
+ .ui-icon-suitcase { background-position: -112px -96px; }
172
+ .ui-icon-comment { background-position: -128px -96px; }
173
+ .ui-icon-person { background-position: -144px -96px; }
174
+ .ui-icon-print { background-position: -160px -96px; }
175
+ .ui-icon-trash { background-position: -176px -96px; }
176
+ .ui-icon-locked { background-position: -192px -96px; }
177
+ .ui-icon-unlocked { background-position: -208px -96px; }
178
+ .ui-icon-bookmark { background-position: -224px -96px; }
179
+ .ui-icon-tag { background-position: -240px -96px; }
180
+ .ui-icon-home { background-position: 0 -112px; }
181
+ .ui-icon-flag { background-position: -16px -112px; }
182
+ .ui-icon-calendar { background-position: -32px -112px; }
183
+ .ui-icon-cart { background-position: -48px -112px; }
184
+ .ui-icon-pencil { background-position: -64px -112px; }
185
+ .ui-icon-clock { background-position: -80px -112px; }
186
+ .ui-icon-disk { background-position: -96px -112px; }
187
+ .ui-icon-calculator { background-position: -112px -112px; }
188
+ .ui-icon-zoomin { background-position: -128px -112px; }
189
+ .ui-icon-zoomout { background-position: -144px -112px; }
190
+ .ui-icon-search { background-position: -160px -112px; }
191
+ .ui-icon-wrench { background-position: -176px -112px; }
192
+ .ui-icon-gear { background-position: -192px -112px; }
193
+ .ui-icon-heart { background-position: -208px -112px; }
194
+ .ui-icon-star { background-position: -224px -112px; }
195
+ .ui-icon-link { background-position: -240px -112px; }
196
+ .ui-icon-cancel { background-position: 0 -128px; }
197
+ .ui-icon-plus { background-position: -16px -128px; }
198
+ .ui-icon-plusthick { background-position: -32px -128px; }
199
+ .ui-icon-minus { background-position: -48px -128px; }
200
+ .ui-icon-minusthick { background-position: -64px -128px; }
201
+ .ui-icon-close { background-position: -80px -128px; }
202
+ .ui-icon-closethick { background-position: -96px -128px; }
203
+ .ui-icon-key { background-position: -112px -128px; }
204
+ .ui-icon-lightbulb { background-position: -128px -128px; }
205
+ .ui-icon-scissors { background-position: -144px -128px; }
206
+ .ui-icon-clipboard { background-position: -160px -128px; }
207
+ .ui-icon-copy { background-position: -176px -128px; }
208
+ .ui-icon-contact { background-position: -192px -128px; }
209
+ .ui-icon-image { background-position: -208px -128px; }
210
+ .ui-icon-video { background-position: -224px -128px; }
211
+ .ui-icon-script { background-position: -240px -128px; }
212
+ .ui-icon-alert { background-position: 0 -144px; }
213
+ .ui-icon-info { background-position: -16px -144px; }
214
+ .ui-icon-notice { background-position: -32px -144px; }
215
+ .ui-icon-help { background-position: -48px -144px; }
216
+ .ui-icon-check { background-position: -64px -144px; }
217
+ .ui-icon-bullet { background-position: -80px -144px; }
218
+ .ui-icon-radio-off { background-position: -96px -144px; }
219
+ .ui-icon-radio-on { background-position: -112px -144px; }
220
+ .ui-icon-pin-w { background-position: -128px -144px; }
221
+ .ui-icon-pin-s { background-position: -144px -144px; }
222
+ .ui-icon-play { background-position: 0 -160px; }
223
+ .ui-icon-pause { background-position: -16px -160px; }
224
+ .ui-icon-seek-next { background-position: -32px -160px; }
225
+ .ui-icon-seek-prev { background-position: -48px -160px; }
226
+ .ui-icon-seek-end { background-position: -64px -160px; }
227
+ .ui-icon-seek-first { background-position: -80px -160px; }
228
+ .ui-icon-stop { background-position: -96px -160px; }
229
+ .ui-icon-eject { background-position: -112px -160px; }
230
+ .ui-icon-volume-off { background-position: -128px -160px; }
231
+ .ui-icon-volume-on { background-position: -144px -160px; }
232
+ .ui-icon-power { background-position: 0 -176px; }
233
+ .ui-icon-signal-diag { background-position: -16px -176px; }
234
+ .ui-icon-signal { background-position: -32px -176px; }
235
+ .ui-icon-battery-0 { background-position: -48px -176px; }
236
+ .ui-icon-battery-1 { background-position: -64px -176px; }
237
+ .ui-icon-battery-2 { background-position: -80px -176px; }
238
+ .ui-icon-battery-3 { background-position: -96px -176px; }
239
+ .ui-icon-circle-plus { background-position: 0 -192px; }
240
+ .ui-icon-circle-minus { background-position: -16px -192px; }
241
+ .ui-icon-circle-close { background-position: -32px -192px; }
242
+ .ui-icon-circle-triangle-e { background-position: -48px -192px; }
243
+ .ui-icon-circle-triangle-s { background-position: -64px -192px; }
244
+ .ui-icon-circle-triangle-w { background-position: -80px -192px; }
245
+ .ui-icon-circle-triangle-n { background-position: -96px -192px; }
246
+ .ui-icon-circle-arrow-e { background-position: -112px -192px; }
247
+ .ui-icon-circle-arrow-s { background-position: -128px -192px; }
248
+ .ui-icon-circle-arrow-w { background-position: -144px -192px; }
249
+ .ui-icon-circle-arrow-n { background-position: -160px -192px; }
250
+ .ui-icon-circle-zoomin { background-position: -176px -192px; }
251
+ .ui-icon-circle-zoomout { background-position: -192px -192px; }
252
+ .ui-icon-circle-check { background-position: -208px -192px; }
253
+ .ui-icon-circlesmall-plus { background-position: 0 -208px; }
254
+ .ui-icon-circlesmall-minus { background-position: -16px -208px; }
255
+ .ui-icon-circlesmall-close { background-position: -32px -208px; }
256
+ .ui-icon-squaresmall-plus { background-position: -48px -208px; }
257
+ .ui-icon-squaresmall-minus { background-position: -64px -208px; }
258
+ .ui-icon-squaresmall-close { background-position: -80px -208px; }
259
+ .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
260
+ .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
261
+ .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
262
+ .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
263
+ .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
264
+ .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
265
+
266
+
267
+ /* Misc visuals
268
+ ----------------------------------*/
269
+
270
+ /* Corner radius */
271
+ .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; }
272
+ .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
273
+ .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
274
+ .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
275
+ .ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
276
+ .ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
277
+ .ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
278
+ .ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
279
+ .ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; }
280
+
281
+ /* Overlays */
282
+ .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
283
+ .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; }/* Accordion
284
+ ----------------------------------*/
285
+ .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
286
+ .ui-accordion .ui-accordion-li-fix { display: inline; }
287
+ .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
288
+ .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; }
289
+ .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
290
+ .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; }
291
+ .ui-accordion .ui-accordion-content-active { display: block; }/* Datepicker
292
+ ----------------------------------*/
293
+ .ui-datepicker { width: 17em; padding: .2em .2em 0; }
294
+ .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
295
+ .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
296
+ .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
297
+ .ui-datepicker .ui-datepicker-prev { left:2px; }
298
+ .ui-datepicker .ui-datepicker-next { right:2px; }
299
+ .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
300
+ .ui-datepicker .ui-datepicker-next-hover { right:1px; }
301
+ .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
302
+ .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
303
+ .ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; }
304
+ .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
305
+ .ui-datepicker select.ui-datepicker-month,
306
+ .ui-datepicker select.ui-datepicker-year { width: 49%;}
307
+ .ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; }
308
+ .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
309
+ .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
310
+ .ui-datepicker td { border: 0; padding: 1px; }
311
+ .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
312
+ .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
313
+ .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
314
+ .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
315
+
316
+ /* with multiple calendars */
317
+ .ui-datepicker.ui-datepicker-multi { width:auto; }
318
+ .ui-datepicker-multi .ui-datepicker-group { float:left; }
319
+ .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
320
+ .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
321
+ .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
322
+ .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
323
+ .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
324
+ .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
325
+ .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
326
+ .ui-datepicker-row-break { clear:both; width:100%; }
327
+
328
+ /* RTL support */
329
+ .ui-datepicker-rtl { direction: rtl; }
330
+ .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
331
+ .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
332
+ .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
333
+ .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
334
+ .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
335
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
336
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
337
+ .ui-datepicker-rtl .ui-datepicker-group { float:right; }
338
+ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
339
+ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
340
+
341
+ /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
342
+ .ui-datepicker-cover {
343
+ display: none; /*sorry for IE5*/
344
+ display/**/: block; /*sorry for IE5*/
345
+ position: absolute; /*must have*/
346
+ z-index: -1; /*must have*/
347
+ filter: mask(); /*must have*/
348
+ top: -4px; /*must have*/
349
+ left: -4px; /*must have*/
350
+ width: 200px; /*must have*/
351
+ height: 200px; /*must have*/
352
+ }/* Dialog
353
+ ----------------------------------*/
354
+ .ui-dialog { position: relative; padding: .2em; width: 300px; }
355
+ .ui-dialog .ui-dialog-titlebar { padding: .5em .3em .3em 1em; position: relative; }
356
+ .ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; }
357
+ .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
358
+ .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
359
+ .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
360
+ .ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
361
+ .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
362
+ .ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; }
363
+ .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
364
+ .ui-draggable .ui-dialog-titlebar { cursor: move; }
365
+ /* Progressbar
366
+ ----------------------------------*/
367
+ .ui-progressbar { height:2em; text-align: left; }
368
+ .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Resizable
369
+ ----------------------------------*/
370
+ .ui-resizable { position: relative;}
371
+ .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
372
+ .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
373
+ .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; }
374
+ .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; }
375
+ .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; }
376
+ .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; }
377
+ .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
378
+ .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
379
+ .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
380
+ .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Slider
381
+ ----------------------------------*/
382
+ .ui-slider { position: relative; text-align: left; }
383
+ .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
384
+ .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; }
385
+
386
+ .ui-slider-horizontal { height: .8em; }
387
+ .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
388
+ .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
389
+ .ui-slider-horizontal .ui-slider-range-min { left: 0; }
390
+ .ui-slider-horizontal .ui-slider-range-max { right: 0; }
391
+
392
+ .ui-slider-vertical { width: .8em; height: 100px; }
393
+ .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
394
+ .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
395
+ .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
396
+ .ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs
397
+ ----------------------------------*/
398
+ .ui-tabs { padding: .2em; zoom: 1; }
399
+ .ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; }
400
+ .ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; }
401
+ .ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; }
402
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; font-weight: 700; }
403
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
404
+ .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
405
+ .ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; }
406
+ .ui-tabs .ui-tabs-hide { display: none !important; }
407
+
408
+ /* Sub tabs
409
+ ---------------------------------*/
410
+ .ui-widget-content .ui-widget-content .ui-widget-header,
411
+ .ui-widget-content .ui-widget-content .ui-state-default,
412
+ .ui-widget-content .ui-widget-content .ui-state-hover,
413
+ .ui-widget-content .ui-widget-content .ui-state-focus,
414
+ .ui-widget-content .ui-widget-content .ui-state-active { border: 0; background: none; }
415
+
416
+ .ui-widget-content .ui-widget-content .ui-state-default a,
417
+ .ui-widget-content .ui-widget-content .ui-state-default a:link,
418
+ .ui-widget-content .ui-widget-content .ui-state-default a:visited { color: #1c6280; text-decoration: none; outline: none; }
419
+ .ui-widget-content .ui-widget-content .ui-state-hover a,
420
+ .ui-widget-content .ui-widget-content .ui-state-hover a:hover { color: #d54e21; text-decoration: none; outline: none; }
421
+ .ui-widget-content .ui-widget-content .ui-state-active a,
422
+ .ui-widget-content .ui-widget-content .ui-state-active a:link,
423
+ .ui-widget-content .ui-widget-content .ui-state-active a:visited { color: #212121; outline: none; text-decoration: none; }
424
+
425
+ .ui-tabs .ui-tabs-panel .ui-tabs-nav { list-style: none; position: relative; padding: 0; }
426
+ .ui-tabs .ui-tabs-panel .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; }
427
+ .ui-tabs .ui-tabs-panel .ui-tabs-nav li a { color: #FF0000; float: left; text-decoration: none; padding: .5em 1em .5em 0; }
428
+ .ui-tabs .ui-tabs-panel .ui-tabs-panel { padding: 0; display: block; border-width: 0; background: none; }
css/wp-colors-fresh/images/ui-bg_flat_0_aaaaaa_40x100.png ADDED
Binary file
css/wp-colors-fresh/images/ui-bg_flat_75_ffffff_40x100.png ADDED
Binary file
css/wp-colors-fresh/images/ui-bg_glass_55_fbf9ee_1x400.png ADDED
Binary file
css/wp-colors-fresh/images/ui-bg_glass_65_ffffff_1x400.png ADDED
Binary file
css/wp-colors-fresh/images/ui-bg_glass_75_f1f1f1_1x400.png ADDED
Binary file
css/wp-colors-fresh/images/ui-bg_glass_95_fef1ec_1x400.png ADDED
Binary file
css/wp-colors-fresh/images/ui-bg_highlight-soft_75_dfdfdf_1x100.png ADDED
Binary file
css/wp-colors-fresh/images/ui-icons_222222_256x240.png ADDED
Binary file
css/wp-colors-fresh/images/ui-icons_2e83ff_256x240.png ADDED
Binary file
css/wp-colors-fresh/images/ui-icons_454545_256x240.png ADDED
Binary file
css/wp-colors-fresh/images/ui-icons_888888_256x240.png ADDED
Binary file
css/wp-colors-fresh/images/ui-icons_cd0a0a_256x240.png ADDED
Binary file
css/wp-colors-fresh/wp-colors-fresh.css ADDED
@@ -0,0 +1,428 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jQuery UI CSS Framework
3
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
4
+ * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
5
+ */
6
+
7
+ /* Layout helpers
8
+ ----------------------------------*/
9
+ .ui-helper-hidden { display: none; }
10
+ .ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
11
+ .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
12
+ .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
13
+ .ui-helper-clearfix { display: inline-block; }
14
+ /* required comment for clearfix to work in Opera \*/
15
+ * html .ui-helper-clearfix { height:1%; }
16
+ .ui-helper-clearfix { display:block; }
17
+ /* end clearfix */
18
+ .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
19
+
20
+
21
+ /* Interaction Cues
22
+ ----------------------------------*/
23
+ .ui-state-disabled { cursor: default !important; }
24
+
25
+
26
+ /* Icons
27
+ ----------------------------------*/
28
+
29
+ /* states and images */
30
+ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
31
+
32
+
33
+ /* Misc visuals
34
+ ----------------------------------*/
35
+
36
+ /* Overlays */
37
+ .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
38
+
39
+
40
+
41
+ /*
42
+ * jQuery UI CSS Framework
43
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
44
+ * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
45
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=dfdfdf&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=f1f1f1&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=21759b&iconColorDefault=888888&bgColorHover=f1f1f1&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=d54e21&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
46
+ */
47
+
48
+
49
+ /* Component containers
50
+ ----------------------------------*/
51
+ .ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
52
+ .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
53
+ .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
54
+ .ui-widget-content a { color: #222222; }
55
+ .ui-widget-header { border: 1px solid #aaaaaa; background: #dfdfdf url(images/ui-bg_highlight-soft_75_dfdfdf_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
56
+ .ui-widget-header a { color: #222222; }
57
+
58
+ /* Interaction states
59
+ ----------------------------------*/
60
+ .ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #d3d3d3; background: #f1f1f1 url(images/ui-bg_glass_75_f1f1f1_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #21759b; outline: none; }
61
+ .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #21759b; text-decoration: none; outline: none; }
62
+ .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #999999; background: #f1f1f1 url(images/ui-bg_glass_75_f1f1f1_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #d54e21; outline: none; }
63
+ .ui-state-hover a, .ui-state-hover a:hover { color: #d54e21; text-decoration: none; outline: none; }
64
+ .ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; outline: none; }
65
+ .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; outline: none; text-decoration: none; }
66
+
67
+ /* Interaction Cues
68
+ ----------------------------------*/
69
+ .ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
70
+ .ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636; }
71
+ .ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
72
+ .ui-state-error a, .ui-widget-content .ui-state-error a { color: #cd0a0a; }
73
+ .ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #cd0a0a; }
74
+ .ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
75
+ .ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; }
76
+ .ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
77
+
78
+ /* Icons
79
+ ----------------------------------*/
80
+
81
+ /* states and images */
82
+ .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
83
+ .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
84
+ .ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
85
+ .ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
86
+ .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
87
+ .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
88
+ .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
89
+ .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
90
+
91
+ /* positioning */
92
+ .ui-icon-carat-1-n { background-position: 0 0; }
93
+ .ui-icon-carat-1-ne { background-position: -16px 0; }
94
+ .ui-icon-carat-1-e { background-position: -32px 0; }
95
+ .ui-icon-carat-1-se { background-position: -48px 0; }
96
+ .ui-icon-carat-1-s { background-position: -64px 0; }
97
+ .ui-icon-carat-1-sw { background-position: -80px 0; }
98
+ .ui-icon-carat-1-w { background-position: -96px 0; }
99
+ .ui-icon-carat-1-nw { background-position: -112px 0; }
100
+ .ui-icon-carat-2-n-s { background-position: -128px 0; }
101
+ .ui-icon-carat-2-e-w { background-position: -144px 0; }
102
+ .ui-icon-triangle-1-n { background-position: 0 -16px; }
103
+ .ui-icon-triangle-1-ne { background-position: -16px -16px; }
104
+ .ui-icon-triangle-1-e { background-position: -32px -16px; }
105
+ .ui-icon-triangle-1-se { background-position: -48px -16px; }
106
+ .ui-icon-triangle-1-s { background-position: -64px -16px; }
107
+ .ui-icon-triangle-1-sw { background-position: -80px -16px; }
108
+ .ui-icon-triangle-1-w { background-position: -96px -16px; }
109
+ .ui-icon-triangle-1-nw { background-position: -112px -16px; }
110
+ .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
111
+ .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
112
+ .ui-icon-arrow-1-n { background-position: 0 -32px; }
113
+ .ui-icon-arrow-1-ne { background-position: -16px -32px; }
114
+ .ui-icon-arrow-1-e { background-position: -32px -32px; }
115
+ .ui-icon-arrow-1-se { background-position: -48px -32px; }
116
+ .ui-icon-arrow-1-s { background-position: -64px -32px; }
117
+ .ui-icon-arrow-1-sw { background-position: -80px -32px; }
118
+ .ui-icon-arrow-1-w { background-position: -96px -32px; }
119
+ .ui-icon-arrow-1-nw { background-position: -112px -32px; }
120
+ .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
121
+ .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
122
+ .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
123
+ .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
124
+ .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
125
+ .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
126
+ .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
127
+ .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
128
+ .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
129
+ .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
130
+ .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
131
+ .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
132
+ .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
133
+ .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
134
+ .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
135
+ .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
136
+ .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
137
+ .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
138
+ .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
139
+ .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
140
+ .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
141
+ .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
142
+ .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
143
+ .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
144
+ .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
145
+ .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
146
+ .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
147
+ .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
148
+ .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
149
+ .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
150
+ .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
151
+ .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
152
+ .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
153
+ .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
154
+ .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
155
+ .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
156
+ .ui-icon-arrow-4 { background-position: 0 -80px; }
157
+ .ui-icon-arrow-4-diag { background-position: -16px -80px; }
158
+ .ui-icon-extlink { background-position: -32px -80px; }
159
+ .ui-icon-newwin { background-position: -48px -80px; }
160
+ .ui-icon-refresh { background-position: -64px -80px; }
161
+ .ui-icon-shuffle { background-position: -80px -80px; }
162
+ .ui-icon-transfer-e-w { background-position: -96px -80px; }
163
+ .ui-icon-transferthick-e-w { background-position: -112px -80px; }
164
+ .ui-icon-folder-collapsed { background-position: 0 -96px; }
165
+ .ui-icon-folder-open { background-position: -16px -96px; }
166
+ .ui-icon-document { background-position: -32px -96px; }
167
+ .ui-icon-document-b { background-position: -48px -96px; }
168
+ .ui-icon-note { background-position: -64px -96px; }
169
+ .ui-icon-mail-closed { background-position: -80px -96px; }
170
+ .ui-icon-mail-open { background-position: -96px -96px; }
171
+ .ui-icon-suitcase { background-position: -112px -96px; }
172
+ .ui-icon-comment { background-position: -128px -96px; }
173
+ .ui-icon-person { background-position: -144px -96px; }
174
+ .ui-icon-print { background-position: -160px -96px; }
175
+ .ui-icon-trash { background-position: -176px -96px; }
176
+ .ui-icon-locked { background-position: -192px -96px; }
177
+ .ui-icon-unlocked { background-position: -208px -96px; }
178
+ .ui-icon-bookmark { background-position: -224px -96px; }
179
+ .ui-icon-tag { background-position: -240px -96px; }
180
+ .ui-icon-home { background-position: 0 -112px; }
181
+ .ui-icon-flag { background-position: -16px -112px; }
182
+ .ui-icon-calendar { background-position: -32px -112px; }
183
+ .ui-icon-cart { background-position: -48px -112px; }
184
+ .ui-icon-pencil { background-position: -64px -112px; }
185
+ .ui-icon-clock { background-position: -80px -112px; }
186
+ .ui-icon-disk { background-position: -96px -112px; }
187
+ .ui-icon-calculator { background-position: -112px -112px; }
188
+ .ui-icon-zoomin { background-position: -128px -112px; }
189
+ .ui-icon-zoomout { background-position: -144px -112px; }
190
+ .ui-icon-search { background-position: -160px -112px; }
191
+ .ui-icon-wrench { background-position: -176px -112px; }
192
+ .ui-icon-gear { background-position: -192px -112px; }
193
+ .ui-icon-heart { background-position: -208px -112px; }
194
+ .ui-icon-star { background-position: -224px -112px; }
195
+ .ui-icon-link { background-position: -240px -112px; }
196
+ .ui-icon-cancel { background-position: 0 -128px; }
197
+ .ui-icon-plus { background-position: -16px -128px; }
198
+ .ui-icon-plusthick { background-position: -32px -128px; }
199
+ .ui-icon-minus { background-position: -48px -128px; }
200
+ .ui-icon-minusthick { background-position: -64px -128px; }
201
+ .ui-icon-close { background-position: -80px -128px; }
202
+ .ui-icon-closethick { background-position: -96px -128px; }
203
+ .ui-icon-key { background-position: -112px -128px; }
204
+ .ui-icon-lightbulb { background-position: -128px -128px; }
205
+ .ui-icon-scissors { background-position: -144px -128px; }
206
+ .ui-icon-clipboard { background-position: -160px -128px; }
207
+ .ui-icon-copy { background-position: -176px -128px; }
208
+ .ui-icon-contact { background-position: -192px -128px; }
209
+ .ui-icon-image { background-position: -208px -128px; }
210
+ .ui-icon-video { background-position: -224px -128px; }
211
+ .ui-icon-script { background-position: -240px -128px; }
212
+ .ui-icon-alert { background-position: 0 -144px; }
213
+ .ui-icon-info { background-position: -16px -144px; }
214
+ .ui-icon-notice { background-position: -32px -144px; }
215
+ .ui-icon-help { background-position: -48px -144px; }
216
+ .ui-icon-check { background-position: -64px -144px; }
217
+ .ui-icon-bullet { background-position: -80px -144px; }
218
+ .ui-icon-radio-off { background-position: -96px -144px; }
219
+ .ui-icon-radio-on { background-position: -112px -144px; }
220
+ .ui-icon-pin-w { background-position: -128px -144px; }
221
+ .ui-icon-pin-s { background-position: -144px -144px; }
222
+ .ui-icon-play { background-position: 0 -160px; }
223
+ .ui-icon-pause { background-position: -16px -160px; }
224
+ .ui-icon-seek-next { background-position: -32px -160px; }
225
+ .ui-icon-seek-prev { background-position: -48px -160px; }
226
+ .ui-icon-seek-end { background-position: -64px -160px; }
227
+ .ui-icon-seek-first { background-position: -80px -160px; }
228
+ .ui-icon-stop { background-position: -96px -160px; }
229
+ .ui-icon-eject { background-position: -112px -160px; }
230
+ .ui-icon-volume-off { background-position: -128px -160px; }
231
+ .ui-icon-volume-on { background-position: -144px -160px; }
232
+ .ui-icon-power { background-position: 0 -176px; }
233
+ .ui-icon-signal-diag { background-position: -16px -176px; }
234
+ .ui-icon-signal { background-position: -32px -176px; }
235
+ .ui-icon-battery-0 { background-position: -48px -176px; }
236
+ .ui-icon-battery-1 { background-position: -64px -176px; }
237
+ .ui-icon-battery-2 { background-position: -80px -176px; }
238
+ .ui-icon-battery-3 { background-position: -96px -176px; }
239
+ .ui-icon-circle-plus { background-position: 0 -192px; }
240
+ .ui-icon-circle-minus { background-position: -16px -192px; }
241
+ .ui-icon-circle-close { background-position: -32px -192px; }
242
+ .ui-icon-circle-triangle-e { background-position: -48px -192px; }
243
+ .ui-icon-circle-triangle-s { background-position: -64px -192px; }
244
+ .ui-icon-circle-triangle-w { background-position: -80px -192px; }
245
+ .ui-icon-circle-triangle-n { background-position: -96px -192px; }
246
+ .ui-icon-circle-arrow-e { background-position: -112px -192px; }
247
+ .ui-icon-circle-arrow-s { background-position: -128px -192px; }
248
+ .ui-icon-circle-arrow-w { background-position: -144px -192px; }
249
+ .ui-icon-circle-arrow-n { background-position: -160px -192px; }
250
+ .ui-icon-circle-zoomin { background-position: -176px -192px; }
251
+ .ui-icon-circle-zoomout { background-position: -192px -192px; }
252
+ .ui-icon-circle-check { background-position: -208px -192px; }
253
+ .ui-icon-circlesmall-plus { background-position: 0 -208px; }
254
+ .ui-icon-circlesmall-minus { background-position: -16px -208px; }
255
+ .ui-icon-circlesmall-close { background-position: -32px -208px; }
256
+ .ui-icon-squaresmall-plus { background-position: -48px -208px; }
257
+ .ui-icon-squaresmall-minus { background-position: -64px -208px; }
258
+ .ui-icon-squaresmall-close { background-position: -80px -208px; }
259
+ .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
260
+ .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
261
+ .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
262
+ .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
263
+ .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
264
+ .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
265
+
266
+
267
+ /* Misc visuals
268
+ ----------------------------------*/
269
+
270
+ /* Corner radius */
271
+ .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; }
272
+ .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
273
+ .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
274
+ .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
275
+ .ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
276
+ .ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
277
+ .ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
278
+ .ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
279
+ .ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; }
280
+
281
+ /* Overlays */
282
+ .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
283
+ .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; }/* Accordion
284
+ ----------------------------------*/
285
+ .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
286
+ .ui-accordion .ui-accordion-li-fix { display: inline; }
287
+ .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
288
+ .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; }
289
+ .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
290
+ .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; }
291
+ .ui-accordion .ui-accordion-content-active { display: block; }/* Datepicker
292
+ ----------------------------------*/
293
+ .ui-datepicker { width: 17em; padding: .2em .2em 0; }
294
+ .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
295
+ .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
296
+ .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
297
+ .ui-datepicker .ui-datepicker-prev { left:2px; }
298
+ .ui-datepicker .ui-datepicker-next { right:2px; }
299
+ .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
300
+ .ui-datepicker .ui-datepicker-next-hover { right:1px; }
301
+ .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
302
+ .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
303
+ .ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; }
304
+ .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
305
+ .ui-datepicker select.ui-datepicker-month,
306
+ .ui-datepicker select.ui-datepicker-year { width: 49%;}
307
+ .ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; }
308
+ .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
309
+ .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
310
+ .ui-datepicker td { border: 0; padding: 1px; }
311
+ .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
312
+ .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
313
+ .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
314
+ .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
315
+
316
+ /* with multiple calendars */
317
+ .ui-datepicker.ui-datepicker-multi { width:auto; }
318
+ .ui-datepicker-multi .ui-datepicker-group { float:left; }
319
+ .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
320
+ .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
321
+ .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
322
+ .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
323
+ .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
324
+ .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
325
+ .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
326
+ .ui-datepicker-row-break { clear:both; width:100%; }
327
+
328
+ /* RTL support */
329
+ .ui-datepicker-rtl { direction: rtl; }
330
+ .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
331
+ .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
332
+ .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
333
+ .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
334
+ .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
335
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
336
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
337
+ .ui-datepicker-rtl .ui-datepicker-group { float:right; }
338
+ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
339
+ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
340
+
341
+ /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
342
+ .ui-datepicker-cover {
343
+ display: none; /*sorry for IE5*/
344
+ display/**/: block; /*sorry for IE5*/
345
+ position: absolute; /*must have*/
346
+ z-index: -1; /*must have*/
347
+ filter: mask(); /*must have*/
348
+ top: -4px; /*must have*/
349
+ left: -4px; /*must have*/
350
+ width: 200px; /*must have*/
351
+ height: 200px; /*must have*/
352
+ }/* Dialog
353
+ ----------------------------------*/
354
+ .ui-dialog { position: relative; padding: .2em; width: 300px; }
355
+ .ui-dialog .ui-dialog-titlebar { padding: .5em .3em .3em 1em; position: relative; }
356
+ .ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; }
357
+ .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
358
+ .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
359
+ .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
360
+ .ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
361
+ .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
362
+ .ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; }
363
+ .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
364
+ .ui-draggable .ui-dialog-titlebar { cursor: move; }
365
+ /* Progressbar
366
+ ----------------------------------*/
367
+ .ui-progressbar { height:2em; text-align: left; }
368
+ .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Resizable
369
+ ----------------------------------*/
370
+ .ui-resizable { position: relative;}
371
+ .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
372
+ .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
373
+ .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; }
374
+ .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; }
375
+ .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; }
376
+ .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; }
377
+ .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
378
+ .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
379
+ .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
380
+ .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Slider
381
+ ----------------------------------*/
382
+ .ui-slider { position: relative; text-align: left; }
383
+ .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
384
+ .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; }
385
+
386
+ .ui-slider-horizontal { height: .8em; }
387
+ .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
388
+ .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
389
+ .ui-slider-horizontal .ui-slider-range-min { left: 0; }
390
+ .ui-slider-horizontal .ui-slider-range-max { right: 0; }
391
+
392
+ .ui-slider-vertical { width: .8em; height: 100px; }
393
+ .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
394
+ .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
395
+ .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
396
+ .ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs
397
+ ----------------------------------*/
398
+ .ui-tabs { padding: .2em; zoom: 1; }
399
+ .ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; }
400
+ .ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; }
401
+ .ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; }
402
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; font-weight: 700; }
403
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
404
+ .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
405
+ .ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; }
406
+ .ui-tabs .ui-tabs-hide { display: none !important; }
407
+
408
+ /* Sub tabs
409
+ ---------------------------------*/
410
+ .ui-widget-content .ui-widget-content .ui-widget-header,
411
+ .ui-widget-content .ui-widget-content .ui-state-default,
412
+ .ui-widget-content .ui-widget-content .ui-state-hover,
413
+ .ui-widget-content .ui-widget-content .ui-state-focus,
414
+ .ui-widget-content .ui-widget-content .ui-state-active { border: 0; background: none; }
415
+
416
+ .ui-widget-content .ui-widget-content .ui-state-default a,
417
+ .ui-widget-content .ui-widget-content .ui-state-default a:link,
418
+ .ui-widget-content .ui-widget-content .ui-state-default a:visited { color: #1c6280; text-decoration: none; outline: none; }
419
+ .ui-widget-content .ui-widget-content .ui-state-hover a,
420
+ .ui-widget-content .ui-widget-content .ui-state-hover a:hover { color: #d54e21; text-decoration: none; outline: none; }
421
+ .ui-widget-content .ui-widget-content .ui-state-active a,
422
+ .ui-widget-content .ui-widget-content .ui-state-active a:link,
423
+ .ui-widget-content .ui-widget-content .ui-state-active a:visited { color: #212121; outline: none; text-decoration: none; }
424
+
425
+ .ui-tabs .ui-tabs-panel .ui-tabs-nav { list-style: none; position: relative; padding: 0; }
426
+ .ui-tabs .ui-tabs-panel .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; }
427
+ .ui-tabs .ui-tabs-panel .ui-tabs-nav li a { color: #FF0000; float: left; text-decoration: none; padding: .5em 1em .5em 0; }
428
+ .ui-tabs .ui-tabs-panel .ui-tabs-panel { padding: 0; display: block; border-width: 0; background: none; }
images/add.gif ADDED
Binary file
images/remove.gif ADDED
Binary file
includes/admin-page.php CHANGED
@@ -1,38 +1,55 @@
1
  <?php
2
 
3
- global $wp_roles;
4
  $user_roles = $wp_roles->get_names();
5
 
6
  if ( $_POST ) {
7
 
8
- check_admin_referer('theme-my-login');
9
-
10
- $this->SetOption('uninstall', isset($_POST['uninstall']));
11
- $this->SetOption('show_page', isset($_POST['show_page']));
12
- $this->SetOption('login_title', stripslashes($_POST['login_title']));
13
- $this->SetOption('register_title', stripslashes($_POST['register_title']));
14
- $this->SetOption('register_msg', stripslashes($_POST['register_msg']));
15
- $this->SetOption('register_complete', stripslashes($_POST['register_complete']));
16
- $this->SetOption('password_title', stripslashes($_POST['password_title']));
17
- $this->SetOption('password_msg', stripslashes($_POST['password_msg']));
18
- $this->SetOption('widget_allow_register', isset($_POST['widget_allow_register']));
19
- $this->SetOption('widget_allow_password', isset($_POST['widget_allow_password']));
20
- foreach ($user_roles as $role => $value) {
21
- $dashboard_url[$role] = $_POST['widget_dashboard_url'][$role];
22
- $profile_url[$role] = $_POST['widget_profile_url'][$role];
 
 
 
 
23
  }
24
- $this->SetOption('widget_dashboard_url', $dashboard_url);
25
- $this->SetOption('widget_profile_url', $profile_url);
26
- $this->SaveOptions();
27
-
28
- if (isset($_POST['uninstall']))
29
- $success = __('To complete uninstall, deactivate this plugin. If you do not wish to uninstall, please uncheck the "Complete Uninstall" checkbox.', 'theme-my-login');
30
- else
31
- $success =__('Settings saved.', 'theme-my-login');
 
 
 
 
 
 
 
 
 
 
32
  }
33
 
34
- $dashboard_url = $this->GetOption('widget_dashboard_url');
35
- $profile_url = $this->GetOption('widget_profile_url');
 
 
 
36
 
37
  ?>
38
 
@@ -41,118 +58,282 @@ $profile_url = $this->GetOption('widget_profile_url');
41
  </div>
42
 
43
  <div class="wrap">
44
- <?php if ( isset($success) && strlen($success) > 0 ) { ?>
 
 
 
 
45
  <div id="message" class="updated fade">
46
- <p><strong><?php echo $success; ?></strong></p>
 
 
 
 
 
 
47
  </div>
48
- <?php } ?>
49
- <div id="icon-options-general" class="icon32"><br /></div>
50
- <h2><?php _e('Theme My Login Settings', 'theme-my-login'); ?></h2>
51
-
52
- <form action="" method="post" id="tml-settings">
53
- <?php if ( function_exists('wp_nonce_field') ) wp_nonce_field('theme-my-login'); ?>
54
-
55
- <h3><?php _e('General Settings', 'theme-my-login'); ?></h3>
56
- <table class="form-table">
57
- <tr valign="top">
58
- <th scope="row"><?php _e('Plugin', 'theme-my-login'); ?></th>
59
- <td>
60
- <input name="uninstall" type="checkbox" id="uninstall" value="1" <?php if ($this->GetOption('uninstall')) { echo 'checked="checked"'; } ?> />
61
- <label for="uninstall"><?php _e('Uninstall', 'theme-my-login'); ?></label>
62
- </td>
63
- </tr>
64
- <tr valign="top">
65
- <th scope="row"><?php _e('Page List', 'theme-my-login'); ?></th>
66
- <td>
67
- <input name="show_page" type="checkbox" id="show_page" value="1" <?php if ($this->GetOption('show_page')) { echo 'checked="checked"'; } ?> />
68
- <label for="show_page"><?php _e('Show Login Page', 'theme-my-login'); ?></label>
69
- </td>
70
- </tr>
71
- </table>
72
-
73
- <h3><?php _e('Template Settings', 'theme-my-login'); ?></h3>
74
- <table class="form-table">
75
- <tr valign="top">
76
- <th scope="row"><label for="register_title"><?php _e('Register Title', 'theme-my-login'); ?></label></th>
77
- <td>
78
- <input name="register_title" type="text" id="register_title" value="<?php echo( htmlspecialchars ( $this->GetOption('register_title') ) ); ?>" class="regular-text" />
79
- </td>
80
- </tr>
81
- <tr valign="top">
82
- <th scope="row"><label for="register_msg"><?php _e('Register Message', 'theme-my-login'); ?></label></th>
83
- <td>
84
- <input name="register_msg" type="text" id="register_msg" value="<?php echo( htmlspecialchars ( $this->GetOption('register_msg') ) ); ?>" class="regular-text" />
85
- </td>
86
- </tr>
87
- <tr valign="top">
88
- <th scope="row"><label for="register_complete"><?php _e('Registration Complete Message', 'theme-my-login'); ?></label></th>
89
- <td>
90
- <input name="register_complete" type="text" id="register_complete" value="<?php echo( htmlspecialchars ( $this->GetOption('register_complete') ) ); ?>" class="regular-text" />
91
- </td>
92
- </tr>
93
- <tr valign="top">
94
- <th scope="row"><label for="login_title"><?php _e('Login Title', 'theme-my-login'); ?></label></th>
95
- <td>
96
- <input name="login_title" type="text" id="login_title" value="<?php echo( htmlspecialchars ( $this->GetOption('login_title') ) ); ?>" class="regular-text" />
97
- </td>
98
- </tr>
99
- <tr valign="top">
100
- <th scope="row"><label for="password_title"><?php _e('Lost Password Title', 'theme-my-login'); ?></label></th>
101
- <td>
102
- <input name="password_title" type="text" id="password_title" value="<?php echo( htmlspecialchars ( $this->GetOption('password_title') ) ); ?>" class="regular-text" />
103
- </td>
104
- </tr>
105
- <tr valign="top">
106
- <th scope="row"><label for="password_msg"><?php _e('Lost Password Message', 'theme-my-login'); ?></label></th>
107
- <td>
108
- <input name="password_msg" type="text" id="password_msg" value="<?php echo( htmlspecialchars ( $this->GetOption('password_msg') ) ); ?>" class="regular-text" />
109
- </td>
110
- </tr>
111
- </table>
112
 
113
- <h3><?php _e('Widget Settings', 'theme-my-login'); ?></h3>
114
- <table class="form-table">
115
- <tr valign="top">
116
- <th scope="row"><?php _e('Registration', 'theme-my-login'); ?></th>
117
- <td>
118
- <input name="widget_allow_register" type="checkbox" id="widget_allow_register" value="1" <?php if ($this->GetOption('widget_allow_register')) { echo 'checked="checked"'; } ?> />
119
- <label for="widget_allow_register"><?php _e('Allow Registration in Widget', 'theme-my-login'); ?></label>
120
- </td>
121
- </tr>
122
- <tr valign="top">
123
- <th scope="row"><?php _e('Lost Password', 'theme-my-login'); ?></th>
124
- <td>
125
- <input name="widget_allow_password" type="checkbox" id="widget_allow_password" value="1" <?php if ($this->GetOption('widget_allow_password')) { echo 'checked="checked"'; } ?> />
126
- <label for="widget_allow_password"><?php _e('Allow Password Recovery in Widget', 'theme-my-login'); ?></label>
127
- </td>
128
- </tr>
129
- </table>
130
- <h4><?php _e('Dashboard URL'); ?></h4>
131
- <p class="setting-description">Leave blank for default</p>
132
- <table class="form-table">
133
- <?php foreach ($user_roles as $role => $value) : ?>
134
- <tr valign="top">
135
- <th scope="row"><?php echo ucwords($role); ?></th>
136
- <td>
137
- <input name="widget_dashboard_url[<?php echo $role; ?>]" type="text" id="widget_dashboard_url[<?php echo $role; ?>]" value="<?php echo $dashboard_url[$role]; ?>" class="regular-text" />
138
- </td>
139
- </tr>
140
- <?php endforeach; ?>
141
- </table>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
142
 
143
- <h4><?php _e('Profile URL'); ?></h4>
144
- <p class="setting-description">Leave blank for default</p>
145
- <table class="form-table">
146
- <?php foreach ($user_roles as $role => $value) : ?>
147
- <tr valign="top">
148
- <th scope="row"><?php echo ucwords($role); ?></th>
149
- <td>
150
- <input name="widget_profile_url[<?php echo $role; ?>]" type="text" id="widget_profile_url[<?php echo $role; ?>]" value="<?php echo $profile_url[$role]; ?>" class="regular-text" />
151
- </td>
152
- </tr>
153
- <?php endforeach; ?>
154
- </table>
155
 
156
- <p class="submit"><input type="submit" name="Submit" class="button-primary" value="<?php _e('Save Changes'); ?>" />
157
- </form>
158
  </div>
1
  <?php
2
 
3
+ global $ThemeMyLogin, $wp_roles, $wp_version;
4
  $user_roles = $wp_roles->get_names();
5
 
6
  if ( $_POST ) {
7
 
8
+ check_admin_referer('theme-my-login-settings');
9
+
10
+ $ThemeMyLogin->options['general']['uninstall'] = isset($_POST['general']['uninstall']);
11
+ $ThemeMyLogin->options['general']['defaults'] = isset($_POST['general']['defaults']);
12
+ $ThemeMyLogin->options['general']['show_page'] = isset($_POST['general']['show_page']);
13
+
14
+ $ThemeMyLogin->SetOption('titles', stripslashes_deep($_POST['titles']));
15
+ $ThemeMyLogin->SetOption('messages', stripslashes_deep($_POST['messages']));
16
+
17
+ $ThemeMyLogin->SetOption('widget_allow_register', isset($_POST['widget_allow_register']));
18
+ $ThemeMyLogin->SetOption('widget_allow_password', isset($_POST['widget_allow_password']));
19
+ foreach ( $_POST['links'] as $role => $tmp ) {
20
+ foreach ( $tmp as $key => $data ) {
21
+ $links[$role][] = array('title' => $data['title'], 'url' => $data['url']);
22
+ }
23
+ }
24
+ $ThemeMyLogin->SetOption('links', $links);
25
+ foreach ( $_POST['redirects'] as $role => $data ) {
26
+ $redirects[$role] = array('login_url' => $data['login_url']);
27
  }
28
+ $ThemeMyLogin->SetOption('redirects', $redirects);
29
+ foreach ( $_POST['emails'] as $email => $data ) {
30
+ $emails[$email] = array('subject' => stripslashes($data['subject']), 'message' => stripslashes($data['message']));
31
+ if ( isset($data['admin-disable']) )
32
+ $emails[$email]['admin-disable'] = $data['admin-disable'];
33
+ if ( isset($data['user-disable']) )
34
+ $emails[$email]['user-disable'] = $data['user-disable'];
35
+ }
36
+ $ThemeMyLogin->SetOption('emails', $emails);
37
+ $ThemeMyLogin->SaveOptions();
38
+
39
+ if ( isset($_POST['general']['uninstall']) ) {
40
+ $info_message = __('To complete uninstall, deactivate this plugin. If you do not wish to uninstall, please uncheck the "Complete Uninstall" checkbox.', 'theme-my-login');
41
+ } elseif ( isset($_POST['general']['defaults']) ) {
42
+ $ThemeMyLogin->options = '';
43
+ $ThemeMyLogin->InitOptions(true);
44
+ $info_message = __('All settings restored to default state.', 'theme-my-login');
45
+ } else $info_message =__('Settings saved.', 'theme-my-login');
46
  }
47
 
48
+ $titles = $ThemeMyLogin->GetOption('titles');
49
+ $messages = $ThemeMyLogin->GetOption('messages');
50
+ $links = $ThemeMyLogin->GetOption('links');
51
+ $redirects = $ThemeMyLogin->GetOption('redirects');
52
+ $emails = $ThemeMyLogin->GetOption('emails');
53
 
54
  ?>
55
 
58
  </div>
59
 
60
  <div class="wrap">
61
+ <?php if ( function_exists('screen_icon') ) screen_icon('options-general'); ?>
62
+
63
+ <h2><?php _e('Theme My Login Settings'); ?></h2>
64
+
65
+ <?php if ( isset($info_message) && !empty($info_message) ) : ?>
66
  <div id="message" class="updated fade">
67
+ <p><strong><?php echo $info_message ?></strong></p>
68
+ </div>
69
+ <?php endif; ?>
70
+
71
+ <?php if( isset($error_message) && !empty($error_message) ) : ?>
72
+ <div id="message" class="error">
73
+ <p><strong><?php echo $error_message ?></strong></p>
74
  </div>
75
+ <?php endif; ?>
76
+
77
+ <form id="bs-settings" action="" method="post">
78
+ <?php wp_nonce_field('theme-my-login-settings'); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
 
80
+ <div id="container" class="tabs">
81
+
82
+ <ul class="tabs-nav">
83
+ <li><a href="#fragment-1">General</a></li>
84
+ <li><a href="#fragment-2">Template</a></li>
85
+ <li><a href="#fragment-3">Links</a></li>
86
+ <li><a href="#fragment-4">Redirection</a></li>
87
+ <li><a href="#fragment-5">E-mail</a></li>
88
+ </ul>
89
+
90
+ <div id="fragment-1" class="tabs-div">
91
+
92
+ <table class="form-table">
93
+ <tr valign="top">
94
+ <th scope="row"><?php _e('Plugin', 'theme-my-login'); ?></th>
95
+ <td>
96
+ <input name="general[uninstall]" type="checkbox" id="general[uninstall]" value="1" <?php if ($ThemeMyLogin->options['general']['uninstall']) { echo 'checked="checked"'; } ?> />
97
+ <label for="general[uninstall]"><?php _e('Uninstall', 'theme-my-login'); ?></label>
98
+ </td>
99
+ </tr>
100
+ <tr valign="top">
101
+ <th scope="row"><?php _e('Defaults', 'theme-my-login'); ?></th>
102
+ <td>
103
+ <input name="general[defaults]" type="checkbox" id="general[defaults]" value="1" <?php if ($ThemeMyLogin->options['general']['defaults']) { echo 'checked="checked"'; } ?> />
104
+ <label for="general[defaults]"><?php _e('Reset Defaults', 'theme-my-login'); ?></label>
105
+ </td>
106
+ </tr>
107
+ <tr valign="top">
108
+ <th scope="row"><?php _e('Page List', 'theme-my-login'); ?></th>
109
+ <td>
110
+ <input name="general[show_page]" type="checkbox" id="general[show_page]" value="1" <?php if ($ThemeMyLogin->options['general']['show_page']) { echo 'checked="checked"'; } ?> />
111
+ <label for="general[show_page]"><?php _e('Show Login Page', 'theme-my-login'); ?></label>
112
+ </td>
113
+ </tr>
114
+ </table>
115
+
116
+ </div>
117
+
118
+ <div id="fragment-2" class="tabs-div">
119
+
120
+ <ul class="tabs-nav">
121
+ <li><a href="#fragment-2-1">Titles</a></li>
122
+ <li><a href="#fragment-2-2">Messages</a></li>
123
+ </ul>
124
+
125
+ <div id="fragment-2-1" class="tabs-div">
126
+ <table class="form-table">
127
+ <tr valign="top">
128
+ <th scope="row"><label for="titles[welcome]"><?php _e('Welcome', 'theme-my-login'); ?></label></th>
129
+ <td>
130
+ <input name="titles[welcome]" type="text" id="titles[welcome]" value="<?php echo htmlspecialchars($titles['welcome']); ?>" class="regular-text" />
131
+ </td>
132
+ </tr>
133
+ <tr valign="top">
134
+ <th scope="row"><label for="titles[login]"><?php _e('Log In', 'theme-my-login'); ?></label></th>
135
+ <td>
136
+ <input name="titles[login]" type="text" id="titles[login]" value="<?php echo htmlspecialchars($titles['login']); ?>" class="regular-text" />
137
+ </td>
138
+ </tr>
139
+ <tr valign="top">
140
+ <th scope="row"><label for="titles[register]"><?php _e('Register', 'theme-my-login'); ?></label></th>
141
+ <td>
142
+ <input name="titles[register]" type="text" id="titles[register]" value="<?php echo htmlspecialchars($titles['register']); ?>" class="regular-text" />
143
+ </td>
144
+ </tr>
145
+ <tr valign="top">
146
+ <th scope="row"><label for="titles[lostpassword]"><?php _e('Lost Password', 'theme-my-login'); ?></label></th>
147
+ <td>
148
+ <input name="titles[lostpassword]" type="text" id="titles[lostpassword]" value="<?php echo htmlspecialchars($titles['lostpassword']); ?>" class="regular-text" />
149
+ </td>
150
+ </tr>
151
+ <tr valign="top">
152
+ <th scope="row"><label for="titles[logout]"><?php _e('Log Out', 'theme-my-login'); ?></label></th>
153
+ <td>
154
+ <input name="titles[logout]" type="text" id="titles[logout]" value="<?php echo htmlspecialchars($titles['logout']); ?>" class="regular-text" />
155
+ </td>
156
+ </tr>
157
+ </table>
158
+ </div>
159
+
160
+ <div id="fragment-2-2" class="tabs-div">
161
+ <table class="form-table">
162
+ <tr valign="top">
163
+ <th scope="row"><label for="register_msg"><?php _e('Register', 'theme-my-login'); ?></label></th>
164
+ <td>
165
+ <input name="messages[register]" type="text" id="messages[register]" value="<?php echo htmlspecialchars($messages['register']); ?>" class="extended-text" />
166
+ </td>
167
+ </tr>
168
+ <tr valign="top">
169
+ <th scope="row"><label for="register_complete"><?php _e('Registration Complete', 'theme-my-login'); ?></label></th>
170
+ <td>
171
+ <input name="messages[success]" type="text" id="messages[success]" value="<?php echo htmlspecialchars($messages['success']); ?>" class="extended-text" />
172
+ </td>
173
+ </tr>
174
+ <tr valign="top">
175
+ <th scope="row"><label for="password_msg"><?php _e('Lost Password', 'theme-my-login'); ?></label></th>
176
+ <td>
177
+ <input name="messages[lostpassword]" type="text" id="messages[lostpassword]" value="<?php echo htmlspecialchars($messages['lostpassword']); ?>" class="extended-text" />
178
+ </td>
179
+ </tr>
180
+ </table>
181
+ </div>
182
+
183
+ </div>
184
+
185
+ <div id="fragment-3" class="tabs-div">
186
+
187
+ <ul class="tabs-nav">
188
+ <?php
189
+ $i = 1;
190
+ foreach ($user_roles as $role => $value) {
191
+ echo '<li><a href="#fragment-3-' . $i . '">' . ucwords($role) . '</a></li>' . "\n";
192
+ $i++;
193
+ }
194
+ ?>
195
+ </ul>
196
+
197
+ <?php
198
+ $i1 = 1;
199
+ foreach ($user_roles as $role => $value) {
200
+ ?>
201
+ <div id="fragment-3-<?php echo $i1; ?>" class="tabs-div">
202
+
203
+ <table id="links-<?php echo $role; ?>" class="form-table link-table">
204
+ <?php $i2 = 0; ?>
205
+ <?php $alt = 'alternate'; ?>
206
+ <?php foreach ( $links[$role] as $key => $data ) {
207
+ $alt = ('alternate' == $alt) ? '' : 'alternate';
208
+ ?>
209
+ <tr id="link-row-<?php echo $i2; ?>" class="<?php echo $alt; ?>">
210
+ <td>
211
+ Title<br />
212
+ <input name="links[<?php echo $role; ?>][<?php echo $i2; ?>][title]" type="text" id="links[<?php echo $role; ?>][<?php echo $i2; ?>][title]" value="<?php echo htmlspecialchars($data['title']); ?>" class="regular-text link-title" /><br />
213
+ URL<br />
214
+ <input name="links[<?php echo $role; ?>][<?php echo $i2; ?>][url]" type="text" id="links[<?php echo $role; ?>][<?php echo $i2; ?>][url]" value="<?php echo $data['url']; ?>" class="extended-text link-url" /><br />
215
+ <p>
216
+ <a class="link remove <?php echo $role; ?>" href="" title="Remove This Link"><img src="<?php echo WP_PLUGIN_URL; ?>/theme-my-login/images/remove.gif" /></a>
217
+ <a class="link add <?php echo $role; ?>" href="" title="Add Another Link"><img src="<?php echo WP_PLUGIN_URL; ?>/theme-my-login/images/add.gif" /></a>
218
+ </p>
219
+ </td>
220
+ </tr>
221
+ <?php
222
+ $i2++;
223
+ }
224
+ ?>
225
+ </table>
226
+
227
+ </div>
228
+
229
+ <?php
230
+ $i1++;
231
+ }
232
+ ?>
233
+
234
+ </div>
235
+
236
+ <div id="fragment-4" class="tabs-div">
237
+
238
+ <ul class="tabs-nav">
239
+ <?php
240
+ $i = 1;
241
+ foreach ($user_roles as $role => $value) {
242
+ echo '<li><a href="#fragment-4-' . $i . '">' . ucwords($role) . '</a></li>' . "\n";
243
+ $i++;
244
+ }
245
+ ?>
246
+ </ul>
247
+
248
+ <?php
249
+ $i1 = 1;
250
+ foreach ($user_roles as $role => $value) {
251
+ ?>
252
+ <div id="fragment-4-<?php echo $i1; ?>" class="tabs-div">
253
+
254
+ <table id="redirection-<?php echo $role; ?>" class="form-table redirection-table">
255
+ <tr id="redirect-row-<?php echo $i2; ?>">
256
+ <td>
257
+ Log In URL<br />
258
+ <input name="redirects[<?php echo $role; ?>][login_url]" type="text" id="redirects[<?php echo $role; ?>][login_url]" value="<?php echo $redirects[$role]['login_url']; ?>" class="extended-text redirect-url" />
259
+ </td>
260
+ </tr>
261
+ </table>
262
+
263
+ </div>
264
+
265
+ <?php
266
+ $i1++;
267
+ }
268
+ ?>
269
+
270
+ </div>
271
+
272
+ <div id="fragment-5" class="tabs-div">
273
+
274
+ <ul class="tabs-nav">
275
+ <li><a href="#fragment-5-1">New Registration</a></li>
276
+ <li><a href="#fragment-5-2">Password Retrieval</a></li>
277
+ <li><a href="#fragment-5-3">Password Reset</a></li>
278
+ </ul>
279
+
280
+ <div id="fragment-5-1" class="tabs-div">
281
+ <table class="form-table">
282
+ <tr>
283
+ <td>
284
+ <p><em>Avilable Variables: %blogname%, %siteurl%, %user_login%, %user_email%, %user_pass%, %user_ip%</em></p>
285
+ Subject<br />
286
+ <input name="emails[newregistration][subject]" type="text" id="emails[newregistration][subject]" value="<?php echo htmlspecialchars($emails['newregistration']['subject']); ?>" class="full-text" /><br />
287
+ Message<br />
288
+ <textarea name="emails[newregistration][message]" id="emails[newregistration][message]" class="large-text"><?php echo htmlspecialchars($emails['newregistration']['message']); ?></textarea><br />
289
+ <p>
290
+ <label for "emails[newregistration][admin-disable]"><input name="emails[newregistration][admin-disable]" type="checkbox" id="emails[newregistration][admin-disable]" value="1" <?php if ( isset($emails['newregistration']['admin-disable']) && true == $emails['newregistration']['admin-disable'] ) { echo 'checked="checked"'; } ?> /> Disable Admin Notification</label>&nbsp;
291
+ <label for "emails[newregistration][user-disable]"><input name="emails[newregistration][user-disable]" type="checkbox" id="emails[newregistration][useradmin-disable]" value="1" <?php if ( isset($emails['newregistration']['user-disable']) && true == $emails['newregistration']['user-disable'] ) { echo 'checked="checked"'; } ?> /> Disable User Notification</label>&nbsp;
292
+ </p>
293
+ </td>
294
+ </tr>
295
+ </table>
296
+ </div>
297
+
298
+ <div id="fragment-5-2" class="tabs-div">
299
+ <table class="form-table">
300
+ <tr>
301
+ <td>
302
+ <p><em>Avilable Variables: %blogname%, %siteurl%, %reseturl%, %user_login%, %user_email%, %user_ip%</em></p>
303
+ Subject<br />
304
+ <input name="emails[retrievepassword][subject]" type="text" id="emails[retrievepassword][subject]" value="<?php echo htmlspecialchars($emails['retrievepassword']['subject']); ?>" class="full-text" /><br />
305
+ Message<br />
306
+ <textarea name="emails[retrievepassword][message]" id="emails[retrievepassword][message]" class="large-text"><?php echo htmlspecialchars($emails['retrievepassword']['message']); ?></textarea><br />
307
+ </td>
308
+ </tr>
309
+ </table>
310
+ </div>
311
+
312
+ <div id="fragment-5-3" class="tabs-div">
313
+ <table class="form-table">
314
+ <tr>
315
+ <td>
316
+ <p><em>Avilable Variables: %blogname%, %siteurl%, %user_login%, %user_email%, %user_pass%, %user_ip%</em></p>
317
+ Subject<br />
318
+ <input name="emails[resetpassword][subject]" type="text" id="emails[resetpassword][subject]" value="<?php echo htmlspecialchars($emails['resetpassword']['subject']); ?>" class="full-text" /><br />
319
+ Message<br />
320
+ <textarea name="emails[resetpassword][message]" id="emails[resetpassword][message]" class="large-text"><?php echo htmlspecialchars($emails['resetpassword']['message']); ?></textarea><br />
321
+ <p>
322
+ <label for "emails[resetpassword][admin-disable]"><input name="emails[resetpassword][admin-disable]" type="checkbox" id="emails[resetpassword][admin-disable]" value="1" <?php if ( isset($ThemeMyLogin->options['emails']['resetpassword']['admin-disable']) && true == $emails['resetpassword']['admin-disable'] ) { echo 'checked="checked"'; } ?> /> Disable Admin Notification</label>&nbsp;
323
+ </p>
324
+ </td>
325
+ </tr>
326
+ </table>
327
+ </div>
328
+
329
+ </div>
330
+
331
+ </div>
332
 
333
+ <?php if ( version_compare($wp_version, '2.7', '>=') ) : ?>
334
+ <p><input type="submit" name="Submit" class="button-primary" value="<?php _e('Save Changes'); ?>" /></p>
335
+ <?php else : ?>
336
+ <p><input type="submit" name="Submit" class="button" value="<?php _e('Save Changes'); ?>" /></p>
337
+ <?php endif; ?>
 
 
 
 
 
 
 
338
 
 
 
339
  </div>
includes/widget-new.php DELETED
@@ -1,127 +0,0 @@
1
- <?php
2
-
3
- class ThemeMyLoginWidget extends WP_Widget {
4
-
5
- function ThemeMyLoginWidget(){
6
- $widget_ops = array('classname' => 'widget_theme_my_login', 'description' => __('A login form for your blog.', 'theme-my-login') );
7
- $this->WP_Widget('theme-my-login', __('Theme My Login', 'theme-my-login'), $widget_ops);
8
- }
9
-
10
- function widget($args, $instance){
11
- global $ThemeMyLogin, $wp_version, $user_ID, $current_user, $login_errors;
12
-
13
- get_currentuserinfo();
14
-
15
- extract ($args);
16
-
17
- if (!is_page($ThemeMyLogin->GetOption('page_id'))) {
18
- if ($user_ID != '' && $instance['show_logged_in']) {
19
- $user_role = reset($current_user->roles);
20
- $dashboard_url = $ThemeMyLogin->GetOption('widget_dashboard_url');
21
- $profile_url = $ThemeMyLogin->GetOption('widget_profile_url');
22
- $user_dashboard_url = (empty($dashboard_url[$user_role])) ? site_url('wp-admin/', 'admin') : $dashboard_url[$user_role];
23
- $user_profile_url = (empty($profile_url[$user_role])) ? site_url('wp-admin/profile.php', 'admin') : $profile_url[$user_role];
24
- echo $before_widget . $before_title . __('Welcome', 'theme-my-login') . ', ' . $current_user->display_name . $after_title . "\n";
25
- if ($instance['show_gravatar']) :
26
- echo '<div class="theme-my-login-avatar">' . get_avatar( $user_ID, $size = $instance['gravatar_size'] ) . '</div>' . "\n";
27
- endif;
28
- do_action('theme_my_login_avatar', $current_user);
29
- echo '<ul class="theme-my-login-links">' . "\n";
30
- if ($instance['dashboard_link_' . $user_role]) :
31
- echo '<li><a href="' . $user_dashboard_url . '">' . __('Dashboard') . '</a></li>' . "\n";
32
- endif;
33
- if ($instance['profile_link_' . $user_role]) :
34
- echo '<li><a href="' . $user_profile_url . '">' . __('Profile') . '</a></li>' . "\n";
35
- endif;
36
- do_action('theme_my_login_links', $user_role);
37
- $redirect = wp_guess_url();
38
- echo '<li><a href="' . wp_logout_url($redirect) . '">' . __('Log Out') . '</a></li>' . "\n";
39
- echo '</ul>' . "\n";
40
- echo $after_widget . "\n";
41
- } elseif (empty($user_ID)) {
42
- switch ($_GET['action']) {
43
- case 'register':
44
- $title = $ThemeMyLogin->GetOption('register_title');
45
- break;
46
- case 'lostpassword':
47
- case 'retrievepassword':
48
- case 'resetpass':
49
- case 'rp':
50
- $title = $ThemeMyLogin->GetOption('password_title');
51
- break;
52
- case 'login':
53
- default:
54
- $title = $ThemeMyLogin->GetOption('login_title');
55
- break;
56
- }
57
- echo $before_widget . $before_title . $title . $after_title . "\n";
58
- $type = 'widget';
59
- require (WP_PLUGIN_DIR . '/theme-my-login/includes/wp-login-forms.php');
60
- echo $after_widget . "\n";
61
- }
62
- }
63
- }
64
-
65
- function update($new_instance, $old_instance){
66
- global $wp_roles;
67
- $user_roles = $wp_roles->get_names();
68
-
69
- $instance = $old_instance;
70
- $instance['show_logged_in'] = (empty($new_instance['show_logged_in'])) ? false : true;
71
- $instance['show_gravatar'] = (empty($new_instance['show_gravatar'])) ? false : true;
72
- $instance['gravatar_size'] = absint($new_instance['gravatar_size']);
73
- foreach ($user_roles as $role => $value) {
74
- $instance['dashboard_link_' . $role] = (empty($new_instance['dashboard_link_' . $role])) ? false : true;
75
- //$instance['dashboard_url_' . $role] = trim($new_instance['dashboard_url_' . $role]);
76
- $instance['profile_link_' . $role] = (empty($new_instance['profile_link_' . $role])) ? false : true;
77
- //$instance['profile_url_' . $role] = trim($new_instance['profile_url_' . $role]);
78
- }
79
-
80
- return $instance;
81
- }
82
-
83
- function form($instance){
84
- global $wp_roles;
85
- $user_roles = $wp_roles->get_names();
86
-
87
- //Defaults
88
- $defaults['show_logged_in'] = 1;
89
- $defaults['show_gravatar'] = 1;
90
- $defaults['gravatar_size'] = 50;
91
- foreach ($user_roles as $role => $value) {
92
- $defaults['dashboard_link_' . $role] = 1;
93
- //$defaults['dashboard_url_' . $role] = 'wp-admin/';
94
- $defaults['profile_link_' . $role] = 1;
95
- //$defaults['profile_url_' . $role] = 'wp-admin/profile.php';
96
- }
97
- $instance = wp_parse_args( (array) $instance, (array) $defaults );
98
-
99
- $is_checked = (empty($instance['show_logged_in'])) ? '' : 'checked="checked" ';
100
- echo '<p><input name="' . $this->get_field_name('show_logged_in') . '" type="checkbox" id="' . $this->get_field_id('show_logged_in') . '" value="1" ' . $is_checked . '/> <label for="' . $this->get_field_id('show_logged_in') . '">' . __('Show When Logged In', 'theme-my-login') . '</label></p>' . "\n";
101
- $is_checked = (empty($instance['show_gravatar'])) ? '' : 'checked="checked" ';
102
- echo '<p><input name="' . $this->get_field_name('show_gravatar') . '" type="checkbox" id="' . $this->get_field_id('show_gravatar') . '" value="1" ' . $is_checked . '/> <label for="' . $this->get_field_id('show_gravatar') . '">' . __('Show Gravatar', 'theme-my-login') . '</label></p>' . "\n";
103
- echo '<p>' . __('Gravatar Size', 'theme-my-login') . ': <input name="' . $this->get_field_name('gravatar_size') . '" type="text" id="' . $this->get_field_id('gravatar_size') . '" value="' . $instance['gravatar_size'] . '" size="3" /> <label for="' . $this->get_field_id('gravatar_size') . '"></label></p>' . "\n";
104
- echo '<p>' . __('Dashboard Link', 'theme-my-login') . ':<br />' . "\n";
105
- foreach ($user_roles as $role => $value) {
106
- $is_checked = (empty($instance['dashboard_link_' . $role])) ? '' : 'checked="checked" ';
107
- echo '<input name="' . $this->get_field_name('dashboard_link_' . $role) . '" type="checkbox" id="' . $this->get_field_id('dashboard_link_' . $role) . '" value="1" ' . $is_checked . '/> ' . ucwords($role) . '<br />' . "\n";
108
- //echo '<input name="' . $this->get_field_name('dashboard_url_' . $role) . '" type="text" id="' . $this->get_field_id('dashboard_url_' . $role) . '" value="' . $instance['dashboard_url_' . $role] . '" class="widefat" /><br />' . "\n";
109
- }
110
- echo '</p>';
111
- echo '<p>' . __('Profile Link', 'theme-my-login') . ':<br />' . "\n";
112
- foreach ($user_roles as $role => $value) {
113
- $is_checked = (empty($instance['profile_link_' . $role])) ? '' : 'checked="checked" ';
114
- echo '<input name="' . $this->get_field_name('profile_link_' . $role) . '" type="checkbox" id="' . $this->get_field_id('profile_link_' . $role) . '" value="1" ' . $is_checked . '/> ' . ucwords($role) . '<br />' . "\n";
115
- //echo '<input name="' . $this->get_field_name('profile_url_' . $role) . '" type="text" id="' . $this->get_field_id('profile_url_' . $role) . '" value="' . $instance['profile_url_' . $role] . '" class="widefat" /><br />' . "\n";
116
- }
117
- echo '</p>';
118
- }
119
-
120
- }// END class
121
-
122
- function ThemeMyLoginWidgetInit() {
123
- register_widget('ThemeMyLoginWidget');
124
- }
125
- add_action('widgets_init', 'ThemeMyLoginWidgetInit');
126
-
127
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/widget-old.php DELETED
@@ -1,140 +0,0 @@
1
- <?php
2
-
3
- class ThemeMyLoginWidget {
4
-
5
- function ThemeMyLoginWidget() {
6
- add_action('plugins_loaded', array(&$this, 'PluginsLoaded'));
7
- }
8
-
9
- function PluginsLoaded() {
10
- wp_register_sidebar_widget('theme-my-login', 'Theme My Login', array(&$this, 'Widget'), array('description' => 'A login form for your blog'));
11
- wp_register_widget_control('theme-my-login', 'Theme My Login', array(&$this, 'WidgetControl'));
12
- }
13
-
14
- function Widget($args) {
15
- global $ThemeMyLogin, $wp_version, $user_ID, $current_user, $login_errors;
16
-
17
- get_currentuserinfo();
18
-
19
- extract ($args);
20
-
21
- if (!is_page($ThemeMyLogin->GetOption('page_id'))) {
22
- if ($user_ID != '' && $ThemeMyLogin->GetOption('widget_show_logged_in')) {
23
- $user_role = reset($current_user->roles);
24
- $dashboard_link = $ThemeMyLogin->GetOption('widget_dashboard_link');
25
- $dashboard_url = $ThemeMyLogin->GetOption('widget_dashboard_url');
26
- $profile_link = $ThemeMyLogin->GetOption('widget_profile_link');
27
- $profile_url = $ThemeMyLogin->GetOption('widget_profile_url');
28
- $user_dashboard_url = (empty($dashboard_url[$user_role])) ? site_url('wp-admin/', 'admin') : $dashboard_url[$user_role];
29
- $user_profile_url = (empty($profile_url[$user_role])) ? site_url('wp-admin/profile.php', 'admin') : $profile_url[$user_role];
30
- echo $before_widget . $before_title . __('Welcome', 'theme-my-login') . ', ' . $current_user->display_name . $after_title . "\n";
31
- if ($ThemeMyLogin->GetOption('widget_show_gravatar') == true) :
32
- echo '<div class="theme-my-login-avatar">' . get_avatar( $user_ID, $size = $ThemeMyLogin->GetOption('widget_gravatar_size') ) . '</div>' . "\n";
33
- endif;
34
- do_action('theme_my_login_avatar', $current_user);
35
- echo '<ul class="theme-my-login-links">' . "\n";
36
- if ($dashboard_link[$user_role] == true) :
37
- echo '<li><a href="' . $user_dashboard_url . '">' . __('Dashboard') . '</a></li>' . "\n";
38
- endif;
39
- if ($profile_link[$user_role] == true) :
40
- echo '<li><a href="' . $user_profile_url . '">' . __('Profile') . '</a></li>' . "\n";
41
- endif;
42
- do_action('theme_my_login_links', $user_role);
43
- $redirect = wp_guess_url();
44
- if ($wp_version >= '2.7')
45
- echo '<li><a href="' . wp_logout_url($redirect) . '">' . __('Log Out') . '</a></li>' . "\n";
46
- else
47
- echo '<li><a href="' . site_url('wp-login.php?action=logout&redirect_to='.$redirect, 'login') . '">' . __('Log Out') . '</a></li>' . "\n";
48
- echo '</ul>' . "\n";
49
- } elseif (empty($user_ID)) {
50
- switch ($_GET['action']) {
51
- case 'register':
52
- $title = $ThemeMyLogin->GetOption('register_title');
53
- break;
54
- case 'lostpassword':
55
- case 'retrievepassword':
56
- case 'resetpass':
57
- case 'rp':
58
- $title = $ThemeMyLogin->GetOption('password_title');
59
- break;
60
- case 'login':
61
- default:
62
- $title = $ThemeMyLogin->GetOption('login_title');
63
- break;
64
- }
65
- echo $before_widget . $before_title . $title . $after_title . "\n";
66
- $type = 'widget';
67
- require (WP_PLUGIN_DIR . '/theme-my-login/includes/wp-login-forms.php');
68
- }
69
- echo $after_widget . "\n";
70
- }
71
- }
72
-
73
- function WidgetControl() {
74
- global $ThemeMyLogin, $wp_roles;
75
- $user_roles = $wp_roles->get_names();
76
-
77
- if ( $_POST['tml_submit'] ) {
78
-
79
- foreach ($user_roles as $role => $value) {
80
- $dashboard_link[$role] = isset($_POST['tml_dashboard_link'][$role]) ? true : false;
81
- $profile_link[$role] = isset($_POST['tml_profile_link'][$role]) ? true : false;
82
- }
83
- $ThemeMyLogin->SetOption('widget_show_logged_in', $_POST['tml_show_widget']);
84
- $ThemeMyLogin->SetOption('widget_show_gravatar', $_POST['tml_show_gravatar']);
85
- $ThemeMyLogin->SetOption('widget_gravatar_size', absint($_POST['tml_gravatar_size']));
86
- $ThemeMyLogin->SetOption('widget_dashboard_link', $dashboard_link);
87
- $ThemeMyLogin->SetOption('widget_profile_link', $profile_link);
88
- $ThemeMyLogin->SaveOptions();
89
-
90
- }
91
-
92
- $show_widget = $ThemeMyLogin->GetOption('widget_show_logged_in');
93
- $show_gravatar = $ThemeMyLogin->GetOption('widget_show_gravatar');
94
- $dashboard_link = $ThemeMyLogin->GetOption('widget_dashboard_link');
95
- $profile_link = $ThemeMyLogin->GetOption('widget_profile_link');
96
-
97
- ?>
98
-
99
- <p>
100
- <label for="tml_show_widget">Show Widget When Logged In:</label>
101
- <select name="tml_show_widget" id="tml_show_widget"><option value="1" <?php if ($show_widget == true) echo 'selected="selected"'; ?>>Yes</option><option value="0" <?php if ($show_widget == false) echo 'selected="selected"'; ?>>No</option></select>
102
- </p>
103
-
104
- <p>
105
- <label for="tml_show_gravatar">Show Gravatar:</label>
106
- <select name="tml_show_gravatar" id="tml_show_gravatar"><option value="1" <?php if ($show_gravatar == true) echo 'selected="selected"'; ?>>Yes</option><option value="0" <?php if ($show_gravatar == false) echo 'selected="selected"'; ?>>No</option></select>
107
- </p>
108
-
109
- <p>
110
- <label for="tml_gravatar_size">Gravatar Size:</label>
111
- <input name="tml_gravatar_size" type="text" id="tml_gravatar_size" value="<?php echo absint($ThemeMyLogin->GetOption('widget_gravatar_size')); ?>" size="2" />
112
- </p>
113
-
114
- <p>
115
- <label for="tml_dashboard_link">Dashboard Link:</label><br />
116
- <?php foreach ($user_roles as $role => $value) : ?>
117
- <input name="tml_dashboard_link[<?php echo $role; ?>]" type="checkbox" id="tml_dashboard_link[<?php echo $role; ?>]" value="1"<?php if ($dashboard_link[$role] == true) { echo 'checked="checked"'; } ?> /> <?php echo ucwords($role); ?><br />
118
- <?php endforeach; ?>
119
- </p>
120
-
121
- <p>
122
- <label for="tml_profile_link">Profile Link:</label><br />
123
- <?php foreach ($user_roles as $role => $value) : ?>
124
- <input name="tml_profile_link[<?php echo $role; ?>]" type="checkbox" id="tml_profile_link[<?php echo $role; ?>]" value="1"<?php if ($profile_link[$role] == true) { echo 'checked="checked"'; } ?> /> <?php echo ucwords($role); ?><br />
125
- <?php endforeach; ?>
126
- </p>
127
-
128
- <p>
129
- <input type="hidden" id="tml_submit" name="tml_submit" value="1" />
130
- </p>
131
-
132
- <?php
133
- }
134
- } // End class
135
-
136
- if (class_exists('ThemeMyLoginWidget')) {
137
- $ThemeMyLoginWidget = new ThemeMyLoginWidget();
138
- }
139
-
140
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/wp-login-actions.php DELETED
@@ -1,144 +0,0 @@
1
- <?php
2
-
3
- global $wp_version;
4
-
5
- require_once (WP_PLUGIN_DIR . '/theme-my-login/includes/wp-login-functions.php');
6
-
7
- if ( force_ssl_admin() && !is_ssl() ) {
8
- if ( 0 === strpos($_SERVER['REQUEST_URI'], 'http') ) {
9
- wp_redirect(preg_replace('|^http://|', 'https://', $_SERVER['REQUEST_URI']));
10
- exit();
11
- } else {
12
- wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
13
- exit();
14
- }
15
- }
16
-
17
- $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';
18
- $post_from = isset($_REQUEST['post-from']) ? $_REQUEST['post-from'] : '';
19
-
20
- if ( isset($_GET['key']) )
21
- $action = 'resetpass';
22
-
23
- if ( defined('RELOCATE') ) { // Move flag is set
24
- if ( isset( $_SERVER['PATH_INFO'] ) && ($_SERVER['PATH_INFO'] != $_SERVER['PHP_SELF']) )
25
- $_SERVER['PHP_SELF'] = str_replace( $_SERVER['PATH_INFO'], '', $_SERVER['PHP_SELF'] );
26
-
27
- $schema = ( isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on' ) ? 'https://' : 'http://';
28
- if ( dirname($schema . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']) != get_option('siteurl') )
29
- update_option('siteurl', dirname($schema . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']) );
30
- }
31
-
32
- //Set a cookie now to see if they are supported by the browser.
33
- setcookie(TEST_COOKIE, 'WP Cookie check', 0, COOKIEPATH, COOKIE_DOMAIN);
34
- if ( SITECOOKIEPATH != COOKIEPATH )
35
- setcookie(TEST_COOKIE, 'WP Cookie check', 0, SITECOOKIEPATH, COOKIE_DOMAIN);
36
-
37
- $http_post = ('POST' == $_SERVER['REQUEST_METHOD']);
38
- switch ($action) {
39
- case 'logout' :
40
- if ($wp_version >= '2.7')
41
- check_admin_referer('log-out');
42
- wp_logout();
43
-
44
- $redirect_to = ('widget' == $post_from) ? theme_my_login_url(array('loggedout' => 'true')) : site_url('wp-login.php?loggedout=true', 'login');
45
- if ( isset( $_REQUEST['redirect_to'] ) )
46
- $redirect_to = $_REQUEST['redirect_to'];
47
-
48
- wp_safe_redirect($redirect_to);
49
- exit();
50
- break;
51
- case 'lostpassword' :
52
- case 'retrievepassword' :
53
- if ( $http_post ) {
54
- $login_errors = retrieve_password();
55
- if ( !is_wp_error($login_errors) ) {
56
- $redirect_to = ('widget' == $post_from) ? theme_my_login_url(array('checkemail' => 'confirm')) : site_url('wp-login.php?checkemail=confirm', 'login');
57
- wp_redirect($redirect_to);
58
- exit();
59
- }
60
- }
61
-
62
- if ( isset($_GET['error']) && 'invalidkey' == $_GET['error'] )
63
- $login_errors->add('invalidkey', __('Sorry, that key does not appear to be valid.'));
64
- break;
65
- case 'resetpass' :
66
- case 'rp' :
67
- $login_errors = reset_password($_GET['key'], $_GET['login']);
68
-
69
- if ( ! is_wp_error($login_errors) ) {
70
- $redirect_to = ('widget' == $post_from) ? theme_my_login_url(array('checkemail' => 'newpass')) : site_url('wp-login.php?checkemail=newpass', 'login');
71
- wp_redirect($redirect_to);
72
- exit();
73
- }
74
-
75
- $redirect_to = ('widget' == $post_from) ? theme_my_login_url(array('action' => 'lostpassword', 'error' => 'invalidkey')) : site_url('wp-login.php?action=lostpassword&error=invalidkey', 'login');
76
- wp_redirect($redirect_to);
77
- exit();
78
- break;
79
- case 'register' :
80
- if ( !get_option('users_can_register') ) {
81
- $redirect_to = ('widget' == $post_from) ? theme_my_login_url(array('registration' => 'disabled')) : site_url('wp-login.php?registration=disabled', 'login');
82
- wp_redirect($redirect_to);
83
- exit();
84
- }
85
-
86
- if ( $http_post ) {
87
- require_once (ABSPATH . WPINC . '/registration.php');
88
-
89
- $user_login = $_POST['user_login'];
90
- $user_email = $_POST['user_email'];
91
- $login_errors = register_new_user($user_login, $user_email);
92
-
93
- if ( !is_wp_error($login_errors) ) {
94
- $redirect_to = ('widget' == $post_from) ? theme_my_login_url(array('checkemail' => 'registered')) : site_url('wp-login.php?checkemail=registered', 'login');
95
- wp_redirect($redirect_to);
96
- exit();
97
- }
98
- }
99
- break;
100
- case 'login' :
101
- $secure_cookie = '';
102
-
103
- if (isset($_GET['loggedout']))
104
- unset($_GET['loggedout']);
105
-
106
- // If the user wants ssl but the session is not ssl, force a secure cookie.
107
- if ( !empty($_POST['log']) && !force_ssl_admin() ) {
108
- $user_name = sanitize_user($_POST['log']);
109
- if ( $user = get_userdatabylogin($user_name) ) {
110
- if ( get_user_option('use_ssl', $user->ID) ) {
111
- $secure_cookie = true;
112
- force_ssl_admin(true);
113
- }
114
- }
115
- }
116
-
117
- if ( isset( $_REQUEST['redirect_to'] ) ) {
118
- $redirect_to = $_REQUEST['redirect_to'];
119
- // Redirect to https if user wants ssl
120
- if ( $secure_cookie && false !== strpos($redirect_to, 'wp-admin') )
121
- $redirect_to = preg_replace('|^http://|', 'https://', $redirect_to);
122
- } else {
123
- $redirect_to = admin_url();
124
- }
125
-
126
- if ( !$secure_cookie && is_ssl() && force_ssl_login() && !force_ssl_admin() )
127
- $secure_cookie = false;
128
-
129
- $user = wp_signon('', $secure_cookie);
130
-
131
- $redirect_to = apply_filters('login_redirect', $redirect_to, isset( $_REQUEST['redirect_to'] ) ? $_REQUEST['redirect_to'] : '', $user);
132
-
133
- if ( !is_wp_error($user) ) {
134
- // If the user can't edit posts, send them to their profile.
135
- if ( !$user->has_cap('edit_posts') && ( empty( $redirect_to ) || $redirect_to == 'wp-admin/' || $redirect_to == admin_url() ) )
136
- $redirect_to = admin_url('profile.php');
137
- wp_safe_redirect($redirect_to);
138
- exit();
139
- }
140
-
141
- $login_errors = $user;
142
- break;
143
- } // end action switch
144
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/wp-login-forms.php DELETED
@@ -1,131 +0,0 @@
1
- <?php
2
-
3
- $options = get_option('theme_my_login');
4
-
5
- require_once (WP_PLUGIN_DIR . '/theme-my-login/includes/wp-login-functions.php');
6
-
7
- $http_post = ('POST' == $_SERVER['REQUEST_METHOD']);
8
-
9
- if (empty($action))
10
- $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';
11
-
12
- if (empty($type))
13
- $type = 'page';
14
-
15
- switch ($action) :
16
-
17
- case 'lostpassword' :
18
- case 'retrievepassword' :
19
- do_action('lost_password');
20
- login_header('<p class="message">' . $options['password_msg'] . '</p>', $login_errors);
21
-
22
- $user_login = isset($_POST['user_login']) ? stripslashes($_POST['user_login']) : '';
23
- ?>
24
-
25
- <form name="lostpasswordform" id="lostpasswordform" action="" method="post">
26
- <p>
27
- <label><?php _e('Username or E-mail:') ?><br />
28
- <input type="text" name="user_login" id="user_login" class="input" value="<?php echo attribute_escape($user_login); ?>" size="20" /></label>
29
- </p>
30
- <?php do_action('lostpassword_form'); ?>
31
- <p class="submit">
32
- <input type="hidden" name="post-from" id="post-from" value="<?php echo $type; ?>" />
33
- <input type="hidden" name="action" id="action" value="lostpassword" />
34
- <input type="submit" name="wp-submit" id="wp-submit" value="<?php _e('Get New Password'); ?>" />
35
- </p>
36
- </form>
37
-
38
- <?php
39
- login_footer($type, $action);
40
- break;
41
-
42
- case 'register' :
43
- $user_login = isset($_POST['user_login']) ? $_POST['user_login'] : '';
44
- $user_email = isset($_POST['user_email']) ? $_POST['user_email'] : '';
45
- login_header('', $login_errors);
46
- ?>
47
-
48
- <form name="registerform" id="registerform" action="" method="post">
49
- <p>
50
- <label><?php _e('Username') ?><br />
51
- <input type="text" name="user_login" id="user_login" class="input" value="<?php echo attribute_escape(stripslashes($user_login)); ?>" size="20" /></label>
52
- </p>
53
- <p>
54
- <label><?php _e('E-mail') ?><br />
55
- <input type="text" name="user_email" id="user_email" class="input" value="<?php echo attribute_escape(stripslashes($user_email)); ?>" size="20" /></label>
56
- </p>
57
- <?php do_action('register_form'); ?>
58
- <p id="reg_passmail"><?php echo $options['register_msg']; ?></p>
59
- <p class="submit">
60
- <input type="hidden" name="post-from" id="post-from" value="<?php echo $type; ?>" />
61
- <input type="hidden" name="action" id="action" value="register" />
62
- <input type="submit" name="wp-submit" id="wp-submit" value="<?php _e('Register'); ?>" />
63
- </p>
64
- </form>
65
-
66
- <?php
67
- login_footer($type, $action);
68
- break;
69
-
70
- case 'login' :
71
- default :
72
-
73
- if ( isset( $_REQUEST['redirect_to'] ) ) {
74
- $redirect_to = $_REQUEST['redirect_to'];
75
- // Redirect to https if user wants ssl
76
- if ( isset($secure_cookie) && false !== strpos($redirect_to, 'wp-admin') )
77
- $redirect_to = preg_replace('|^http://|', 'https://', $redirect_to);
78
- } else {
79
- $redirect_to = admin_url();
80
- }
81
-
82
- $redirect_to = apply_filters('login_redirect', $redirect_to, isset( $_REQUEST['redirect_to'] ) ? $_REQUEST['redirect_to'] : '', isset( $user ) ? $user : '');
83
-
84
- // Clear errors if loggedout is set.
85
- if ( !empty($_GET['loggedout']) )
86
- $login_errors = new WP_Error();
87
-
88
- // If cookies are disabled we can't log in even with a valid user+pass
89
- if ( isset($_POST['testcookie']) && empty($_COOKIE[TEST_COOKIE]) )
90
- $login_errors->add('test_cookie', __("<strong>ERROR</strong>: Cookies are blocked or not supported by your browser. You must <a href='http://www.google.com/cookies.html'>enable cookies</a> to use WordPress."));
91
-
92
- // Some parts of this script use the main login form to display a message
93
- if ( isset($_GET['loggedout']) && TRUE == $_GET['loggedout'] ) $login_errors->add('loggedout', __('You are now logged out.'), 'message');
94
- elseif ( isset($_GET['registration']) && 'disabled' == $_GET['registration'] ) $login_errors->add('registerdisabled', __('User registration is currently not allowed.'));
95
- elseif ( isset($_GET['checkemail']) && 'confirm' == $_GET['checkemail'] ) $login_errors->add('confirm', __('Check your e-mail for the confirmation link.'), 'message');
96
- elseif ( isset($_GET['checkemail']) && 'newpass' == $_GET['checkemail'] ) $login_errors->add('newpass', __('Check your e-mail for your new password.'), 'message');
97
- elseif ( isset($_GET['checkemail']) && 'registered' == $_GET['checkemail'] ) $login_errors->add('registered', $options['register_complete'], 'message');
98
-
99
- login_header('', $login_errors);
100
-
101
- if ( isset($_POST['log']) )
102
- $user_login = ( 'incorrect_password' == $login_errors->get_error_code() || 'empty_password' == $login_errors->get_error_code() ) ? attribute_escape(stripslashes($_POST['log'])) : '';
103
- ?>
104
- <?php if ( !isset($_GET['checkemail']) || !in_array( $_GET['checkemail'], array('confirm', 'newpass') ) ) : ?>
105
- <form name="loginform" id="loginform" action="" method="post">
106
- <p>
107
- <label><?php _e('Username') ?><br />
108
- <input type="text" name="log" id="user_login" class="input" value="<?php echo isset($user_login) ? $user_login : ''; ?>" size="20" /></label>
109
- </p>
110
- <p>
111
- <label><?php _e('Password') ?><br />
112
- <input type="password" name="pwd" id="user_pass" class="input" value="" size="20" /></label>
113
- </p>
114
- <?php do_action('login_form'); ?>
115
- <p class="forgetmenot"><label><input name="rememberme" type="checkbox" id="rememberme" value="forever" /> <?php _e('Remember Me'); ?></label></p>
116
- <p class="submit">
117
- <input type="hidden" name="post-from" id="post-from" value="<?php echo $type; ?>" />
118
- <input type="hidden" name="action" id="action" value="login" />
119
- <input type="submit" name="wp-submit" id="wp-submit" value="<?php _e('Log In'); ?>" />
120
- <input type="hidden" name="redirect_to" value="<?php echo attribute_escape($redirect_to); ?>" />
121
- <input type="hidden" name="testcookie" value="1" />
122
- </p>
123
- </form>
124
- <?php endif; ?>
125
-
126
- <?php
127
- login_footer($type, $action);
128
- break;
129
-
130
- endswitch;
131
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/wp-login-functions.php DELETED
@@ -1,244 +0,0 @@
1
- <?php
2
-
3
- if (!function_exists('theme_my_login_url')) :
4
- function theme_my_login_url($args = array()) {
5
- $login_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://';
6
-
7
- if ($_SERVER["SERVER_PORT"] != "80") {
8
- $login_url .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
9
- } else {
10
- $login_url .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
11
- }
12
-
13
- $keys = array('action', 'checkemail', 'error', 'loggedout', 'registered', 'redirect_to', 'updated', 'key');
14
- $login_url = remove_query_arg($keys, $login_url);
15
-
16
- if (!empty($args)) {
17
- foreach ($args as $key => $value)
18
- $login_url = add_query_arg($key, $value, $login_url);
19
- }
20
-
21
- return $login_url;
22
- }
23
- endif;
24
-
25
- if (!function_exists('login_header')) :
26
- function login_header($message = '', $wp_error = '') {
27
- global $error;
28
-
29
- if ( empty($wp_error) )
30
- $wp_error = new WP_Error();
31
-
32
- echo '<div id="login">';
33
-
34
- if ( !empty( $message ) ) echo apply_filters('login_message', $message) . "\n";
35
-
36
- // Incase a plugin uses $error rather than the $errors object
37
- if ( !empty( $error ) ) {
38
- $wp_error->add('error', $error);
39
- unset($error);
40
- }
41
-
42
- if ( $wp_error->get_error_code() ) {
43
- $errors = '';
44
- $messages = '';
45
- foreach ( $wp_error->get_error_codes() as $code ) {
46
- $severity = $wp_error->get_error_data($code);
47
- foreach ( $wp_error->get_error_messages($code) as $error ) {
48
- if ( 'message' == $severity )
49
- $messages .= ' ' . $error . "<br />\n";
50
- else
51
- $errors .= ' ' . $error . "<br />\n";
52
- }
53
- }
54
- if ( !empty($errors) )
55
- echo '<p class="error">' . apply_filters('login_errors', $errors) . "</p>\n";
56
- if ( !empty($messages) )
57
- echo '<p class="message">' . apply_filters('login_messages', $messages) . "</p>\n";
58
- }
59
- $error = '';
60
- }
61
- endif;
62
-
63
- if (!function_exists('login_footer')) :
64
- function login_footer($type = 'page', $action = '') {
65
- $options = get_option('theme_my_login');
66
-
67
- if (empty($action))
68
- $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'login';
69
-
70
- $guess_url = remove_query_arg('loggedout');
71
-
72
- echo '<ul class="links">' . "\n";
73
- if (in_array($action, array('register', 'lostpassword')) || $action == 'login' && isset($_GET['checkemail']) && 'registered' != $_GET['checkemail']) {
74
- $url = ($type == 'widget') ? add_query_arg('action', 'login', $guess_url) : site_url('wp-login.php', 'login');
75
- echo '<li><a href="' . $url . '">' . __('Log in') . '</a></li>' . "\n";
76
- }
77
- if (get_option('users_can_register') && $action != 'register') {
78
- $url = ($type == 'widget' && $options['widget_allow_register']) ? add_query_arg('action', 'register', $guess_url) : site_url('wp-login.php?action=register', 'login');
79
- echo '<li><a href="' . $url . '">' . __('Register') . '</a></li>' . "\n";
80
- }
81
- if ($action != 'lostpassword') {
82
- $url = ($type == 'widget' && $options['widget_allow_password']) ? add_query_arg('action', 'lostpassword', $guess_url) : site_url('wp-login.php?action=lostpassword', 'login');
83
- echo '<li><a href="' . $url . '" title="' . __('Password Lost and Found') . '">' . __('Lost your password?') . '</a></li>' . "\n";
84
- }
85
- echo '</ul>' . "\n";
86
- echo '</div>' . "\n";
87
- }
88
- endif;
89
-
90
- if (!function_exists('retrieve_password')) :
91
- function retrieve_password() {
92
- global $wpdb;
93
-
94
- $errors = new WP_Error();
95
-
96
- if ( empty( $_POST['user_login'] ) && empty( $_POST['user_email'] ) )
97
- $errors->add('empty_username', __('<strong>ERROR</strong>: Enter a username or e-mail address.'));
98
-
99
- if ( strpos($_POST['user_login'], '@') ) {
100
- $user_data = get_user_by_email(trim($_POST['user_login']));
101
- if ( empty($user_data) )
102
- $errors->add('invalid_email', __('<strong>ERROR</strong>: There is no user registered with that email address.'));
103
- } else {
104
- $login = trim($_POST['user_login']);
105
- $user_data = get_userdatabylogin($login);
106
- }
107
-
108
- do_action('lostpassword_post');
109
-
110
- if ( $errors->get_error_code() )
111
- return $errors;
112
-
113
- if ( !$user_data ) {
114
- $errors->add('invalidcombo', __('<strong>ERROR</strong>: Invalid username or e-mail.'));
115
- return $errors;
116
- }
117
-
118
- // redefining user_login ensures we return the right case in the email
119
- $user_login = $user_data->user_login;
120
- $user_email = $user_data->user_email;
121
-
122
- do_action('retreive_password', $user_login); // Misspelled and deprecated
123
- do_action('retrieve_password', $user_login);
124
-
125
- $allow = apply_filters('allow_password_reset', true, $user_data->ID);
126
-
127
- if ( ! $allow )
128
- return new WP_Error('no_password_reset', __('Password reset is not allowed for this user'));
129
- else if ( is_wp_error($allow) )
130
- return $allow;
131
-
132
- $key = $wpdb->get_var($wpdb->prepare("SELECT user_activation_key FROM $wpdb->users WHERE user_login = %s", $user_login));
133
- if ( empty($key) ) {
134
- // Generate something random for a key...
135
- $key = wp_generate_password(20, false);
136
- do_action('retrieve_password_key', $user_login, $key);
137
- // Now insert the new md5 key into the db
138
- $wpdb->update($wpdb->users, array('user_activation_key' => $key), array('user_login' => $user_login));
139
- }
140
- $message = __('Someone has asked to reset the password for the following site and username.') . "\r\n\r\n";
141
- $message .= get_option('siteurl') . "\r\n\r\n";
142
- $message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
143
- $message .= __('To reset your password visit the following address, otherwise just ignore this email and nothing will happen.') . "\r\n\r\n";
144
- $message .= site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . "\r\n";
145
-
146
- $title = sprintf(__('[%s] Password Reset'), get_option('blogname'));
147
-
148
- $title = apply_filters('retrieve_password_title', $title);
149
- $message = apply_filters('retrieve_password_message', $message, $key);
150
-
151
- if ( $message && !wp_mail($user_email, $title, $message) )
152
- die('<p>' . __('The e-mail could not be sent.') . "<br />\n" . __('Possible reason: your host may have disabled the mail() function...') . '</p>');
153
-
154
- return true;
155
- }
156
- endif;
157
-
158
- if (!function_exists('reset_password')) :
159
- function reset_password($key, $login) {
160
- global $wpdb;
161
-
162
- $key = preg_replace('/[^a-z0-9]/i', '', $key);
163
-
164
- if ( empty( $key ) || !is_string( $key ) )
165
- return new WP_Error('invalid_key', __('Invalid key'));
166
-
167
- if ( empty($login) || !is_string($login) )
168
- return new WP_Error('invalid_key', __('Invalid key'));
169
-
170
- $user = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->users WHERE user_activation_key = %s AND user_login = %s", $key, $login));
171
- if ( empty( $user ) )
172
- return new WP_Error('invalid_key', __('Invalid key'));
173
-
174
- // Generate something random for a password...
175
- $new_pass = wp_generate_password();
176
-
177
- do_action('password_reset', $user, $new_pass);
178
-
179
- wp_set_password($new_pass, $user->ID);
180
- update_usermeta($user->ID, 'default_password_nag', true); //Set up the Password change nag.
181
- $message = sprintf(__('Username: %s'), $user->user_login) . "\r\n";
182
- $message .= sprintf(__('Password: %s'), $new_pass) . "\r\n";
183
- $message .= site_url('wp-login.php', 'login') . "\r\n";
184
-
185
- $title = sprintf(__('[%s] Your new password'), get_option('blogname'));
186
-
187
- $title = apply_filters('password_reset_title', $title);
188
- $message = apply_filters('password_reset_message', $message, $new_pass);
189
-
190
- if ( $message && !wp_mail($user->user_email, $title, $message) )
191
- die('<p>' . __('The e-mail could not be sent.') . "<br />\n" . __('Possible reason: your host may have disabled the mail() function...') . '</p>');
192
-
193
- wp_password_change_notification($user);
194
-
195
- return true;
196
- }
197
- endif;
198
-
199
- if (!function_exists('register_new_user')) :
200
- function register_new_user($user_login, $user_email) {
201
- $errors = new WP_Error();
202
-
203
- $user_login = sanitize_user( $user_login );
204
- $user_email = apply_filters( 'user_registration_email', $user_email );
205
-
206
- // Check the username
207
- if ( $user_login == '' )
208
- $errors->add('empty_username', __('<strong>ERROR</strong>: Please enter a username.'));
209
- elseif ( !validate_username( $user_login ) ) {
210
- $errors->add('invalid_username', __('<strong>ERROR</strong>: This username is invalid. Please enter a valid username.'));
211
- $user_login = '';
212
- } elseif ( username_exists( $user_login ) )
213
- $errors->add('username_exists', __('<strong>ERROR</strong>: This username is already registered, please choose another one.'));
214
-
215
- // Check the e-mail address
216
- if ($user_email == '') {
217
- $errors->add('empty_email', __('<strong>ERROR</strong>: Please type your e-mail address.'));
218
- } elseif ( !is_email( $user_email ) ) {
219
- $errors->add('invalid_email', __('<strong>ERROR</strong>: The email address isn&#8217;t correct.'));
220
- $user_email = '';
221
- } elseif ( email_exists( $user_email ) )
222
- $errors->add('email_exists', __('<strong>ERROR</strong>: This email is already registered, please choose another one.'));
223
-
224
- do_action('register_post', $user_login, $user_email, $errors);
225
-
226
- $errors = apply_filters( 'registration_errors', $errors );
227
-
228
- if ( $errors->get_error_code() )
229
- return $errors;
230
-
231
- $user_pass = wp_generate_password();
232
- $user_id = wp_create_user( $user_login, $user_pass, $user_email );
233
- if ( !$user_id ) {
234
- $errors->add('registerfail', sprintf(__('<strong>ERROR</strong>: Couldn&#8217;t register you... please contact the <a href="mailto:%s">webmaster</a> !'), get_option('admin_email')));
235
- return $errors;
236
- }
237
-
238
- wp_new_user_notification($user_id, $user_pass);
239
-
240
- return $user_id;
241
- }
242
- endif;
243
-
244
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/jquery/jquery.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jQuery JavaScript Library v1.3.2
3
+ * http://jquery.com/
4
+ *
5
+ * Copyright (c) 2009 John Resig
6
+ * Dual licensed under the MIT and GPL licenses.
7
+ * http://docs.jquery.com/License
8
+ *
9
+ * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
10
+ * Revision: 6246
11
+ */
12
+ (function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
13
+ /*
14
+ * Sizzle CSS Selector Engine - v0.9.3
15
+ * Copyright 2009, The Dojo Foundation
16
+ * Released under the MIT, BSD, and GPL Licenses.
17
+ * More information: http://sizzlejs.com/
18
+ */
19
+ (function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML=' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
20
+ jQuery.noConflict();
js/jquery/ui.core.js ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jQuery UI 1.7.1
3
+ *
4
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
5
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
6
+ * and GPL (GPL-LICENSE.txt) licenses.
7
+ *
8
+ * http://docs.jquery.com/UI
9
+ */
10
+ jQuery.ui||(function(c){var i=c.fn.remove,d=c.browser.mozilla&&(parseFloat(c.browser.version)<1.9);c.ui={version:"1.7.1",plugin:{add:function(k,l,n){var m=c.ui[k].prototype;for(var j in n){m.plugins[j]=m.plugins[j]||[];m.plugins[j].push([l,n[j]])}},call:function(j,l,k){var n=j.plugins[l];if(!n||!j.element[0].parentNode){return}for(var m=0;m<n.length;m++){if(j.options[n[m][0]]){n[m][1].apply(j.element,k)}}}},contains:function(k,j){return document.compareDocumentPosition?k.compareDocumentPosition(j)&16:k!==j&&k.contains(j)},hasScroll:function(m,k){if(c(m).css("overflow")=="hidden"){return false}var j=(k&&k=="left")?"scrollLeft":"scrollTop",l=false;if(m[j]>0){return true}m[j]=1;l=(m[j]>0);m[j]=0;return l},isOverAxis:function(k,j,l){return(k>j)&&(k<(j+l))},isOver:function(o,k,n,m,j,l){return c.ui.isOverAxis(o,n,j)&&c.ui.isOverAxis(k,m,l)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};if(d){var f=c.attr,e=c.fn.removeAttr,h="http://www.w3.org/2005/07/aaa",a=/^aria-/,b=/^wairole:/;c.attr=function(k,j,l){var m=l!==undefined;return(j=="role"?(m?f.call(this,k,j,"wairole:"+l):(f.apply(this,arguments)||"").replace(b,"")):(a.test(j)?(m?k.setAttributeNS(h,j.replace(a,"aaa:"),l):f.call(this,k,j.replace(a,"aaa:"))):f.apply(this,arguments)))};c.fn.removeAttr=function(j){return(a.test(j)?this.each(function(){this.removeAttributeNS(h,j.replace(a,""))}):e.call(this,j))}}c.fn.extend({remove:function(){c("*",this).add(this).each(function(){c(this).triggerHandler("remove")});return i.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var j;if((c.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){j=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(c.curCSS(this,"position",1))&&(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}else{j=this.parents().filter(function(){return(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!j.length?c(document):j}});c.extend(c.expr[":"],{data:function(l,k,j){return !!c.data(l,j[3])},focusable:function(k){var l=k.nodeName.toLowerCase(),j=c.attr(k,"tabindex");return(/input|select|textarea|button|object/.test(l)?!k.disabled:"a"==l||"area"==l?k.href||!isNaN(j):!isNaN(j))&&!c(k)["area"==l?"parents":"closest"](":hidden").length},tabbable:function(k){var j=c.attr(k,"tabindex");return(isNaN(j)||j>=0)&&c(k).is(":focusable")}});function g(m,n,o,l){function k(q){var p=c[m][n][q]||[];return(typeof p=="string"?p.split(/,?\s+/):p)}var j=k("getter");if(l.length==1&&typeof l[0]=="string"){j=j.concat(k("getterSetter"))}return(c.inArray(o,j)!=-1)}c.widget=function(k,j){var l=k.split(".")[0];k=k.split(".")[1];c.fn[k]=function(p){var n=(typeof p=="string"),o=Array.prototype.slice.call(arguments,1);if(n&&p.substring(0,1)=="_"){return this}if(n&&g(l,k,p,o)){var m=c.data(this[0],k);return(m?m[p].apply(m,o):undefined)}return this.each(function(){var q=c.data(this,k);(!q&&!n&&c.data(this,k,new c[l][k](this,p))._init());(q&&n&&c.isFunction(q[p])&&q[p].apply(q,o))})};c[l]=c[l]||{};c[l][k]=function(o,n){var m=this;this.namespace=l;this.widgetName=k;this.widgetEventPrefix=c[l][k].eventPrefix||k;this.widgetBaseClass=l+"-"+k;this.options=c.extend({},c.widget.defaults,c[l][k].defaults,c.metadata&&c.metadata.get(o)[k],n);this.element=c(o).bind("setData."+k,function(q,p,r){if(q.target==o){return m._setData(p,r)}}).bind("getData."+k,function(q,p){if(q.target==o){return m._getData(p)}}).bind("remove",function(){return m.destroy()})};c[l][k].prototype=c.extend({},c.widget.prototype,j);c[l][k].getterSetter="option"};c.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled")},option:function(l,m){var k=l,j=this;if(typeof l=="string"){if(m===undefined){return this._getData(l)}k={};k[l]=m}c.each(k,function(n,o){j._setData(n,o)})},_getData:function(j){return this.options[j]},_setData:function(j,k){this.options[j]=k;if(j=="disabled"){this.element[k?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",k)}},enable:function(){this._setData("disabled",false)},disable:function(){this._setData("disabled",true)},_trigger:function(l,m,n){var p=this.options[l],j=(l==this.widgetEventPrefix?l:this.widgetEventPrefix+l);m=c.Event(m);m.type=j;if(m.originalEvent){for(var k=c.event.props.length,o;k;){o=c.event.props[--k];m[o]=m.originalEvent[o]}}this.element.trigger(m,n);return !(c.isFunction(p)&&p.call(this.element[0],m,n)===false||m.isDefaultPrevented())}};c.widget.defaults={disabled:false};c.ui.mouse={_mouseInit:function(){var j=this;this.element.bind("mousedown."+this.widgetName,function(k){return j._mouseDown(k)}).bind("click."+this.widgetName,function(k){if(j._preventClickEvent){j._preventClickEvent=false;k.stopImmediatePropagation();return false}});if(c.browser.msie){this._mouseUnselectable=this.element.attr("unselectable");this.element.attr("unselectable","on")}this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName);(c.browser.msie&&this.element.attr("unselectable",this._mouseUnselectable))},_mouseDown:function(l){l.originalEvent=l.originalEvent||{};if(l.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(l));this._mouseDownEvent=l;var k=this,m=(l.which==1),j=(typeof this.options.cancel=="string"?c(l.target).parents().add(l.target).filter(this.options.cancel).length:false);if(!m||j||!this._mouseCapture(l)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){k.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(l)&&this._mouseDelayMet(l)){this._mouseStarted=(this._mouseStart(l)!==false);if(!this._mouseStarted){l.preventDefault();return true}}this._mouseMoveDelegate=function(n){return k._mouseMove(n)};this._mouseUpDelegate=function(n){return k._mouseUp(n)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(c.browser.safari||l.preventDefault());l.originalEvent.mouseHandled=true;return true},_mouseMove:function(j){if(c.browser.msie&&!j.button){return this._mouseUp(j)}if(this._mouseStarted){this._mouseDrag(j);return j.preventDefault()}if(this._mouseDistanceMet(j)&&this._mouseDelayMet(j)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,j)!==false);(this._mouseStarted?this._mouseDrag(j):this._mouseUp(j))}return !this._mouseStarted},_mouseUp:function(j){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(j.target==this._mouseDownEvent.target);this._mouseStop(j)}return false},_mouseDistanceMet:function(j){return(Math.max(Math.abs(this._mouseDownEvent.pageX-j.pageX),Math.abs(this._mouseDownEvent.pageY-j.pageY))>=this.options.distance)},_mouseDelayMet:function(j){return this.mouseDelayMet},_mouseStart:function(j){},_mouseDrag:function(j){},_mouseStop:function(j){},_mouseCapture:function(j){return true}};c.ui.mouse.defaults={cancel:null,distance:1,delay:0}})(jQuery);
js/jquery/ui.tabs.js ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jQuery UI Tabs 1.7.1
3
+ *
4
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
5
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
6
+ * and GPL (GPL-LICENSE.txt) licenses.
7
+ *
8
+ * http://docs.jquery.com/UI/Tabs
9
+ *
10
+ * Depends:
11
+ * ui.core.js
12
+ */
13
+ (function(a){a.widget("ui.tabs",{_init:function(){if(this.options.deselectable!==undefined){this.options.collapsible=this.options.deselectable}this._tabify(true)},_setData:function(b,c){if(b=="selected"){if(this.options.collapsible&&c==this.options.selected){return}this.select(c)}else{this.options[b]=c;if(b=="deselectable"){this.options.collapsible=c}this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+a.data(b)},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+a.data(this.list[0]));return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(c,b){return{tab:c,panel:b,index:this.anchors.index(c)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(n){this.list=this.element.children("ul:first");this.lis=a("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return a("a",this)[0]});this.panels=a([]);var p=this,d=this.options;var c=/^#.+/;this.anchors.each(function(r,o){var q=a(o).attr("href");var s=q.split("#")[0],u;if(s&&(s===location.toString().split("#")[0]||(u=a("base")[0])&&s===u.href)){q=o.hash;o.href=q}if(c.test(q)){p.panels=p.panels.add(p._sanitizeSelector(q))}else{if(q!="#"){a.data(o,"href.tabs",q);a.data(o,"load.tabs",q.replace(/#.*$/,""));var w=p._tabId(o);o.href="#"+w;var v=a("#"+w);if(!v.length){v=a(d.panelTemplate).attr("id",w).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(p.panels[r-1]||p.list);v.data("destroy.tabs",true)}p.panels=p.panels.add(v)}else{d.disabled.push(r)}}});if(n){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(d.selected===undefined){if(location.hash){this.anchors.each(function(q,o){if(o.hash==location.hash){d.selected=q;return false}})}if(typeof d.selected!="number"&&d.cookie){d.selected=parseInt(p._cookie(),10)}if(typeof d.selected!="number"&&this.lis.filter(".ui-tabs-selected").length){d.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))}d.selected=d.selected||0}else{if(d.selected===null){d.selected=-1}}d.selected=((d.selected>=0&&this.anchors[d.selected])||d.selected<0)?d.selected:0;d.disabled=a.unique(d.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(q,o){return p.lis.index(q)}))).sort();if(a.inArray(d.selected,d.disabled)!=-1){d.disabled.splice(a.inArray(d.selected,d.disabled),1)}this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");if(d.selected>=0&&this.anchors.length){this.panels.eq(d.selected).removeClass("ui-tabs-hide");this.lis.eq(d.selected).addClass("ui-tabs-selected ui-state-active");p.element.queue("tabs",function(){p._trigger("show",null,p._ui(p.anchors[d.selected],p.panels[d.selected]))});this.load(d.selected)}a(window).bind("unload",function(){p.lis.add(p.anchors).unbind(".tabs");p.lis=p.anchors=p.panels=null})}else{d.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))}this.element[d.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");if(d.cookie){this._cookie(d.selected,d.cookie)}for(var g=0,m;(m=this.lis[g]);g++){a(m)[a.inArray(g,d.disabled)!=-1&&!a(m).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled")}if(d.cache===false){this.anchors.removeData("cache.tabs")}this.lis.add(this.anchors).unbind(".tabs");if(d.event!="mouseover"){var f=function(o,i){if(i.is(":not(.ui-state-disabled)")){i.addClass("ui-state-"+o)}};var j=function(o,i){i.removeClass("ui-state-"+o)};this.lis.bind("mouseover.tabs",function(){f("hover",a(this))});this.lis.bind("mouseout.tabs",function(){j("hover",a(this))});this.anchors.bind("focus.tabs",function(){f("focus",a(this).closest("li"))});this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var b,h;if(d.fx){if(a.isArray(d.fx)){b=d.fx[0];h=d.fx[1]}else{b=h=d.fx}}function e(i,o){i.css({display:""});if(a.browser.msie&&o.opacity){i[0].style.removeAttribute("filter")}}var k=h?function(i,o){a(i).closest("li").removeClass("ui-state-default").addClass("ui-tabs-selected ui-state-active");o.hide().removeClass("ui-tabs-hide").animate(h,h.duration||"normal",function(){e(o,h);p._trigger("show",null,p._ui(i,o[0]))})}:function(i,o){a(i).closest("li").removeClass("ui-state-default").addClass("ui-tabs-selected ui-state-active");o.removeClass("ui-tabs-hide");p._trigger("show",null,p._ui(i,o[0]))};var l=b?function(o,i){i.animate(b,b.duration||"normal",function(){p.lis.removeClass("ui-tabs-selected ui-state-active").addClass("ui-state-default");i.addClass("ui-tabs-hide");e(i,b);p.element.dequeue("tabs")})}:function(o,i,q){p.lis.removeClass("ui-tabs-selected ui-state-active").addClass("ui-state-default");i.addClass("ui-tabs-hide");p.element.dequeue("tabs")};this.anchors.bind(d.event+".tabs",function(){var o=this,r=a(this).closest("li"),i=p.panels.filter(":not(.ui-tabs-hide)"),q=a(p._sanitizeSelector(this.hash));if((r.hasClass("ui-tabs-selected")&&!d.collapsible)||r.hasClass("ui-state-disabled")||r.hasClass("ui-state-processing")||p._trigger("select",null,p._ui(this,q[0]))===false){this.blur();return false}d.selected=p.anchors.index(this);p.abort();if(d.collapsible){if(r.hasClass("ui-tabs-selected")){d.selected=-1;if(d.cookie){p._cookie(d.selected,d.cookie)}p.element.queue("tabs",function(){l(o,i)}).dequeue("tabs");this.blur();return false}else{if(!i.length){if(d.cookie){p._cookie(d.selected,d.cookie)}p.element.queue("tabs",function(){k(o,q)});p.load(p.anchors.index(this));this.blur();return false}}}if(d.cookie){p._cookie(d.selected,d.cookie)}if(q.length){if(i.length){p.element.queue("tabs",function(){l(o,i)})}p.element.queue("tabs",function(){k(o,q)});p.load(p.anchors.index(this))}else{throw"jQuery UI Tabs: Mismatching fragment identifier."}if(a.browser.msie){this.blur()}});this.anchors.bind("click.tabs",function(){return false})},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var c=a.data(this,"href.tabs");if(c){this.href=c}var d=a(this).unbind(".tabs");a.each(["href","load","cache"],function(e,f){d.removeData(f+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){if(a.data(this,"destroy.tabs")){a(this).remove()}else{a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}});if(b.cookie){this._cookie(null,b.cookie)}},add:function(e,d,c){if(c===undefined){c=this.anchors.length}var b=this,g=this.options,i=a(g.tabTemplate.replace(/#\{href\}/g,e).replace(/#\{label\}/g,d)),h=!e.indexOf("#")?e.replace("#",""):this._tabId(a("a",i)[0]);i.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var f=a("#"+h);if(!f.length){f=a(g.panelTemplate).attr("id",h).data("destroy.tabs",true)}f.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(c>=this.lis.length){i.appendTo(this.list);f.appendTo(this.list[0].parentNode)}else{i.insertBefore(this.lis[c]);f.insertBefore(this.panels[c])}g.disabled=a.map(g.disabled,function(k,j){return k>=c?++k:k});this._tabify();if(this.anchors.length==1){i.addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[0],b.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[c],this.panels[c]))},remove:function(b){var d=this.options,e=this.lis.eq(b).remove(),c=this.panels.eq(b).remove();if(e.hasClass("ui-tabs-selected")&&this.anchors.length>1){this.select(b+(b+1<this.anchors.length?1:-1))}d.disabled=a.map(a.grep(d.disabled,function(g,f){return g!=b}),function(g,f){return g>=b?--g:g});this._tabify();this._trigger("remove",null,this._ui(e.find("a")[0],c[0]))},enable:function(b){var c=this.options;if(a.inArray(b,c.disabled)==-1){return}this.lis.eq(b).removeClass("ui-state-disabled");c.disabled=a.grep(c.disabled,function(e,d){return e!=b});this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b]))},disable:function(c){var b=this,d=this.options;if(c!=d.selected){this.lis.eq(c).addClass("ui-state-disabled");d.disabled.push(c);d.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[c],this.panels[c]))}},select:function(b){if(typeof b=="string"){b=this.anchors.index(this.anchors.filter("[href$="+b+"]"))}else{if(b===null){b=-1}}if(b==-1&&this.options.collapsible){b=this.options.selected}this.anchors.eq(b).trigger(this.options.event+".tabs")},load:function(e){var c=this,g=this.options,b=this.anchors.eq(e)[0],d=a.data(b,"load.tabs");this.abort();if(!d||this.element.queue("tabs").length!==0&&a.data(b,"cache.tabs")){this.element.dequeue("tabs");return}this.lis.eq(e).addClass("ui-state-processing");if(g.spinner){var f=a("span",b);f.data("label.tabs",f.html()).html(g.spinner)}this.xhr=a.ajax(a.extend({},g.ajaxOptions,{url:d,success:function(i,h){a(c._sanitizeSelector(b.hash)).html(i);c._cleanup();if(g.cache){a.data(b,"cache.tabs",true)}c._trigger("load",null,c._ui(c.anchors[e],c.panels[e]));try{g.ajaxOptions.success(i,h)}catch(j){}c.element.dequeue("tabs")}}))},abort:function(){this.element.queue([]);this.panels.stop(false,true);if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup()},url:function(c,b){this.anchors.eq(c).removeData("cache.tabs").data("load.tabs",b)},length:function(){return this.anchors.length}});a.extend(a.ui.tabs,{version:"1.7.1",getter:"length",defaults:{ajaxOptions:null,cache:false,cookie:null,collapsible:false,disabled:[],event:"click",fx:null,idPrefix:"ui-tabs-",panelTemplate:"<div></div>",spinner:"<em>Loading&#8230;</em>",tabTemplate:'<li><a href="#{href}"><span>#{label}</span></a></li>'}});a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(d,f){var b=this,g=this.options;var c=b._rotate||(b._rotate=function(h){clearTimeout(b.rotation);b.rotation=setTimeout(function(){var i=g.selected;b.select(++i<b.anchors.length?i:0)},d);if(h){h.stopPropagation()}});var e=b._unrotate||(b._unrotate=!f?function(h){if(h.clientX){b.rotate(null)}}:function(h){t=g.selected;c()});if(d){this.element.bind("tabsshow",c);this.anchors.bind(g.event+".tabs",e);c()}else{clearTimeout(b.rotation);this.element.unbind("tabsshow",c);this.anchors.unbind(g.event+".tabs",e);delete this._rotate;delete this._unrotate}}})})(jQuery);
js/theme-my-login-admin.js.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $version = ( isset($_GET['ver']) ) ? $_GET['ver'] : '';
4
+
5
+ header("content-type: application/x-javascript");
6
+
7
+ ?>
8
+
9
+ jQuery(document).ready(function($){
10
+
11
+ $("#container, #container div").tabs({ fx: { opacity: 'toggle', duration: 'fast' } });
12
+
13
+ $("a.link").live("click", function() {
14
+ var arr = $(this).attr("class").split(" ");
15
+ var action = arr[1];
16
+ var role = arr[2];
17
+ var count = $("#links-" + role + " tbody>tr").size();
18
+ if ('add' == action) {
19
+ $("#links-" + role + " tbody>tr:last").clone(true).insertAfter("#links-" + role + " tbody>tr:last");
20
+ var curclass = $("#links-" + role + " tbody>tr:last").attr("class");
21
+ var newclass = ('alternate' == curclass) ? '' : 'alternate';
22
+ $("#links-" + role + " tbody>tr:last").attr("class", newclass);
23
+ $("#links-" + role + " tbody>tr:last").attr("id", "link-row-" + count);
24
+ $("#links-" + role + " tbody>tr:last input.link-title").attr("id", "links[" + role + "][" + count + "][title]");
25
+ $("#links-" + role + " tbody>tr:last input.link-title").attr("name", "links[" + role + "][" + count + "][title]");
26
+ $("#links-" + role + " tbody>tr:last input.link-url").attr("id", "links[" + role + "][" + count + "][url]");
27
+ $("#links-" + role + " tbody>tr:last input.link-url").attr("name", "links[" + role + "][" + count + "][url]");
28
+ $("#links-" + role + " tbody>tr:last input.link-title").attr("value", "");
29
+ $("#links-" + role + " tbody>tr:last input.link-url").attr("value", "");
30
+ $("#links-" + role + " tbody>tr:last input.link-title").focus();
31
+ updateButtons();
32
+ } else {
33
+ $(this).parent().parent().parent().remove();
34
+ updateButtons();
35
+ }
36
+ return false;
37
+ });
38
+ updateButtons();
39
+ });
40
+
41
+ function updateButtons() {
42
+ jQuery(".link-table a.link.remove").show();
43
+ jQuery(".link-table a.link.add").hide();
44
+ jQuery(".link-table").each(function(i) {
45
+ jQuery("#" + this.id + " a.link.add:last").show();
46
+ });
47
+ }
language/theme-my-login-es_ES.mo DELETED
Binary file
language/theme-my-login-fr_FR.mo DELETED
Binary file
language/theme-my-login-fr_FR.po DELETED
@@ -1,368 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: 3.2.3\n"
4
- "Report-Msgid-Bugs-To: http://wordpress.org/tag/theme-my-login\n"
5
- "POT-Creation-Date: 2009-07-23 23:24+0000\n"
6
- "PO-Revision-Date: \n"
7
- "Last-Translator: Bertrand Benoît <infos@benoit-bertrand.be>\n"
8
- "Language-Team: Bertrand Benoit <infos@benoit-bertrand.be>\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Poedit-Language: French\n"
13
- "X-Poedit-Country: BELGIUM\n"
14
- "X-Poedit-SourceCharset: utf-8\n"
15
- "Plural-Forms: nplurals=2;plural=n>2\n"
16
- "X-Poedit-KeywordsList: __;_e;_c\n"
17
- "X-Poedit-Basepath: C:\\Download\\theme-my-login\n"
18
- "X-Poedit-SearchPath-0: C:\\Download\\theme-my-login\n"
19
-
20
- #: includes/admin-page.php:29
21
- msgid "To complete uninstall, deactivate this plugin. If you do not wish to uninstall, please uncheck the \"Complete Uninstall\" checkbox."
22
- msgstr "Pour terminer la désinstallation vous devez désactiver ce plugin. Si vous ne voulez pas le désinstaller, merci de décocher la case \"Désinstallation Complète\"."
23
-
24
- #: includes/admin-page.php:31
25
- msgid "Settings saved."
26
- msgstr "Paramètres Sauvergardés"
27
-
28
- #: includes/admin-page.php:40
29
- msgid "If you like this plugin, please help keep it up to date by <a href=\"http://www.jfarthing.com/donate\">donating through PayPal</a>!"
30
- msgstr "Si vous aimez cette extension, vous pouvez faire un don par <a href=\"http://www.jfarthing.com/donate\">PayPal</a> !"
31
-
32
- #: includes/admin-page.php:50
33
- msgid "Theme My Login Settings"
34
- msgstr "Paramètres de \"Theme My Login\""
35
-
36
- #: includes/admin-page.php:55
37
- msgid "General Settings"
38
- msgstr "Paramètres Général"
39
-
40
- #: includes/admin-page.php:58
41
- msgid "Plugin"
42
- msgstr "Extensions"
43
-
44
- #: includes/admin-page.php:61
45
- msgid "Uninstall"
46
- msgstr "Désinstaller"
47
-
48
- #: includes/admin-page.php:65
49
- msgid "Page List"
50
- msgstr "Onglet Page"
51
-
52
- #: includes/admin-page.php:68
53
- msgid "Show Login Page"
54
- msgstr "Montrer la Page de Connexion"
55
-
56
- #: includes/admin-page.php:73
57
- msgid "Template Settings"
58
- msgstr "Paramètres du Template"
59
-
60
- #: includes/admin-page.php:76
61
- msgid "Register Title"
62
- msgstr "Titre pour l'Inscription"
63
-
64
- #: includes/admin-page.php:82
65
- msgid "Register Message"
66
- msgstr "Message pour l'Inscription"
67
-
68
- #: includes/admin-page.php:88
69
- msgid "Registration Complete Message"
70
- msgstr "Message pour l'Inscription Terminée"
71
-
72
- #: includes/admin-page.php:94
73
- msgid "Login Title"
74
- msgstr "Titre pour la connexion"
75
-
76
- #: includes/admin-page.php:100
77
- msgid "Lost Password Title"
78
- msgstr "Titre pour le mot de passe perdu"
79
-
80
- #: includes/admin-page.php:106
81
- msgid "Lost Password Message"
82
- msgstr "Message pour le mot de passe perdu"
83
-
84
- #: includes/admin-page.php:113
85
- msgid "Widget Settings"
86
- msgstr "Paramètres du Widget"
87
-
88
- #: includes/admin-page.php:116
89
- msgid "Registration"
90
- msgstr "Inscription"
91
-
92
- #: includes/admin-page.php:119
93
- msgid "Allow Registration in Widget"
94
- msgstr "Permettre l'Inscription dans le Widget"
95
-
96
- #: includes/admin-page.php:123
97
- #: theme-my-login.php:94
98
- msgid "Lost Password"
99
- msgstr "Mot de passe perdu"
100
-
101
- #: includes/admin-page.php:126
102
- msgid "Allow Password Recovery in Widget"
103
- msgstr "Permettre la récupération du mot de passe dans le Widget"
104
-
105
- #: includes/admin-page.php:130
106
- msgid "Dashboard URL"
107
- msgstr "URL vers l'Adm. Du Site"
108
-
109
- #: includes/admin-page.php:143
110
- msgid "Profile URL"
111
- msgstr "URL vers le Profile"
112
-
113
- #: includes/admin-page.php:156
114
- msgid "Save Changes"
115
- msgstr "Enregistrer"
116
-
117
- #: includes/compat.php:84
118
- #, php-format
119
- msgid "Password Lost and Changed for user: %s"
120
- msgstr "Mot de passe perdu et changé pour l'utilisateur : %s"
121
-
122
- #: includes/compat.php:85
123
- #, php-format
124
- msgid "[%s] Password Lost/Changed"
125
- msgstr "[%s] Mot de passe Perdu / Changé"
126
-
127
- #: includes/widget-new.php:6
128
- msgid "A login form for your blog."
129
- msgstr "Une page de connexion pour votre blog."
130
-
131
- #. #-#-#-#-# plugin.pot (PACKAGE VERSION) #-#-#-#-#
132
- #. Plugin Name of an extension
133
- #: includes/widget-new.php:7
134
- #: theme-my-login.php:145
135
- msgid "Theme My Login"
136
- msgstr "Theme My Login"
137
-
138
- #: includes/widget-new.php:24
139
- #: includes/widget-old.php:30
140
- msgid "Welcome"
141
- msgstr "Bienvenue"
142
-
143
- #: includes/widget-new.php:31
144
- #: includes/widget-old.php:37
145
- msgid "Dashboard"
146
- msgstr "Adm. Du Site"
147
-
148
- #: includes/widget-new.php:34
149
- #: includes/widget-old.php:40
150
- msgid "Profile"
151
- msgstr "Profile"
152
-
153
- #: includes/widget-new.php:39
154
- #: includes/widget-new.php:41
155
- #: includes/widget-old.php:45
156
- #: includes/widget-old.php:47
157
- msgid "Log Out"
158
- msgstr "Déconnexion"
159
-
160
- #: includes/widget-new.php:103
161
- msgid "Show When Logged In"
162
- msgstr "Montrer quand on est connecté"
163
-
164
- #: includes/widget-new.php:105
165
- msgid "Show Gravatar"
166
- msgstr "Montrer le Gravatar"
167
-
168
- #: includes/widget-new.php:106
169
- msgid "Gravatar Size"
170
- msgstr "Taille du Gravatar"
171
-
172
- #: includes/widget-new.php:107
173
- msgid "Dashboard Link"
174
- msgstr "Liens vers l'Adm. Du Site"
175
-
176
- #: includes/widget-new.php:114
177
- msgid "Profile Link"
178
- msgstr "Liens vers le Profile"
179
-
180
- #: includes/wp-login-actions.php:63
181
- msgid "Sorry, that key does not appear to be valid."
182
- msgstr "Désolé, cette clé n'est pas valide."
183
-
184
- #: includes/wp-login-forms.php:25
185
- msgid "Username or E-mail:"
186
- msgstr "Nom d'Utilisateur ou E-mail :"
187
-
188
- #: includes/wp-login-forms.php:32
189
- msgid "Get New Password"
190
- msgstr "Obtenir un Nouveau Mot de passe"
191
-
192
- #: includes/wp-login-forms.php:48
193
- #: includes/wp-login-forms.php:105
194
- msgid "Username"
195
- msgstr "Nom d'Utilisateur"
196
-
197
- #: includes/wp-login-forms.php:52
198
- msgid "E-mail"
199
- msgstr "E-mail"
200
-
201
- #: includes/wp-login-forms.php:60
202
- #: includes/wp-login-functions.php:73
203
- #: theme-my-login.php:91
204
- msgid "Register"
205
- msgstr "Inscription"
206
-
207
- #: includes/wp-login-forms.php:88
208
- msgid "<strong>ERROR</strong>: Cookies are blocked or not supported by your browser. You must <a href='http://www.google.com/cookies.html'>enable cookies</a> to use WordPress."
209
- msgstr "<strong>ERREUR</strong>: Les cookies sont bloqués ou non-supportés par votre navigateur. Vous devez <a href='http://www.google.com/cookies.html'>activer les cookies</a> pour utiliser WordPress."
210
-
211
- #: includes/wp-login-forms.php:91
212
- msgid "You are now logged out."
213
- msgstr "Vous êtes déconnecté."
214
-
215
- #: includes/wp-login-forms.php:92
216
- msgid "User registration is currently not allowed."
217
- msgstr "L'inscription n'est pas autorisée actuellement."
218
-
219
- #: includes/wp-login-forms.php:93
220
- msgid "Check your e-mail for the confirmation link."
221
- msgstr "Vérifiez votre e-mail pour le lien de cofirmation."
222
-
223
- #: includes/wp-login-forms.php:94
224
- msgid "Check your e-mail for your new password."
225
- msgstr "Vérifiez votre e-mail pour votre nouveau mot de passe."
226
-
227
- #: includes/wp-login-forms.php:109
228
- msgid "Password"
229
- msgstr "Mot de passe"
230
-
231
- #: includes/wp-login-forms.php:113
232
- msgid "Remember Me"
233
- msgstr "Se souvenir de moi"
234
-
235
- #: includes/wp-login-forms.php:117
236
- #: theme-my-login.php:90
237
- msgid "Log In"
238
- msgstr "Connexion"
239
-
240
- #: includes/wp-login-functions.php:69
241
- msgid "Log in"
242
- msgstr "Connexion"
243
-
244
- #: includes/wp-login-functions.php:77
245
- msgid "Password Lost and Found"
246
- msgstr "Mot de passe Perdu et Trouvé"
247
-
248
- #: includes/wp-login-functions.php:77
249
- msgid "Lost your password?"
250
- msgstr "Mot de passe perdu ?"
251
-
252
- #: includes/wp-login-functions.php:91
253
- msgid "<strong>ERROR</strong>: Enter a username or e-mail address."
254
- msgstr "<strong>ERREUR</strong>: Entezr un nom d'utilisateur ou un adresse e-mail."
255
-
256
- #: includes/wp-login-functions.php:96
257
- msgid "<strong>ERROR</strong>: There is no user registered with that email address."
258
- msgstr "<strong>ERREURR</strong>: Il n'y a aucun utilisateur enregistré avec cette adresse e-mail."
259
-
260
- #: includes/wp-login-functions.php:108
261
- msgid "<strong>ERROR</strong>: Invalid username or e-mail."
262
- msgstr "<strong>ERREUR</strong>: Nom d'utilisateur ou adresse e-mail incorrecte."
263
-
264
- #: includes/wp-login-functions.php:122
265
- msgid "Password reset is not allowed for this user"
266
- msgstr "La réinitialisation du mot de passe n'est pas autorisée pour cet utilisateur."
267
-
268
- #: includes/wp-login-functions.php:134
269
- msgid "Someone has asked to reset the password for the following site and username."
270
- msgstr "Quelqu'un a demandé la réinitialisation de votre mot de passe.<br>Ceci concerne le site internet et le nom d'utilisateur suivant :"
271
-
272
- #: includes/wp-login-functions.php:136
273
- #: includes/wp-login-functions.php:165
274
- #, php-format
275
- msgid "Username: %s"
276
- msgstr "Nom d'utilisateur : %s"
277
-
278
- #: includes/wp-login-functions.php:137
279
- msgid "To reset your password visit the following address, otherwise just ignore this email and nothing will happen."
280
- msgstr "Pour réinitialiser votre mot de passe cliquer sur le lien suivant, sinon ne faites pas attention à cet et rien ne sera modifier."
281
-
282
- #: includes/wp-login-functions.php:140
283
- #, php-format
284
- msgid "[%s] Password Reset"
285
- msgstr "[%s] Mot de passe Réinitialisé"
286
-
287
- #: includes/wp-login-functions.php:141
288
- #: includes/wp-login-functions.php:170
289
- msgid "The e-mail could not be sent."
290
- msgstr "L'e-mail n'a pas pu être envoyé."
291
-
292
- #: includes/wp-login-functions.php:141
293
- #: includes/wp-login-functions.php:170
294
- msgid "Possible reason: your host may have disabled the mail() function..."
295
- msgstr "Raison possible : votre hébergeur a peut-être désactiver la fonction mail()..."
296
-
297
- #: includes/wp-login-functions.php:154
298
- #: includes/wp-login-functions.php:158
299
- msgid "Invalid key"
300
- msgstr "Clé Invalide"
301
-
302
- #: includes/wp-login-functions.php:166
303
- #, php-format
304
- msgid "Password: %s"
305
- msgstr "Mot de passe : %s"
306
-
307
- #: includes/wp-login-functions.php:169
308
- #, php-format
309
- msgid "[%s] Your new password"
310
- msgstr "[%s] Votre Nouveau Mot de passe"
311
-
312
- #: includes/wp-login-functions.php:187
313
- msgid "<strong>ERROR</strong>: Please enter a username."
314
- msgstr "<strong>ERREUR</strong>: Merci d'entrer un nom d'utilisateur."
315
-
316
- #: includes/wp-login-functions.php:189
317
- msgid "<strong>ERROR</strong>: This username is invalid. Please enter a valid username."
318
- msgstr "<strong>ERREUR</strong>: Ce nom d'utilisateur est invalide. Merci d'en choisir un nouveau."
319
-
320
- #: includes/wp-login-functions.php:192
321
- msgid "<strong>ERROR</strong>: This username is already registered, please choose another one."
322
- msgstr "<strong>ERREUR</strong>: Ce nom d'utilisateur est déjà utilisé, merci d'en choisir un nouveau."
323
-
324
- #: includes/wp-login-functions.php:196
325
- msgid "<strong>ERROR</strong>: Please type your e-mail address."
326
- msgstr "<strong>ERREUR</strong>: Merci d'entrer votre adresse e-mail."
327
-
328
- #: includes/wp-login-functions.php:198
329
- msgid "<strong>ERROR</strong>: The email address isn&#8217;t correct."
330
- msgstr "<strong>ERREUR</strong>: L'adresse email est incorrecte."
331
-
332
- #: includes/wp-login-functions.php:201
333
- msgid "<strong>ERROR</strong>: This email is already registered, please choose another one."
334
- msgstr "<strong>ERREUR</strong>: Cette adresse e-mail invalide. Merci d'en choisir une autre."
335
-
336
- #: includes/wp-login-functions.php:213
337
- #, php-format
338
- msgid "<strong>ERROR</strong>: Couldn&#8217;t register you... please contact the <a href=\"mailto:%s\">webmaster</a> !"
339
- msgstr "<strong>ERREUR</strong>: Impossible de vous enregistrer... <br>Merci de contacter le <a href=\"mailto:%s\">webmaster</a> !"
340
-
341
- #: theme-my-login.php:92
342
- msgid "A password will be e-mailed to you."
343
- msgstr "Un mot de passe vous sera envoyé par e-mail."
344
-
345
- #: theme-my-login.php:93
346
- msgid "Registration complete. Please check your e-mail."
347
- msgstr "Inscription Terminée. Merci de vérifier votre e-mail."
348
-
349
- #: theme-my-login.php:95
350
- msgid "Please enter your username or e-mail address. You will receive a new password via e-mail."
351
- msgstr "Entrez votre nom d'utilisateur ou votre adresse e-mail. <br>Vous recevrez un nouveau password par e-mail."
352
-
353
- #. Plugin URI of an extension
354
- msgid "http://www.jfarthing.com/wordpress-plugins/theme-my-login-plugin"
355
- msgstr "http://www.jfarthing.com/wordpress-plugins/theme-my-login-plugin"
356
-
357
- #. Description of an extension
358
- msgid "Themes the WordPress login, registration and forgot password pages according to your theme."
359
- msgstr "Editer la page de login de WordPress, l'inscription et les mots de passe enaccord avec votre thème."
360
-
361
- #. Author of an extension
362
- msgid "Jeff Farthing"
363
- msgstr "Jeff Farthing"
364
-
365
- #. Author URI of an extension
366
- msgid "http://www.jfarthing.com"
367
- msgstr "http://www.jfarthing.com"
368
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
language/theme-my-login-nl_NL.mo DELETED
Binary file
language/theme-my-login-nl_NL.po DELETED
@@ -1,368 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Theme-my-login\n"
4
- "Report-Msgid-Bugs-To: http://wordpress.org/tag/theme-my-login\n"
5
- "POT-Creation-Date: 2009-07-23 23:24+0000\n"
6
- "PO-Revision-Date: 2009-07-27 12:33+0100\n"
7
- "Last-Translator: milly <info@milly.nl>\n"
8
- "Language-Team: \n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Poedit-Language: Dutch\n"
13
- "X-Poedit-Country: NETHERLANDS\n"
14
- "X-Poedit-KeywordsList: __\n"
15
- "X-Poedit-Basepath: .\n"
16
- "X-Poedit-SearchPath-0: .\n"
17
-
18
- #: includes/admin-page.php:29
19
- msgid "To complete uninstall, deactivate this plugin. If you do not wish to uninstall, please uncheck the \"Complete Uninstall\" checkbox."
20
- msgstr "Om de verwijdering te voltooien, moet je je de plug-in deactiveren. Als je de installatie niet ongedaan wilt maken, zet het \"Volledig verwijderen\" vakje dan uit."
21
-
22
- #: includes/admin-page.php:31
23
- msgid "Settings saved."
24
- msgstr "Instellingen opgeslagen."
25
-
26
- #: includes/admin-page.php:40
27
- msgid "If you like this plugin, please help keep it up to date by <a href=\"http://www.jfarthing.com/donate\">donating through PayPal</a>!"
28
- msgstr "Als deze plug-in je bevalt, help dan hem bijgewerkt te houden door<a href=\"http://www.jfarthing.com/donate\">te doneren via PayPal</a>!"
29
-
30
- #: includes/admin-page.php:50
31
- msgid "Theme My Login Settings"
32
- msgstr "Theme My Login instellingen"
33
-
34
- #: includes/admin-page.php:55
35
- msgid "General Settings"
36
- msgstr "Algemene Instellingen"
37
-
38
- #: includes/admin-page.php:58
39
- msgid "Plugin"
40
- msgstr "Plug-in"
41
-
42
- #: includes/admin-page.php:61
43
- msgid "Uninstall"
44
- msgstr "Verwijderen"
45
-
46
- #: includes/admin-page.php:65
47
- msgid "Page List"
48
- msgstr "Pagina lijst"
49
-
50
- #: includes/admin-page.php:68
51
- msgid "Show Login Page"
52
- msgstr "Toon login pagina"
53
-
54
- #: includes/admin-page.php:73
55
- msgid "Template Settings"
56
- msgstr "Sjabloon instellingen"
57
-
58
- #: includes/admin-page.php:76
59
- msgid "Register Title"
60
- msgstr "Registratie titel"
61
-
62
- #: includes/admin-page.php:82
63
- msgid "Register Message"
64
- msgstr "Registratie mededeling"
65
-
66
- #: includes/admin-page.php:88
67
- msgid "Registration Complete Message"
68
- msgstr "Registratie voltooid bericht"
69
-
70
- #: includes/admin-page.php:94
71
- msgid "Login Title"
72
- msgstr "Inlog titel"
73
-
74
- #: includes/admin-page.php:100
75
- msgid "Lost Password Title"
76
- msgstr "Wachtwoord kwijt titel"
77
-
78
- #: includes/admin-page.php:106
79
- msgid "Lost Password Message"
80
- msgstr "Wachtwoord kwijt bericht"
81
-
82
- #: includes/admin-page.php:113
83
- msgid "Widget Settings"
84
- msgstr "Widget instellingen"
85
-
86
- #: includes/admin-page.php:116
87
- msgid "Registration"
88
- msgstr "Registreren"
89
-
90
- #: includes/admin-page.php:119
91
- msgid "Allow Registration in Widget"
92
- msgstr "Registreren in widget toestaan"
93
-
94
- #: includes/admin-page.php:123
95
- #: theme-my-login.php:94
96
- msgid "Lost Password"
97
- msgstr "Wachtwoord vergeten"
98
-
99
- #: includes/admin-page.php:126
100
- msgid "Allow Password Recovery in Widget"
101
- msgstr "Sta wachtwoord aanvragen in widget toe"
102
-
103
- #: includes/admin-page.php:130
104
- msgid "Dashboard URL"
105
- msgstr "Dashboard URL"
106
-
107
- #: includes/admin-page.php:143
108
- msgid "Profile URL"
109
- msgstr "Profiel URL"
110
-
111
- #: includes/admin-page.php:156
112
- msgid "Save Changes"
113
- msgstr "Wijzigingen opslaan"
114
-
115
- #: includes/compat.php:84
116
- #, php-format
117
- msgid "Password Lost and Changed for user: %s"
118
- msgstr "Wachtwoord kwijt en veranderd voor gebruiker: %s"
119
-
120
- #: includes/compat.php:85
121
- #, php-format
122
- msgid "[%s] Password Lost/Changed"
123
- msgstr "[%s] Wachtwoord kwijt/veranderd"
124
-
125
- #: includes/widget-new.php:6
126
- msgid "A login form for your blog."
127
- msgstr "Een inlog formulier voor je blog."
128
-
129
- #. #-#-#-#-# plugin.pot (PACKAGE VERSION) #-#-#-#-#
130
- #. Plugin Name of an extension
131
- #: includes/widget-new.php:7
132
- #: theme-my-login.php:145
133
- msgid "Theme My Login"
134
- msgstr "Theme My Login"
135
-
136
- #: includes/widget-new.php:24
137
- #: includes/widget-old.php:30
138
- msgid "Welcome"
139
- msgstr "Hallo"
140
-
141
- # Dit is omdat ik dat in de widget wil tonen voor gebruikers.
142
- # Eventueel terug veranderen naar Dashboard of Admin Paneel
143
- #: includes/widget-new.php:31
144
- #: includes/widget-old.php:37
145
- msgid "Dashboard"
146
- msgstr "Bijdragen"
147
-
148
- #: includes/widget-new.php:34
149
- #: includes/widget-old.php:40
150
- msgid "Profile"
151
- msgstr "Profiel"
152
-
153
- #: includes/widget-new.php:39
154
- #: includes/widget-new.php:41
155
- #: includes/widget-old.php:45
156
- #: includes/widget-old.php:47
157
- msgid "Log Out"
158
- msgstr "Uitloggen"
159
-
160
- #: includes/widget-new.php:103
161
- msgid "Show When Logged In"
162
- msgstr "Tonen wanneer ingelogd"
163
-
164
- #: includes/widget-new.php:105
165
- msgid "Show Gravatar"
166
- msgstr "Toon gravatar"
167
-
168
- #: includes/widget-new.php:106
169
- msgid "Gravatar Size"
170
- msgstr "Gravatar grootte"
171
-
172
- #: includes/widget-new.php:107
173
- msgid "Dashboard Link"
174
- msgstr "Dashboard Link"
175
-
176
- #: includes/widget-new.php:114
177
- msgid "Profile Link"
178
- msgstr "Profiel Link"
179
-
180
- #: includes/wp-login-actions.php:63
181
- msgid "Sorry, that key does not appear to be valid."
182
- msgstr "Sorry, die sleutel lijkt niet geldig te zijn."
183
-
184
- #: includes/wp-login-forms.php:25
185
- msgid "Username or E-mail:"
186
- msgstr "Gebruikersnaam of e-mail adres:"
187
-
188
- #: includes/wp-login-forms.php:32
189
- msgid "Get New Password"
190
- msgstr "Nieuw wachtwoord aanvragen"
191
-
192
- #: includes/wp-login-forms.php:48
193
- #: includes/wp-login-forms.php:105
194
- msgid "Username"
195
- msgstr "Gebruikersnaam"
196
-
197
- #: includes/wp-login-forms.php:52
198
- msgid "E-mail"
199
- msgstr "E-mail"
200
-
201
- #: includes/wp-login-forms.php:60
202
- #: includes/wp-login-functions.php:73
203
- #: theme-my-login.php:91
204
- msgid "Register"
205
- msgstr "Registreren"
206
-
207
- #: includes/wp-login-forms.php:88
208
- msgid "<strong>ERROR</strong>: Cookies are blocked or not supported by your browser. You must <a href='http://www.google.com/cookies.html'>enable cookies</a> to use WordPress."
209
- msgstr "<strong>Mislukt</strong>: Je browser ondersteunt geen cookies of ze worden geblokkeerd. Je <strong>moet</strong> <a href='http://www.google.nl/cookies.html'>cookies inschakelen</a> om WordPress te kunnen gebruiken."
210
-
211
- #: includes/wp-login-forms.php:91
212
- msgid "You are now logged out."
213
- msgstr "Je bent nu uitgelogd."
214
-
215
- #: includes/wp-login-forms.php:92
216
- msgid "User registration is currently not allowed."
217
- msgstr "Aanmelden is momenteel niet mogelijk."
218
-
219
- #: includes/wp-login-forms.php:93
220
- msgid "Check your e-mail for the confirmation link."
221
- msgstr "Controleer je e-mail voor de bevestigings-link."
222
-
223
- #: includes/wp-login-forms.php:94
224
- msgid "Check your e-mail for your new password."
225
- msgstr "Controleer je e-mail voor je nieuwe wachtwoord."
226
-
227
- #: includes/wp-login-forms.php:109
228
- msgid "Password"
229
- msgstr "Wachtwoord"
230
-
231
- #: includes/wp-login-forms.php:113
232
- msgid "Remember Me"
233
- msgstr "Onthoud mij"
234
-
235
- #: includes/wp-login-forms.php:117
236
- #: theme-my-login.php:90
237
- msgid "Log In"
238
- msgstr "inloggen"
239
-
240
- #: includes/wp-login-functions.php:69
241
- msgid "Log in"
242
- msgstr "Inloggen"
243
-
244
- #: includes/wp-login-functions.php:77
245
- msgid "Password Lost and Found"
246
- msgstr "Wachtwoord kwijt en gevonden"
247
-
248
- #: includes/wp-login-functions.php:77
249
- msgid "Lost your password?"
250
- msgstr "Wachtwoord kwijt?"
251
-
252
- #: includes/wp-login-functions.php:91
253
- msgid "<strong>ERROR</strong>: Enter a username or e-mail address."
254
- msgstr "<strong>FOUT</strong>: Voer een gebruikersnaam of e-mail adres in."
255
-
256
- #: includes/wp-login-functions.php:96
257
- msgid "<strong>ERROR</strong>: There is no user registered with that email address."
258
- msgstr "<strong>FOUT</strong>: Er is geen gebruiker geregistreerd met dit e-mail adres."
259
-
260
- #: includes/wp-login-functions.php:108
261
- msgid "<strong>ERROR</strong>: Invalid username or e-mail."
262
- msgstr "<strong>FOUT</strong>: Ongeldige gebruikersnaam of e-mail adres."
263
-
264
- #: includes/wp-login-functions.php:122
265
- msgid "Password reset is not allowed for this user"
266
- msgstr "Wachtwoord-herstel is niet toegestaan voor deze gebruiker"
267
-
268
- #: includes/wp-login-functions.php:134
269
- msgid "Someone has asked to reset the password for the following site and username."
270
- msgstr "Iemand heeft een nieuw wachtwoord gevraagd voor deze site en gebruikersnaam."
271
-
272
- #: includes/wp-login-functions.php:136
273
- #: includes/wp-login-functions.php:165
274
- #, php-format
275
- msgid "Username: %s"
276
- msgstr "Gebruikersnaam: %s"
277
-
278
- #: includes/wp-login-functions.php:137
279
- msgid "To reset your password visit the following address, otherwise just ignore this email and nothing will happen."
280
- msgstr "Om je wachtwoord opnieuw in te stellen, moet je het volgende adres bezoeken; anders kan je deze e-mail negeren en er zal niets veranderen."
281
-
282
- #: includes/wp-login-functions.php:140
283
- #, php-format
284
- msgid "[%s] Password Reset"
285
- msgstr "[%s] Wachtwoord opnieuw instellen"
286
-
287
- #: includes/wp-login-functions.php:141
288
- #: includes/wp-login-functions.php:170
289
- msgid "The e-mail could not be sent."
290
- msgstr "De e-mail kon niet worden verstuurd."
291
-
292
- #: includes/wp-login-functions.php:141
293
- #: includes/wp-login-functions.php:170
294
- msgid "Possible reason: your host may have disabled the mail() function..."
295
- msgstr "Mogelijke reden: op je server is de mail() functie uitgeschakeld...."
296
-
297
- #: includes/wp-login-functions.php:154
298
- #: includes/wp-login-functions.php:158
299
- msgid "Invalid key"
300
- msgstr "Ongeldige sleutel"
301
-
302
- #: includes/wp-login-functions.php:166
303
- #, php-format
304
- msgid "Password: %s"
305
- msgstr "Wachtwoord: %s"
306
-
307
- #: includes/wp-login-functions.php:169
308
- #, php-format
309
- msgid "[%s] Your new password"
310
- msgstr "[%s] Je nieuwe wachtwoord"
311
-
312
- #: includes/wp-login-functions.php:187
313
- msgid "<strong>ERROR</strong>: Please enter a username."
314
- msgstr "<strong>FOUT:</strong>: Geef een gebruikersnaam op"
315
-
316
- #: includes/wp-login-functions.php:189
317
- msgid "<strong>ERROR</strong>: This username is invalid. Please enter a valid username."
318
- msgstr "<strong>FOUT:</strong>: Deze gebruikersnaam is ongeldig. Voer aub een geldige gebruikersnaam in."
319
-
320
- #: includes/wp-login-functions.php:192
321
- msgid "<strong>ERROR</strong>: This username is already registered, please choose another one."
322
- msgstr "<strong>FOUT:</strong> Deze gebruikersnaam bestaat al, kies aub een andere."
323
-
324
- #: includes/wp-login-functions.php:196
325
- msgid "<strong>ERROR</strong>: Please type your e-mail address."
326
- msgstr "<strong>FOUT:</strong>: Geef je e-mail adres op."
327
-
328
- #: includes/wp-login-functions.php:198
329
- msgid "<strong>ERROR</strong>: The email address isn&#8217;t correct."
330
- msgstr "<strong>FOUT:</strong> Het e-mail adres is niet geldig."
331
-
332
- #: includes/wp-login-functions.php:201
333
- msgid "<strong>ERROR</strong>: This email is already registered, please choose another one."
334
- msgstr "<strong>FOUT</strong>: Dit e-mail adres bestaat al, kies aub een ander."
335
-
336
- #: includes/wp-login-functions.php:213
337
- #, php-format
338
- msgid "<strong>ERROR</strong>: Couldn&#8217;t register you... please contact the <a href=\"mailto:%s\">webmaster</a> !"
339
- msgstr "<strong>FOUT</strong>: Registreren niet gelukt... neem contact op met de <a href=\"mailto:%s\">webmaster</a> !"
340
-
341
- #: theme-my-login.php:92
342
- msgid "A password will be e-mailed to you."
343
- msgstr "Een wachtwoord wordt naar je gemaild."
344
-
345
- #: theme-my-login.php:93
346
- msgid "Registration complete. Please check your e-mail."
347
- msgstr "Registratie voltooid. Controleer aub je e-mail."
348
-
349
- #: theme-my-login.php:95
350
- msgid "Please enter your username or e-mail address. You will receive a new password via e-mail."
351
- msgstr "Voer je gebruikersnaam of e-mail adres in. Je ontvangt een nieuw wachtwoord per e-mail."
352
-
353
- #. Plugin URI of an extension
354
- msgid "http://www.jfarthing.com/wordpress-plugins/theme-my-login-plugin"
355
- msgstr "http://www.jfarthing.com/wordpress-plugins/theme-my-login-plugin"
356
-
357
- #. Description of an extension
358
- msgid "Themes the WordPress login, registration and forgot password pages according to your theme."
359
- msgstr "Past de WordPress inlog, registratie en vergeten wachtwoord pagina's aan, aan je thema."
360
-
361
- #. Author of an extension
362
- msgid "Jeff Farthing"
363
- msgstr "Jeff Farthing"
364
-
365
- #. Author URI of an extension
366
- msgid "http://www.jfarthing.com"
367
- msgstr "http://www.jfarthing.com"
368
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
language/theme-my-login.pot DELETED
@@ -1,375 +0,0 @@
1
- # SOME DESCRIPTIVE TITLE.
2
- # Copyright (C) YEAR Jeff Farthing
3
- # This file is distributed under the same license as the PACKAGE package.
4
- # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
- #
6
- #, fuzzy
7
- msgid ""
8
- msgstr ""
9
- "Project-Id-Version: PACKAGE VERSION\n"
10
- "Report-Msgid-Bugs-To: http://wordpress.org/tag/theme-my-login\n"
11
- "POT-Creation-Date: 2009-07-23 23:24+0000\n"
12
- "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
- "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
- "Language-Team: LANGUAGE <LL@li.org>\n"
15
- "MIME-Version: 1.0\n"
16
- "Content-Type: text/plain; charset=CHARSET\n"
17
- "Content-Transfer-Encoding: 8bit\n"
18
-
19
- #: includes/admin-page.php:29
20
- msgid ""
21
- "To complete uninstall, deactivate this plugin. If you do not wish to "
22
- "uninstall, please uncheck the \"Complete Uninstall\" checkbox."
23
- msgstr ""
24
-
25
- #: includes/admin-page.php:31
26
- msgid "Settings saved."
27
- msgstr ""
28
-
29
- #: includes/admin-page.php:40
30
- msgid ""
31
- "If you like this plugin, please help keep it up to date by <a href=\"http://"
32
- "www.jfarthing.com/donate\">donating through PayPal</a>!"
33
- msgstr ""
34
-
35
- #: includes/admin-page.php:50
36
- msgid "Theme My Login Settings"
37
- msgstr ""
38
-
39
- #: includes/admin-page.php:55
40
- msgid "General Settings"
41
- msgstr ""
42
-
43
- #: includes/admin-page.php:58
44
- msgid "Plugin"
45
- msgstr ""
46
-
47
- #: includes/admin-page.php:61
48
- msgid "Uninstall"
49
- msgstr ""
50
-
51
- #: includes/admin-page.php:65
52
- msgid "Page List"
53
- msgstr ""
54
-
55
- #: includes/admin-page.php:68
56
- msgid "Show Login Page"
57
- msgstr ""
58
-
59
- #: includes/admin-page.php:73
60
- msgid "Template Settings"
61
- msgstr ""
62
-
63
- #: includes/admin-page.php:76
64
- msgid "Register Title"
65
- msgstr ""
66
-
67
- #: includes/admin-page.php:82
68
- msgid "Register Message"
69
- msgstr ""
70
-
71
- #: includes/admin-page.php:88
72
- msgid "Registration Complete Message"
73
- msgstr ""
74
-
75
- #: includes/admin-page.php:94
76
- msgid "Login Title"
77
- msgstr ""
78
-
79
- #: includes/admin-page.php:100
80
- msgid "Lost Password Title"
81
- msgstr ""
82
-
83
- #: includes/admin-page.php:106
84
- msgid "Lost Password Message"
85
- msgstr ""
86
-
87
- #: includes/admin-page.php:113
88
- msgid "Widget Settings"
89
- msgstr ""
90
-
91
- #: includes/admin-page.php:116
92
- msgid "Registration"
93
- msgstr ""
94
-
95
- #: includes/admin-page.php:119
96
- msgid "Allow Registration in Widget"
97
- msgstr ""
98
-
99
- #: includes/admin-page.php:123 theme-my-login.php:94
100
- msgid "Lost Password"
101
- msgstr ""
102
-
103
- #: includes/admin-page.php:126
104
- msgid "Allow Password Recovery in Widget"
105
- msgstr ""
106
-
107
- #: includes/admin-page.php:130
108
- msgid "Dashboard URL"
109
- msgstr ""
110
-
111
- #: includes/admin-page.php:143
112
- msgid "Profile URL"
113
- msgstr ""
114
-
115
- #: includes/admin-page.php:156
116
- msgid "Save Changes"
117
- msgstr ""
118
-
119
- #: includes/compat.php:84
120
- #, php-format
121
- msgid "Password Lost and Changed for user: %s"
122
- msgstr ""
123
-
124
- #: includes/compat.php:85
125
- #, php-format
126
- msgid "[%s] Password Lost/Changed"
127
- msgstr ""
128
-
129
- #: includes/widget-new.php:6
130
- msgid "A login form for your blog."
131
- msgstr ""
132
-
133
- #. #-#-#-#-# plugin.pot (PACKAGE VERSION) #-#-#-#-#
134
- #. Plugin Name of an extension
135
- #: includes/widget-new.php:7 theme-my-login.php:145
136
- msgid "Theme My Login"
137
- msgstr ""
138
-
139
- #: includes/widget-new.php:24 includes/widget-old.php:30
140
- msgid "Welcome"
141
- msgstr ""
142
-
143
- #: includes/widget-new.php:31 includes/widget-old.php:37
144
- msgid "Dashboard"
145
- msgstr ""
146
-
147
- #: includes/widget-new.php:34 includes/widget-old.php:40
148
- msgid "Profile"
149
- msgstr ""
150
-
151
- #: includes/widget-new.php:39 includes/widget-new.php:41
152
- #: includes/widget-old.php:45 includes/widget-old.php:47
153
- msgid "Log Out"
154
- msgstr ""
155
-
156
- #: includes/widget-new.php:103
157
- msgid "Show When Logged In"
158
- msgstr ""
159
-
160
- #: includes/widget-new.php:105
161
- msgid "Show Gravatar"
162
- msgstr ""
163
-
164
- #: includes/widget-new.php:106
165
- msgid "Gravatar Size"
166
- msgstr ""
167
-
168
- #: includes/widget-new.php:107
169
- msgid "Dashboard Link"
170
- msgstr ""
171
-
172
- #: includes/widget-new.php:114
173
- msgid "Profile Link"
174
- msgstr ""
175
-
176
- #: includes/wp-login-actions.php:63
177
- msgid "Sorry, that key does not appear to be valid."
178
- msgstr ""
179
-
180
- #: includes/wp-login-forms.php:25
181
- msgid "Username or E-mail:"
182
- msgstr ""
183
-
184
- #: includes/wp-login-forms.php:32
185
- msgid "Get New Password"
186
- msgstr ""
187
-
188
- #: includes/wp-login-forms.php:48 includes/wp-login-forms.php:105
189
- msgid "Username"
190
- msgstr ""
191
-
192
- #: includes/wp-login-forms.php:52
193
- msgid "E-mail"
194
- msgstr ""
195
-
196
- #: includes/wp-login-forms.php:60 includes/wp-login-functions.php:73
197
- #: theme-my-login.php:91
198
- msgid "Register"
199
- msgstr ""
200
-
201
- #: includes/wp-login-forms.php:88
202
- msgid ""
203
- "<strong>ERROR</strong>: Cookies are blocked or not supported by your "
204
- "browser. You must <a href='http://www.google.com/cookies.html'>enable "
205
- "cookies</a> to use WordPress."
206
- msgstr ""
207
-
208
- #: includes/wp-login-forms.php:91
209
- msgid "You are now logged out."
210
- msgstr ""
211
-
212
- #: includes/wp-login-forms.php:92
213
- msgid "User registration is currently not allowed."
214
- msgstr ""
215
-
216
- #: includes/wp-login-forms.php:93
217
- msgid "Check your e-mail for the confirmation link."
218
- msgstr ""
219
-
220
- #: includes/wp-login-forms.php:94
221
- msgid "Check your e-mail for your new password."
222
- msgstr ""
223
-
224
- #: includes/wp-login-forms.php:109
225
- msgid "Password"
226
- msgstr ""
227
-
228
- #: includes/wp-login-forms.php:113
229
- msgid "Remember Me"
230
- msgstr ""
231
-
232
- #: includes/wp-login-forms.php:117 theme-my-login.php:90
233
- msgid "Log In"
234
- msgstr ""
235
-
236
- #: includes/wp-login-functions.php:69
237
- msgid "Log in"
238
- msgstr ""
239
-
240
- #: includes/wp-login-functions.php:77
241
- msgid "Password Lost and Found"
242
- msgstr ""
243
-
244
- #: includes/wp-login-functions.php:77
245
- msgid "Lost your password?"
246
- msgstr ""
247
-
248
- #: includes/wp-login-functions.php:91
249
- msgid "<strong>ERROR</strong>: Enter a username or e-mail address."
250
- msgstr ""
251
-
252
- #: includes/wp-login-functions.php:96
253
- msgid ""
254
- "<strong>ERROR</strong>: There is no user registered with that email address."
255
- msgstr ""
256
-
257
- #: includes/wp-login-functions.php:108
258
- msgid "<strong>ERROR</strong>: Invalid username or e-mail."
259
- msgstr ""
260
-
261
- #: includes/wp-login-functions.php:122
262
- msgid "Password reset is not allowed for this user"
263
- msgstr ""
264
-
265
- #: includes/wp-login-functions.php:134
266
- msgid ""
267
- "Someone has asked to reset the password for the following site and username."
268
- msgstr ""
269
-
270
- #: includes/wp-login-functions.php:136 includes/wp-login-functions.php:165
271
- #, php-format
272
- msgid "Username: %s"
273
- msgstr ""
274
-
275
- #: includes/wp-login-functions.php:137
276
- msgid ""
277
- "To reset your password visit the following address, otherwise just ignore "
278
- "this email and nothing will happen."
279
- msgstr ""
280
-
281
- #: includes/wp-login-functions.php:140
282
- #, php-format
283
- msgid "[%s] Password Reset"
284
- msgstr ""
285
-
286
- #: includes/wp-login-functions.php:141 includes/wp-login-functions.php:170
287
- msgid "The e-mail could not be sent."
288
- msgstr ""
289
-
290
- #: includes/wp-login-functions.php:141 includes/wp-login-functions.php:170
291
- msgid "Possible reason: your host may have disabled the mail() function..."
292
- msgstr ""
293
-
294
- #: includes/wp-login-functions.php:154 includes/wp-login-functions.php:158
295
- msgid "Invalid key"
296
- msgstr ""
297
-
298
- #: includes/wp-login-functions.php:166
299
- #, php-format
300
- msgid "Password: %s"
301
- msgstr ""
302
-
303
- #: includes/wp-login-functions.php:169
304
- #, php-format
305
- msgid "[%s] Your new password"
306
- msgstr ""
307
-
308
- #: includes/wp-login-functions.php:187
309
- msgid "<strong>ERROR</strong>: Please enter a username."
310
- msgstr ""
311
-
312
- #: includes/wp-login-functions.php:189
313
- msgid ""
314
- "<strong>ERROR</strong>: This username is invalid. Please enter a valid "
315
- "username."
316
- msgstr ""
317
-
318
- #: includes/wp-login-functions.php:192
319
- msgid ""
320
- "<strong>ERROR</strong>: This username is already registered, please choose "
321
- "another one."
322
- msgstr ""
323
-
324
- #: includes/wp-login-functions.php:196
325
- msgid "<strong>ERROR</strong>: Please type your e-mail address."
326
- msgstr ""
327
-
328
- #: includes/wp-login-functions.php:198
329
- msgid "<strong>ERROR</strong>: The email address isn&#8217;t correct."
330
- msgstr ""
331
-
332
- #: includes/wp-login-functions.php:201
333
- msgid ""
334
- "<strong>ERROR</strong>: This email is already registered, please choose "
335
- "another one."
336
- msgstr ""
337
-
338
- #: includes/wp-login-functions.php:213
339
- #, php-format
340
- msgid ""
341
- "<strong>ERROR</strong>: Couldn&#8217;t register you... please contact the <a "
342
- "href=\"mailto:%s\">webmaster</a> !"
343
- msgstr ""
344
-
345
- #: theme-my-login.php:92
346
- msgid "A password will be e-mailed to you."
347
- msgstr ""
348
-
349
- #: theme-my-login.php:93
350
- msgid "Registration complete. Please check your e-mail."
351
- msgstr ""
352
-
353
- #: theme-my-login.php:95
354
- msgid ""
355
- "Please enter your username or e-mail address. You will receive a new "
356
- "password via e-mail."
357
- msgstr ""
358
-
359
- #. Plugin URI of an extension
360
- msgid "http://www.jfarthing.com/wordpress-plugins/theme-my-login-plugin"
361
- msgstr ""
362
-
363
- #. Description of an extension
364
- msgid ""
365
- "Themes the WordPress login, registration and forgot password pages according "
366
- "to your theme."
367
- msgstr ""
368
-
369
- #. Author of an extension
370
- msgid "Jeff Farthing"
371
- msgstr ""
372
-
373
- #. Author URI of an extension
374
- msgid "http://www.jfarthing.com"
375
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
readme.txt CHANGED
@@ -1,9 +1,9 @@
1
  === Theme My Login ===
2
  Contributors: jfarthing84
3
  Donate link: http://www.jfarthing.com/donate
4
- Tags: widget, login, registration, theme, custom, log in, register, sidebar, gravatar
5
  Requires at least: 2.5
6
- Tested up to: 2.8.4
7
  Stable tag: trunk
8
 
9
  Themes the WordPress login pages according to your theme.
@@ -11,7 +11,16 @@ Themes the WordPress login pages according to your theme.
11
 
12
  == Description ==
13
 
14
- This plugin themes the WordPress login, registration and forgot password pages according to your current theme. It replaces the wp-login.php and profile.php by using a page template from your theme. Also includes a widget for sidebar login.
 
 
 
 
 
 
 
 
 
15
 
16
 
17
  == Installation ==
@@ -27,6 +36,15 @@ None yet. Please visit http://www.jfarthing.com/forum for any support!
27
 
28
  == Changelog ==
29
 
 
 
 
 
 
 
 
 
 
30
  = 3.3.1 =
31
  * Fixed a bug that broke password recovery due to the new system from WP 2.8.4
32
 
1
  === Theme My Login ===
2
  Contributors: jfarthing84
3
  Donate link: http://www.jfarthing.com/donate
4
+ Tags: widget, login, registration, theme, custom, log in, register, sidebar, gravatar, redirection, e-mail
5
  Requires at least: 2.5
6
+ Tested up to: 2.9-rare
7
  Stable tag: trunk
8
 
9
  Themes the WordPress login pages according to your theme.
11
 
12
  == Description ==
13
 
14
+ This plugin themes the WordPress login, registration and forgot password pages according to your current theme. It replaces the wp-login.php file by using a page template from your theme. Also includes a widget for sidebar login.
15
+
16
+ = Features =
17
+ * Your registration, log in and password recovery pages will all match the rest of your website
18
+ * Includes a customizeable widget to login anywhere from your blog
19
+ * Redirect users upon log in based on their role
20
+ * Customize titles and messages for the registration, log in and password recovery forms
21
+ * Show gravatar to users who are logged in
22
+ * Assign custom links to users who are logged in based on their role
23
+ * Customize user emails for registration and/or password recovery
24
 
25
 
26
  == Installation ==
36
 
37
  == Changelog ==
38
 
39
+ = 4.0 =
40
+ * Implemented custom links for logged in users based on role
41
+ * Implemented custom redirection upon log in based on role
42
+ * Implemented custom registration/password recovery emails
43
+ * Implemented true shortcode and template tag functionality
44
+ * Implemented true multi-instance functionality
45
+ * Implemented an easy-to-use jQuery tabbed administration menu
46
+ * Implemented both 'fresh' and 'classic' colors for administration menu
47
+
48
  = 3.3.1 =
49
  * Fixed a bug that broke password recovery due to the new system from WP 2.8.4
50
 
theme-my-login.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Theme My Login
4
  Plugin URI: http://www.jfarthing.com/wordpress-plugins/theme-my-login-plugin
5
  Description: Themes the WordPress login, registration and forgot password pages according to your theme.
6
- Version: 3.3.1
7
  Author: Jeff Farthing
8
  Author URI: http://www.jfarthing.com
9
  Text Domain: theme-my-login
@@ -11,265 +11,337 @@ Text Domain: theme-my-login
11
 
12
  global $wp_version;
13
 
 
 
 
14
  if ($wp_version < '2.6') {
15
- if ( !defined('WP_CONTENT_DIR') )
16
- define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' );
17
- if ( !defined('WP_CONTENT_URL') )
18
- define( 'WP_CONTENT_URL', get_option('siteurl') . '/wp-content');
19
- if ( !defined('WP_PLUGIN_DIR') )
20
- define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins' );
21
- if ( !defined('WP_PLUGIN_URL') )
22
- define( 'WP_PLUGIN_URL', WP_CONTENT_URL . '/plugins' );
23
-
24
  require (WP_PLUGIN_DIR . '/theme-my-login/includes/compat.php');
25
  }
26
 
27
  if (!class_exists('ThemeMyLogin')) {
28
- class ThemeMyLogin {
29
 
30
- var $version = '3.3.1';
31
  var $options = array();
32
  var $permalink = '';
 
33
 
34
  function ThemeMyLogin() {
35
- $this->__construct();
36
- }
37
-
38
- function __construct() {
39
-
40
- load_plugin_textdomain('theme-my-login', '/wp-content/plugins/theme-my-login/language');
41
 
42
  register_activation_hook ( __FILE__, array( &$this, 'Activate' ) );
43
  register_deactivation_hook ( __FILE__, array( &$this, 'Deactivate' ) );
 
 
 
44
 
45
- add_action('admin_menu', array(&$this, 'AddAdminPage'));
46
- add_action('init', array(&$this, 'Init'));
47
- add_action('parse_request', array(&$this, 'ParseRequest'));
 
 
 
 
 
 
 
 
48
 
49
- add_filter('wp_head', array(&$this, 'WPHead'));
50
- add_filter('wp_title', array(&$this, 'WPTitle'));
51
- add_filter('the_title', array(&$this, 'TheTitle'));
52
- add_filter('wp_list_pages_excludes', array(&$this, 'ListPagesExcludes'));
53
- add_filter('the_content', array(&$this, 'TheContent'));
54
- add_filter('site_url', array(&$this, 'SiteURLFilter'), 10, 2);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
 
56
  $this->LoadOptions();
 
 
 
57
  }
58
 
59
  function Activate() {
60
- $theme_my_login = get_page_by_title('Login');
61
- if ( !$theme_my_login ) {
62
- $insert = array(
63
  'post_title' => 'Login',
64
  'post_status' => 'publish',
65
  'post_type' => 'page',
66
  'post_author' => 1,
67
- 'post_content' => '[theme-my-login]',
68
  'comment_status' => 'closed',
69
  'ping_status' => 'closed'
70
  );
 
 
 
71
  $page_id = wp_insert_post($insert);
72
- } else $page_id = $theme_my_login->ID;
 
 
 
 
 
 
 
 
 
 
 
 
73
 
74
- $this->SetOption('page_id', $page_id);
75
- $this->SetOption('version', $this->version);
76
  $this->SaveOptions();
77
  }
78
 
79
  function Deactivate() {
80
- if ($this->GetOption('uninstall')) {
81
  delete_option('theme_my_login');
82
- wp_delete_post($this->GetOption('page_id'));
83
  }
84
  }
85
 
86
- function InitOptions() {
87
- $this->options['uninstall'] = 0;
88
- $this->options['page_id'] = 0;
89
- $this->options['show_page'] = 0;
90
- $this->options['login_title'] = __('Log In');
91
- $this->options['register_title'] = __('Register');
92
- $this->options['register_msg'] = __('A password will be e-mailed to you.');
93
- $this->options['register_complete'] = __('Registration complete. Please check your e-mail.');
94
- $this->options['password_title'] = __('Lost Password');
95
- $this->options['password_msg'] = __('Please enter your username or e-mail address. You will receive a new password via e-mail.');
 
 
96
 
97
- // Widget options
98
- $this->options['widget_allow_register'] = 1;
99
- $this->options['widget_allow_password'] = 1;
100
- $this->options['widget_show_logged_in'] = 1;
101
- $this->options['widget_show_gravatar'] = 1;
102
- $this->options['widget_gravatar_size'] = 50;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
 
104
  global $wp_roles;
105
- if (empty($wp_roles))
106
  $wp_roles = new WP_Roles();
107
 
108
  $user_roles = $wp_roles->get_names();
109
- foreach ($user_roles as $role => $title) {
110
- $dashboard_link[$role] = 1;
111
- $profile_link[$role] = 1;
112
- $dashboard_url[$role] = '';
113
- $profile_url[$role] = '';
114
  }
115
- $this->options['widget_dashboard_link'] = $dashboard_link;
116
- $this->options['widget_profile_link'] = $profile_link;
117
- $this->options['widget_dashboard_url'] = $dashboard_url;
118
- $this->options['widget_profile_url'] = $profile_url;
119
- }
120
-
121
- function LoadOptions() {
122
-
123
- $this->InitOptions();
124
-
125
- $storedoptions = get_option( 'theme_my_login' );
126
- if ( $storedoptions && is_array( $storedoptions ) ) {
127
- foreach ( $storedoptions as $key => $value ) {
128
- $this->options[$key] = $value;
129
- }
130
- } else update_option( 'theme_my_login', $this->options );
131
- }
132
-
133
- function GetOption( $key ) {
134
- if ( array_key_exists( $key, $this->options ) ) {
135
- return $this->options[$key];
136
- } else return null;
137
- }
138
-
139
- function SetOption( $key, $value ) {
140
- $this->options[$key] = $value;
141
- }
142
-
143
- function SaveOptions() {
144
- $oldvalue = get_option( 'theme_my_login' );
145
- if( $oldvalue == $this->options ) {
146
- return true;
147
- } else return update_option( 'theme_my_login', $this->options );
148
- }
149
-
150
- function AddAdminPage(){
151
- add_options_page(__('Theme My Login', 'theme-my-login'), __('Theme My Login', 'theme-my-login'), 8, 'theme-my-login', array(&$this, 'AdminPage'));
152
  }
153
 
154
- function AdminPage(){
155
- require (WP_PLUGIN_DIR . '/theme-my-login/includes/admin-page.php');
156
- }
157
-
158
  function ParseRequest() {
159
- global $wp, $login_errors;
160
-
161
  $page_id = isset($wp->query_vars['page_id']) ? $wp->query_vars['page_id'] : 0;
162
  $pagename = isset($wp->query_vars['pagename']) ? $wp->query_vars['pagename'] : '';
163
 
164
- if ( isset($page_id) && $page_id == $this->GetOption('page_id') || isset($pagename) && strtolower($pagename) == 'login' ) {
165
  if ( is_user_logged_in() && 'logout' != $_GET['action'] ) {
166
  wp_redirect(get_bloginfo('home'));
167
- exit;
168
  }
169
  }
170
- if (strpos($_SERVER['REQUEST_URI'], '/wp-admin') === false) {
171
- $login_errors = new WP_Error();
172
- require (WP_PLUGIN_DIR . '/theme-my-login/includes/wp-login-actions.php');
173
- }
174
  }
175
 
176
  function Init() {
177
- global $pagenow;
178
-
179
- $this->permalink = get_permalink($this->GetOption('page_id'));
180
 
181
  switch ($pagenow) {
182
  case 'wp-register.php':
183
  case 'wp-login.php':
184
  $redirect_to = add_query_arg($_GET, $this->permalink);
185
  wp_redirect($redirect_to);
186
- exit;
187
  break;
188
  }
189
- }
190
-
191
- function TheContent($content) {
192
- global $login_errors;
193
 
194
- if (strpos($content, '[theme-my-login]') !== false)
195
- return str_replace('[theme-my-login]', $this->DisplayLogin(), $content);
196
- else
197
- return $content;
198
- }
199
-
200
- function DisplayLogin($type = 'page', $action = '') {
201
- global $login_errors;
202
-
203
- $login_forms = WP_PLUGIN_DIR . '/theme-my-login/includes/wp-login-forms.php';
204
- if (is_file($login_forms)) {
205
- ob_start();
206
- include $login_forms;
207
- $contents = ob_get_contents();
208
- ob_end_clean();
209
- return $contents;
210
  }
211
- return false;
212
  }
213
-
214
  function WPHead() {
215
- echo '<!-- Theme My Login Version ' . $this->version . ' -->' . "\n";
216
- echo '<link rel="stylesheet" type="text/css" href="' . WP_PLUGIN_URL . '/theme-my-login/theme-my-login.css" />' . "\n";
217
- do_action('login_head');
218
  }
219
 
220
  function WPTitle($title) {
221
- if ( is_page($this->GetOption('page_id')) ) {
222
-
223
- $action = (empty($_REQUEST['action'])) ? 'login' : $_REQUEST['action'];
 
 
224
 
 
 
 
 
 
 
 
225
  switch ($action) {
226
  case 'register':
227
- return str_replace('Login', $this->GetOption('register_title'), $title);
228
  break;
229
  case 'lostpassword':
230
  case 'retrievepassword':
231
  case 'resetpass':
232
  case 'rp':
233
- return str_replace('Login', $this->GetOption('password_title'), $title);
234
  break;
235
  case 'login':
236
  default:
237
- return str_replace('Login', $this->GetOption('login_title'), $title);
238
  }
239
  } return $title;
240
  }
241
 
242
- function TheTitle($title, $action = '') {
243
- if ($title == 'Login') {
 
 
 
 
 
 
 
244
 
245
- if (empty($action))
246
- $action = (empty($_REQUEST['action'])) ? 'login' : $_REQUEST['action'];
 
 
 
 
247
 
248
  switch ($action) {
249
  case 'register':
250
- return $this->GetOption('register_title');
251
  break;
252
  case 'lostpassword':
253
  case 'retrievepassword':
254
  case 'resetpass':
255
  case 'rp':
256
- return $this->GetOption('password_title');
257
  break;
258
  case 'login':
259
  default:
260
- return $this->GetOption('login_title');
261
  }
262
  } return $title;
263
  }
264
 
265
- function ListPagesExcludes($excludes) {
266
- if (!$this->GetOption('show_page'))
267
- $excludes[] = $this->GetOption( 'page_id' );
 
 
 
 
 
 
 
 
 
 
 
 
268
 
269
  return $excludes;
270
  }
271
 
272
- function SiteURLFilter($url, $path) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
273
  global $wp_rewrite;
274
 
275
  if ( preg_match('/wp-login.php/', $url) ) {
@@ -281,79 +353,163 @@ if (!class_exists('ThemeMyLogin')) {
281
  }
282
  return $url;
283
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
284
  }
285
  }
286
 
287
- //instantiate the class
288
  if (class_exists('ThemeMyLogin')) {
289
  global $wp_version;
290
 
291
  $ThemeMyLogin = new ThemeMyLogin();
292
-
293
- if ($wp_version >= '2.8') {
294
- require (WP_PLUGIN_DIR . '/theme-my-login/includes/widget-new.php');
295
  } else {
296
- require (WP_PLUGIN_DIR . '/theme-my-login/includes/widget-old.php');
297
  }
298
 
299
- function theme_my_login($args = array()) {
300
- global $ThemeMyLogin, $wp_version, $user_ID, $current_user, $login_errors, $wp_roles;
301
-
302
- if (empty($wp_roles))
303
- $wp_roles = new WP_Roles();
304
-
305
- $user_roles = $wp_roles->get_names();
306
-
307
- //Defaults
308
- $defaults['before_widget'] = '<li>';
309
- $defaults['after_widget'] = '</li>';
310
- $defaults['before_title'] = '<h2>';
311
- $defaults['after_title'] = '</h2>';
312
- $defaults['action'] = 'login';
313
- $defaults['show_logged_in'] = 1;
314
- $defaults['show_gravatar'] = 1;
315
- $defaults['gravatar_size'] = 50;
316
- foreach ($user_roles as $role => $value) {
317
- $defaults['dashboard_link_' . $role] = 1;
318
- $defaults['profile_link_' . $role] = 1;
319
- }
320
 
321
- $args = wp_parse_args( $args, (array) $defaults );
322
-
323
- if ($user_ID != '' && $args['show_logged_in']) {
324
- get_currentuserinfo();
325
- $user_role = reset($current_user->roles);
326
- $dashboard_url = $ThemeMyLogin->GetOption('widget_dashboard_url');
327
- $profile_url = $ThemeMyLogin->GetOption('widget_profile_url');
328
- $user_dashboard_url = (empty($dashboard_url[$user_role])) ? site_url('wp-admin/', 'admin') : $dashboard_url[$user_role];
329
- $user_profile_url = (empty($profile_url[$user_role])) ? site_url('wp-admin/profile.php', 'admin') : $profile_url[$user_role];
330
- echo $args['before_widget'] . $args['before_title'] . __('Welcome', 'theme-my-login') . ', ' . $current_user->display_name . $args['after_title'] . "\n";
331
- if ($args['show_gravatar']) :
332
- echo '<div class="theme-my-login-avatar">' . get_avatar( $user_ID, $size = $args['gravatar_size'] ) . '</div>' . "\n";
333
- endif;
334
- do_action('theme_my_login_avatar', $current_user);
335
- echo '<ul class="theme-my-login-links">' . "\n";
336
- if ($args['dashboard_link_' . $user_role]) :
337
- echo '<li><a href="' . $user_dashboard_url . '">' . __('Dashboard') . '</a></li>' . "\n";
338
- endif;
339
- if ($args['profile_link_' . $user_role]) :
340
- echo '<li><a href="' . $user_profile_url . '">' . __('Profile') . '</a></li>' . "\n";
341
- endif;
342
- do_action('theme_my_login_links', $user_role);
343
- $redirect = wp_guess_url();
344
- if (version_compare($wp_version, '2.7', '>='))
345
- echo '<li><a href="' . wp_logout_url($redirect) . '">' . __('Log Out') . '</a></li>' . "\n";
346
  else
347
- echo '<li><a href="' . site_url('wp-login.php?action=logout&redirect_to='.$redirect, 'login') . '">' . __('Log Out') . '</a></li>' . "\n";
348
- echo '</ul>' . "\n";
349
- echo $args['after_widget'] . "\n";
350
- } elseif (empty($user_ID)) {
351
- $action = (empty($_GET['action'])) ? (empty($args['action'])) ? '' : $args['action'] : $_GET['action'];
352
- echo $args['before_widget'] . $args['before_title'] . $ThemeMyLogin->TheTitle('Login', $action) . $args['after_title'] . "\n";
353
- echo $ThemeMyLogin->DisplayLogin('widget', $action);
354
- echo $args['after_widget'] . "\n";
 
 
355
  }
 
356
  }
 
 
357
  }
358
 
359
  ?>
3
  Plugin Name: Theme My Login
4
  Plugin URI: http://www.jfarthing.com/wordpress-plugins/theme-my-login-plugin
5
  Description: Themes the WordPress login, registration and forgot password pages according to your theme.
6
+ Version: 4.0
7
  Author: Jeff Farthing
8
  Author URI: http://www.jfarthing.com
9
  Text Domain: theme-my-login
11
 
12
  global $wp_version;
13
 
14
+ require_once ('classes/class.plugin-shell.php');
15
+ require_once ('classes/class.wp-login.php');
16
+
17
  if ($wp_version < '2.6') {
 
 
 
 
 
 
 
 
 
18
  require (WP_PLUGIN_DIR . '/theme-my-login/includes/compat.php');
19
  }
20
 
21
  if (!class_exists('ThemeMyLogin')) {
22
+ class ThemeMyLogin extends WPPluginShell {
23
 
24
+ var $version = '4.0';
25
  var $options = array();
26
  var $permalink = '';
27
+ var $instances = 0;
28
 
29
  function ThemeMyLogin() {
30
+ global $wp_version;
31
+
32
+ $this->SetPluginTitle('Theme My Login');
33
+
34
+ load_plugin_textdomain($this->plugin_textdomain, '/wp-content/plugins/theme-my-login/language');
 
35
 
36
  register_activation_hook ( __FILE__, array( &$this, 'Activate' ) );
37
  register_deactivation_hook ( __FILE__, array( &$this, 'Deactivate' ) );
38
+
39
+ $this->AddAction('parse_request');
40
+ $this->AddAction('init');
41
 
42
+ $this->AddFilter('wp_head');
43
+ $this->AddFilter('wp_title');
44
+ $this->AddFilter('the_title');
45
+ $this->AddFilter('wp_list_pages');
46
+ $this->AddFilter('wp_list_pages_excludes');
47
+ $this->AddFilter('login_redirect', 'LoginRedirect', 10, 3);
48
+ $this->AddFilter('site_url', 'SiteURL', 10, 2);
49
+ $this->AddFilter('retrieve_password_title', 'RetrievePasswordTitle', 10, 2);
50
+ $this->AddFilter('retrieve_password_message', 'RetrievePasswordMessage', 10, 3);
51
+ $this->AddFilter('password_reset_title', 'PasswordResetTitle', 10, 2);
52
+ $this->AddFilter('password_reset_message', 'PasswordResetMessage', 10, 3);
53
 
54
+ $this->AddShortcode('theme-my-login-page');
55
+ $this->AddShortcode('theme-my-login');
56
+
57
+ if ( file_exists(WP_PLUGIN_DIR . '/theme-my-login/theme-my-login.css') )
58
+ $this->AddStyle('theme-my-login', WP_PLUGIN_URL . '/theme-my-login/theme-my-login.css');
59
+ else
60
+ $this->AddStyle('theme-my-login', WP_PLUGIN_URL . '/theme-my-login/css/theme-my-login.css');
61
+
62
+ $this->AddAdminStyle('theme-my-login-admin', WP_PLUGIN_URL . '/theme-my-login/css/theme-my-login-admin.css.php');
63
+
64
+ if ( version_compare($wp_version, '2.8', '>=') ) {
65
+ $this->AddAdminScript('jquery-ui-tabs');
66
+ } else {
67
+ global $wp_scripts;
68
+
69
+ if ( empty($wp_scripts) )
70
+ $wp_scripts = new WP_Scripts();
71
+
72
+ $wp_scripts->dequeue('jquery');
73
+ $wp_scripts->dequeue('jquery-ui-core');
74
+ $wp_scripts->dequeue('jquery-ui-tabs');
75
+ $wp_scripts->remove('jquery');
76
+ $wp_scripts->remove('jquery-ui-core');
77
+ $wp_scripts->remove('jquery-ui-tabs');
78
+ $this->AddAdminScript('jquery', WP_PLUGIN_URL . '/theme-my-login/js/jquery/jquery.js', false, '1.7.2');
79
+ $this->AddAdminScript('jquery-ui-core', WP_PLUGIN_URL . '/theme-my-login/js/jquery/ui.core.js', array('jquery'), '1.7.2');
80
+ $this->AddAdminScript('jquery-ui-tabs', WP_PLUGIN_URL . '/theme-my-login/js/jquery/ui.tabs.js', array('jquery', 'jquery-ui-core'), '1.7.2');
81
+ }
82
+
83
+ $this->AddAdminScript('theme-my-login-admin', WP_PLUGIN_URL . '/theme-my-login/js/theme-my-login-admin.js.php');
84
+
85
+ $this->AddAdminPage('options', 'Theme My Login', 'Theme My Login', 8, '/theme-my-login/includes/admin-page.php');
86
 
87
  $this->LoadOptions();
88
+
89
+ $this->WPPluginShell();
90
+
91
  }
92
 
93
  function Activate() {
94
+ $insert = array(
 
 
95
  'post_title' => 'Login',
96
  'post_status' => 'publish',
97
  'post_type' => 'page',
98
  'post_author' => 1,
99
+ 'post_content' => '[theme-my-login-page]',
100
  'comment_status' => 'closed',
101
  'ping_status' => 'closed'
102
  );
103
+
104
+ $theme_my_login = get_page_by_title('Login');
105
+ if ( !$theme_my_login ) {
106
  $page_id = wp_insert_post($insert);
107
+ } else {
108
+ $page_id = $theme_my_login->ID;
109
+ $insert['ID'] = $page_id;
110
+ wp_update_post($insert);
111
+ }
112
+
113
+ $opts = get_option('theme_my_login');
114
+ if ( $opts ) {
115
+ if ( version_compare($opts['version'], '4.0', '<') ) {
116
+ delete_option('theme_my_login');
117
+ delete_option('widget_theme-my-login');
118
+ }
119
+ }
120
 
121
+ $options = array('page_id' => $page_id, 'version' => $this->version);
122
+ $this->SetOption('general', $options);
123
  $this->SaveOptions();
124
  }
125
 
126
  function Deactivate() {
127
+ if ( $this->GetOption('uninstall') ) {
128
  delete_option('theme_my_login');
129
+ wp_delete_post($this->options['general']['page_id']);
130
  }
131
  }
132
 
133
+ function InitOptions($save = false) {
134
+
135
+ $this->options['general']['uninstall'] = 0;
136
+ $this->options['general']['defaults'] = 0;
137
+ $this->options['general']['show_page'] = 0;
138
+ $this->options['general']['page_id'] = 3;
139
+
140
+ $this->options['titles']['welcome'] = __('Welcome') . ', %display_name%';
141
+ $this->options['titles']['login'] = __('Log In');
142
+ $this->options['titles']['register'] = __('Register');
143
+ $this->options['titles']['lostpassword'] = __('Lost Password');
144
+ $this->options['titles']['logout'] = __('Log Out');
145
 
146
+ $this->options['messages']['register'] = __('A password will be e-mailed to you.');
147
+ $this->options['messages']['success'] = __('Registration complete. Please check your e-mail.');
148
+ $this->options['messages']['lostpassword'] = __('Please enter your username or e-mail address. You will receive a new password via e-mail.');
149
+
150
+ $this->options['widget']['default_action'] = 'login';
151
+ $this->options['widget']['show_all_msgs'] = 0;
152
+ $this->options['widget']['show_title'] = 1;
153
+ $this->options['widget']['show_links'] = 1;
154
+ $this->options['widget']['registration'] = 1;
155
+ $this->options['widget']['lostpassword'] = 1;
156
+ $this->options['widget']['show_logged'] = 1;
157
+ $this->options['widget']['show_gravatar'] = 1;
158
+ $this->options['widget']['gravatar_size'] = 50;
159
+ $this->options['widget']['before_widget'] = '<li>';
160
+ $this->options['widget']['after_widget'] = '</li>';
161
+ $this->options['widget']['before_title'] = '<h2>';
162
+ $this->options['widget']['after_title'] = '</h2>';
163
+
164
+ $this->options['emails']['retrievepassword']['subject'] = '';
165
+ $this->options['emails']['retrievepassword']['message'] = '';
166
+ $this->options['emails']['resetpassword']['subject'] = '';
167
+ $this->options['emails']['resetpassword']['message'] = '';
168
+ $this->options['emails']['resetpassword']['admin-disable'] = 0;
169
+ $this->options['emails']['newregistration']['subject'] = '';
170
+ $this->options['emails']['newregistration']['message'] = '';
171
+ $this->options['emails']['newregistration']['admin-disable'] = 0;
172
+ $this->options['emails']['newregistration']['user-disable'] = 0;
173
 
174
  global $wp_roles;
175
+ if ( empty($wp_roles) )
176
  $wp_roles = new WP_Roles();
177
 
178
  $user_roles = $wp_roles->get_names();
179
+ foreach ( $user_roles as $role => $title ) {
180
+ $this->options['links'][$role][] = array('title' => 'Dashboard', 'url' => admin_url());
181
+ $this->options['links'][$role][] = array('title' => 'Profile', 'url' => admin_url('profile.php'));
182
+ $this->options['redirects'][$role] = array('login_url' => '', 'logout_url' => '');
 
183
  }
184
+
185
+ if ( $save )
186
+ $this->SaveOptions();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
187
  }
188
 
 
 
 
 
189
  function ParseRequest() {
190
+ global $WPLogin, $wp;
191
+
192
  $page_id = isset($wp->query_vars['page_id']) ? $wp->query_vars['page_id'] : 0;
193
  $pagename = isset($wp->query_vars['pagename']) ? $wp->query_vars['pagename'] : '';
194
 
195
+ if ( isset($page_id) && $page_id == $this->options['general']['page_id'] || isset($pagename) && strtolower($pagename) == 'login' ) {
196
  if ( is_user_logged_in() && 'logout' != $_GET['action'] ) {
197
  wp_redirect(get_bloginfo('home'));
198
+ exit();
199
  }
200
  }
201
+ if ( strpos($_SERVER['REQUEST_URI'], '/wp-admin') === false )
202
+ $WPLogin = new WPLogin('theme-my-login', $this->options);
 
 
203
  }
204
 
205
  function Init() {
206
+ global $user_ID, $pagenow, $wp_version;
207
+
208
+ $this->permalink = get_permalink($this->options['general']['page_id']);
209
 
210
  switch ($pagenow) {
211
  case 'wp-register.php':
212
  case 'wp-login.php':
213
  $redirect_to = add_query_arg($_GET, $this->permalink);
214
  wp_redirect($redirect_to);
215
+ exit();
216
  break;
217
  }
 
 
 
 
218
 
219
+ if ( is_admin() && is_user_logged_in() && version_compare($wp_version, '2.8', '>=') ) {
220
+ $admin_color = get_usermeta($user_ID, 'admin_color');
221
+ if ( 'classic' == $admin_color ) {
222
+ $this->AddAdminStyle('jquery-colors-classic', WP_PLUGIN_URL . '/theme-my-login/css/wp-colors-classic/wp-colors-classic.css');
223
+ } else {
224
+ $this->AddAdminStyle('jquery-colors-fresh', WP_PLUGIN_URL . '/theme-my-login/css/wp-colors-fresh/wp-colors-fresh.css');
225
+ }
226
+ } elseif ( is_admin() && is_user_logged_in() && version_compare($wp_version, '2.7', '>=') ) {
227
+ $this->AddAdminStyle('jquery-colors-fresh', WP_PLUGIN_URL . '/theme-my-login/css/wp-colors-fresh/wp-colors-fresh.css');
228
+ } elseif ( is_admin() && is_user_logged_in() && version_compare($wp_version, '2.5', '>=') ) {
229
+ $this->AddAdminStyle('jquery-colors-classic', WP_PLUGIN_URL . '/theme-my-login/css/wp-colors-classic/wp-colors-classic.css');
 
 
 
 
 
230
  }
 
231
  }
232
+
233
  function WPHead() {
234
+ if ( !is_admin() )
235
+ do_action('login_head');
 
236
  }
237
 
238
  function WPTitle($title) {
239
+ global $WPLogin;
240
+
241
+ if ( is_page($this->options['general']['page_id']) ) {
242
+
243
+ $titles = $this->GetOption('titles');
244
 
245
+ $action = ( isset($WPLogin->options['action']) ) ? $WPLogin->options['action'] : '';
246
+ if ( 'tml-1' == $WPLogin->instance )
247
+ $action = $WPLogin->action;
248
+
249
+ if ( is_user_logged_in() )
250
+ return str_replace('Login', $titles['logout'], $title);
251
+
252
  switch ($action) {
253
  case 'register':
254
+ return str_replace('Login', $titles['register'], $title);
255
  break;
256
  case 'lostpassword':
257
  case 'retrievepassword':
258
  case 'resetpass':
259
  case 'rp':
260
+ return str_replace('Login', $titles['lostpassword'], $title);
261
  break;
262
  case 'login':
263
  default:
264
+ return str_replace('Login', $titles['login'], $title);
265
  }
266
  } return $title;
267
  }
268
 
269
+ function TheTitle($title) {
270
+ global $WPLogin;
271
+
272
+ if ( is_admin() )
273
+ return $title;
274
+
275
+ if ( $title == 'Login' ) {
276
+
277
+ $titles = $this->GetOption('titles');
278
 
279
+ if ( is_user_logged_in() )
280
+ return $titles['logout'];
281
+
282
+ $action = ( isset($WPLogin->options['action']) ) ? $WPLogin->options['action'] : '';
283
+ if ( 'tml-1' == $WPLogin->instance )
284
+ $action = $WPLogin->action;
285
 
286
  switch ($action) {
287
  case 'register':
288
+ return $titles['register'];
289
  break;
290
  case 'lostpassword':
291
  case 'retrievepassword':
292
  case 'resetpass':
293
  case 'rp':
294
+ return $titles['lostpassword'];
295
  break;
296
  case 'login':
297
  default:
298
+ return $titles['login'];
299
  }
300
  } return $title;
301
  }
302
 
303
+ function WPListPages($pages) {
304
+ global $wp_version, $WPLogin;
305
+
306
+ if ( $this->options['general']['show_page'] && is_user_logged_in() ) {
307
+ $redirect = $WPLogin->GuessURL();
308
+ $logout_url = ( version_compare($wp_version, '2.7', '>=') ) ? wp_logout_url($redirect) : site_url('wp-login.php?action=logout&redirect_to='.$redirect, 'login');
309
+ $pages = str_replace($this->permalink, $logout_url, $pages);
310
+ }
311
+
312
+ return $pages;
313
+ }
314
+
315
+ function WPListPagesExcludes($excludes) {
316
+ if ( !$this->options['general']['show_page'] )
317
+ $excludes[] = $this->options['general']['page_id'];
318
 
319
  return $excludes;
320
  }
321
 
322
+ function LoginRedirect($redirect_to, $request, $user) {
323
+ global $pagenow;
324
+
325
+ $schema = ( isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on' ) ? 'https://' : 'http://';
326
+ $self = $schema . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
327
+
328
+ if ( empty($redirect_to) || admin_url() == $redirect_to) {
329
+ if ( empty($request) )
330
+ $redirect_to = ( 'wp-login.php' == $pagenow ) ? $_SERVER['HTTP_REFERER'] : $self;
331
+ else
332
+ $redirect_to = $request;
333
+ }
334
+
335
+ if ( is_object($user) && !is_wp_error($user) ) {
336
+ $user_role = array_shift($user->roles);
337
+ $redirects = $this->GetOption('redirects');
338
+ if ( '' != $redirects[$user_role]['login_url'] )
339
+ $redirect_to = $redirects[$user_role]['login_url'];
340
+ }
341
+ return $redirect_to;
342
+ }
343
+
344
+ function SiteURL($url, $path) {
345
  global $wp_rewrite;
346
 
347
  if ( preg_match('/wp-login.php/', $url) ) {
353
  }
354
  return $url;
355
  }
356
+
357
+ function RetrievePasswordTitle($title, $user) {
358
+ if ( !empty($this->options['emails']['retrievepassword']['subject']) ) {
359
+ $replace_this = array('/%blogname%/', '/%siteurl%/', '/%reseturl%/', '/%user_login%/', '/%user_email%/', '/%user_ip%/');
360
+ $replace_with = array(get_option('blogname'), get_option('siteurl'), site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login'), $user->user_login, $user->user_email, $_SERVER['REMOTE_ADDR']);
361
+ $title = preg_replace($replace_this, $replace_with, $this->options['emails']['retrievepassword']['subject']);
362
+ }
363
+ return $title;
364
+ }
365
+
366
+ function RetrievePasswordMessage($message, $key, $user) {
367
+ if ( !empty($this->options['emails']['retrievepassword']['message']) ) {
368
+ $replace_this = array('/%blogname%/', '/%siteurl%/', '/%reseturl%/', '/%user_login%/', '/%user_email%/', '/%key%/', '/%user_ip%/');
369
+ $replace_with = array(get_option('blogname'), get_option('siteurl'), site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login'), $user->user_login, $user->user_email, $key, $_SERVER['REMOTE_ADDR']);
370
+ $message = preg_replace($replace_this, $replace_with, $this->options['emails']['retrievepassword']['message']);
371
+ }
372
+ return $message;
373
+ }
374
+
375
+ function PasswordResetTitle($title, $user) {
376
+ if ( !empty($this->options['emails']['resetpassword']['subject']) ) {
377
+ $replace_this = array('/%blogname%/', '/%siteurl%/', '/%user_login%/', '/%user_email%/', '/%user_ip%/');
378
+ $replace_with = array(get_option('blogname'), get_option('siteurl'), $user->user_login, $user->user_email, $_SERVER['REMOTE_ADDR']);
379
+ $title = preg_replace($replace_this, $replace_with, $this->options['emails']['resetpassword']['subject']);
380
+ }
381
+ return $title;
382
+ }
383
+
384
+ function PasswordResetMessage($message, $new_pass, $user) {
385
+ if ( !empty($this->options['emails']['resetpassword']['message']) ) {
386
+ $replace_this = array('/%blogname%/', '/%siteurl%/', '/%user_login%/', '/%user_email%/', '/%user_pass%/', '/%user_ip%/');
387
+ $replace_with = array(get_option('blogname'), get_option('siteurl'), $user->user_login, $user->user_email, $new_pass, $_SERVER['REMOTE_ADDR']);
388
+ $message = preg_replace($replace_this, $replace_with, $this->options['emails']['resetpassword']['message']);
389
+ }
390
+ return $message;
391
+ }
392
+
393
+ function ThemeMyLoginShortcode($args = '', $is_page = false) {
394
+ global $WPLogin;
395
+
396
+ if ( empty($WPLogin) )
397
+ $WPLogin = new WPLogin();
398
+
399
+ if ( is_page($this->options['general']['page_id']) && !$is_page )
400
+ return;
401
+
402
+ $instance = ( isset($args['instance']) ) ? $args['instance'] : $this->NewInstance();
403
+
404
+ $options = $this->options;
405
+ foreach ( $args as $key => $value ) {
406
+ if ( !is_array($value) ) {
407
+ if ( in_array($key, array('welcome', 'login', 'register', 'lostpassword', 'logout')) )
408
+ $options['titles'][$key] = $value;
409
+ elseif ( in_array($key, array('register', 'success', 'lostpassword')) )
410
+ $options['messages'][$key] = $value;
411
+ elseif ( in_array($key, array('default_action', 'show_all_msgs', 'show_title', 'show_links', 'registration', 'lostpassword', 'show_logged', 'show_gravatar', 'gravatar_size', 'before_widget', 'after_widget', 'before_title', 'after_title')) )
412
+ $options['widget'][$key] = $value;
413
+ } else {
414
+ foreach ( $value as $k => $v )
415
+ $options[$key][$k] = $v;
416
+ }
417
+ }
418
+ /*
419
+ foreach ( $this->options as $type => $tmp ) {
420
+ if ( isset($args[$type]) )
421
+ $options[$type] = array_merge($tmp, $args[$type]);
422
+ else
423
+ $options[$type] = $tmp;
424
+ }
425
+ */
426
+
427
+ return $WPLogin->Display($instance, $options);
428
+ }
429
+
430
+
431
+ function ThemeMyLoginPageShortcode($args = '') {
432
+ $args['widget']['default_action'] = 'login';
433
+ $args['widget']['show_title'] = '0';
434
+ $args['widget']['show_all_msgs'] = '1';
435
+ $args['widget']['before_widget'] = '';
436
+ $args['widget']['after_widget'] = '';
437
+ return $this->ThemeMyLoginShortcode($args, true);
438
+ }
439
+
440
+ function TemplateTag($args = '') {
441
+ $args = wp_parse_args($args);
442
+ return $this->ThemeMyLoginShortcode($args);
443
+ }
444
+
445
+ function NewInstance() {
446
+ $this->instances++;
447
+ return 'tml-' . $this->instances;
448
+ }
449
  }
450
  }
451
 
 
452
  if (class_exists('ThemeMyLogin')) {
453
  global $wp_version;
454
 
455
  $ThemeMyLogin = new ThemeMyLogin();
456
+
457
+ if ( version_compare($wp_version, '2.8', '>=') ) {
458
+ require (WP_PLUGIN_DIR . '/theme-my-login/classes/class.widget-new.php');
459
  } else {
460
+ require (WP_PLUGIN_DIR . '/theme-my-login/classes/class.widget-old.php');
461
  }
462
 
463
+ function theme_my_login($args = '') {
464
+ global $ThemeMyLogin;
465
+
466
+ echo $ThemeMyLogin->TemplateTag($args);
467
+ }
468
+
469
+ if ( !function_exists('wp_new_user_notification') ) :
470
+ function wp_new_user_notification($user_id, $plaintext_pass = '') {
471
+ global $ThemeMyLogin;
472
+
473
+ $user = new WP_User($user_id);
 
 
 
 
 
 
 
 
 
 
474
 
475
+ $user_login = stripslashes($user->user_login);
476
+ $user_email = stripslashes($user->user_email);
477
+
478
+ if ( !$ThemeMyLogin->options['emails']['newregistration']['admin-disable'] ) {
479
+ $message = sprintf(__('New user registration on your blog %s:'), get_option('blogname')) . "\r\n\r\n";
480
+ $message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
481
+ $message .= sprintf(__('E-mail: %s'), $user_email) . "\r\n";
482
+
483
+ @wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration'), get_option('blogname')), $message);
484
+ }
485
+
486
+ if ( empty($plaintext_pass) )
487
+ return;
488
+
489
+ if ( !$ThemeMyLogin->options['emails']['newregistration']['user-disable'] ) {
490
+ $subject = $ThemeMyLogin->options['emails']['newregistration']['subject'];
491
+ $message = $ThemeMyLogin->options['emails']['newregistration']['message'];
492
+ $replace_this = array('/%blogname%/', '/%siteurl%/', '/%user_login%/', '/%user_email%/', '/%user_pass%/', '/%user_ip%/');
493
+ $replace_with = array(get_option('blogname'), get_option('siteurl'), $user->user_login, $user->user_email, $plaintext_pass, $_SERVER['REMOTE_ADDR']);
494
+
495
+ if ( !empty($subject) )
496
+ $subject = preg_replace($replace_this, $replace_with, $subject);
 
 
 
497
  else
498
+ $subject = sprintf(__('[%s] Your username and password'), get_option('blogname'));
499
+ if ( !empty($message) )
500
+ $message = preg_replace($replace_this, $replace_with, $message);
501
+ else {
502
+ $message = sprintf(__('Username: %s'), $user_login) . "\r\n";
503
+ $message .= sprintf(__('Password: %s'), $plaintext_pass) . "\r\n";
504
+ $message .= wp_login_url() . "\r\n";
505
+ }
506
+
507
+ wp_mail($user_email, $subject, $message);
508
  }
509
+
510
  }
511
+ endif;
512
+
513
  }
514
 
515
  ?>