Version Description
Fixed Fatal error!
Download this release
Release Info
Developer | austyfrosty |
Plugin | Custom Login |
Version | 1.1.4 |
Comparing to | |
See all releases |
Version 1.1.4
- custom-login.php +272 -0
- languages/custom-login-es_ES.mo +0 -0
- languages/custom-login-es_ES.po +157 -0
- languages/custom-login-tr_TR.mo +0 -0
- languages/custom-login-tr_TR.po +490 -0
- languages/custom-login.mo +0 -0
- languages/custom-login.po +158 -0
- languages/custom-login.pot +404 -0
- library/admin/Sprite.jpg +0 -0
- library/admin/admin.php +925 -0
- library/admin/dashboard.php +168 -0
- library/admin/presstrends.php +69 -0
- library/css/admin.css +49 -0
- library/css/custom-login.css +171 -0
- library/css/custom-login.css.php +133 -0
- library/css/tabs.css +47 -0
- library/js/arrow.gif +0 -0
- library/js/cross.gif +0 -0
- library/js/custom-login.js +54 -0
- library/js/gravatar.js +6 -0
- library/js/hs.png +0 -0
- library/js/hv.png +0 -0
- library/js/jquery.autosize.js +171 -0
- library/js/jscolor.js +953 -0
- license.txt +339 -0
- readme.html +118 -0
- readme.txt +440 -0
- screenshot-1.png +0 -0
- screenshot-2.png +0 -0
custom-login.php
ADDED
@@ -0,0 +1,272 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Plugin Name: Custom Login lite
|
4 |
+
* Plugin URI: http://austinpassy.com/wordpress-plugins/custom-login
|
5 |
+
* Description: A simple way to customize your WordPress login screen! Use the built in, easy to use <a href="./options-general.php?page=custom-login">settings</a> page to do the work for you. So simple a neanderthal can do it! Now featuring a HTML & CSS box for advanced users. Share you designs on <a href="http://flickr.com/groups/custom-login/">Flickr</a> or upgrade to the <a href="http://thefrosty.com/custom-login-pro/">PRO</a> version!
|
6 |
+
* Version: 1.1.4
|
7 |
+
* Author: Austin Passy
|
8 |
+
* Author URI: http://austinpassy.com
|
9 |
+
*
|
10 |
+
* @copyright 2009 - 2013
|
11 |
+
* @author Austin Passy
|
12 |
+
* @link http://frostywebdesigns.com/
|
13 |
+
* @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
14 |
+
*
|
15 |
+
* This program is distributed in the hope that it will be useful,
|
16 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
17 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
18 |
+
*
|
19 |
+
* @package CustomLogin
|
20 |
+
*/
|
21 |
+
|
22 |
+
/* Set up the plugin. */
|
23 |
+
add_action( 'plugins_loaded', 'custom_login_setup' );
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Sets up the Custom Login plugin and loads files at the appropriate time.
|
27 |
+
*
|
28 |
+
* @since 0.8
|
29 |
+
*/
|
30 |
+
function custom_login_setup() {
|
31 |
+
/* Load translations. */
|
32 |
+
load_plugin_textdomain( 'custom-login', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
|
33 |
+
|
34 |
+
/* Set constant path to the Custom Login plugin directory. */
|
35 |
+
define( 'CUSTOM_LOGIN', 'custom-login' );
|
36 |
+
define( 'CUSTOM_LOGIN_SETTINGS', 'custom_login_settings' );
|
37 |
+
define( 'CUSTOM_LOGIN_DIR', plugin_dir_path( __FILE__ ) );
|
38 |
+
define( 'CUSTOM_LOGIN_ADMIN', CUSTOM_LOGIN_DIR . 'library/admin/' );
|
39 |
+
define( 'CUSTOM_LOGIN_FILE', __FILE__ );
|
40 |
+
|
41 |
+
/* Set constant path to the Custom Login plugin URL. */
|
42 |
+
define( 'CUSTOM_LOGIN_URL', plugin_dir_url( __FILE__ ) );
|
43 |
+
define( 'CUSTOM_LOGIN_CSS', CUSTOM_LOGIN_URL . 'library/css/' );
|
44 |
+
define( 'CUSTOM_LOGIN_JS', CUSTOM_LOGIN_URL . 'library/js/' );
|
45 |
+
|
46 |
+
if ( is_admin() ) {
|
47 |
+
require_once( CUSTOM_LOGIN_ADMIN . 'admin.php' );
|
48 |
+
|
49 |
+
if ( custom_login_get_setting( 'hide_dashboard' ) != true )
|
50 |
+
require_once( CUSTOM_LOGIN_ADMIN . 'dashboard.php' );
|
51 |
+
|
52 |
+
if ( custom_login_get_setting( 'disable_presstrends' ) != true )
|
53 |
+
require_once( CUSTOM_LOGIN_ADMIN . 'presstrends.php' );
|
54 |
+
}
|
55 |
+
|
56 |
+
/* Add a settings page to the plugin menu */
|
57 |
+
add_filter( 'plugin_action_links', 'custom_login_plugin_actions', 10, 2 );
|
58 |
+
|
59 |
+
/* Filter in your URL */
|
60 |
+
add_filter( 'login_headerurl', 'custom_login_url' );
|
61 |
+
/* Filter in your description */
|
62 |
+
add_filter( 'login_headertitle', 'custom_login_title' );
|
63 |
+
|
64 |
+
/* Load the login head */
|
65 |
+
add_action( 'login_head', 'custom_login_head', 1 );
|
66 |
+
add_action( 'login_enqueue_scripts', 'custom_login_login_scripts' );
|
67 |
+
|
68 |
+
add_action( 'login_footer', 'custom_login_custom_html' );
|
69 |
+
add_action( 'login_footer', 'custom_login_footer_js' );
|
70 |
+
|
71 |
+
do_action( 'custom_login_loaded' );
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* Replace the defualt link to your URL
|
76 |
+
*
|
77 |
+
* @since 0.8
|
78 |
+
*/
|
79 |
+
function custom_login_url() {
|
80 |
+
return get_bloginfo( 'siteurl' );
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* Replace the defualt title to your description
|
85 |
+
*
|
86 |
+
* @since 0.8
|
87 |
+
*/
|
88 |
+
function custom_login_title() {
|
89 |
+
return get_bloginfo( 'description' );
|
90 |
+
}
|
91 |
+
|
92 |
+
/**
|
93 |
+
* Function for quickly grabbing settings for the plugin without having to call get_option()
|
94 |
+
* every time we need a setting.
|
95 |
+
*
|
96 |
+
* @since 0.8
|
97 |
+
* @update 1.1
|
98 |
+
*/
|
99 |
+
function custom_login_get_setting( $option = '' ) {
|
100 |
+
global $custom_login;
|
101 |
+
|
102 |
+
if ( !$option )
|
103 |
+
return false;
|
104 |
+
|
105 |
+
/* Hopefully a fix to the PHP 5.4 issue */
|
106 |
+
if ( !$custom_login ) {
|
107 |
+
$custom_login = new stdClass;
|
108 |
+
}
|
109 |
+
|
110 |
+
if ( !isset( $custom_login->settings ) )
|
111 |
+
$custom_login->settings = get_option( 'custom_login_settings' ); //Getting error in PHP 5.4 (http://wordpress.org/support/topic/custom-login-and-php-54?replies=2#post-3702829)
|
112 |
+
|
113 |
+
if ( !is_array( $custom_login->settings ) || empty( $custom_login->settings[$option] ) )
|
114 |
+
return false;
|
115 |
+
|
116 |
+
return $custom_login->settings[$option];
|
117 |
+
}
|
118 |
+
|
119 |
+
/**
|
120 |
+
* WordPress 3.x check
|
121 |
+
*
|
122 |
+
* @since 0.8
|
123 |
+
*/
|
124 |
+
if ( !function_exists( 'is_version' ) ) {
|
125 |
+
function is_version( $version = '3.0' ) {
|
126 |
+
global $wp_version;
|
127 |
+
|
128 |
+
if ( version_compare( $wp_version, $version, '<' ) ) {
|
129 |
+
return false;
|
130 |
+
}
|
131 |
+
return true;
|
132 |
+
}
|
133 |
+
}
|
134 |
+
|
135 |
+
/**
|
136 |
+
* Add stylesheet to the login head
|
137 |
+
*
|
138 |
+
* @since 1.1.2
|
139 |
+
*/
|
140 |
+
function custom_login_head() {
|
141 |
+
}
|
142 |
+
|
143 |
+
/**
|
144 |
+
* Add stylesheet to the login head
|
145 |
+
* For some reason wp_enqueue_script enqueue's but doesn't output
|
146 |
+
* the scripts. So I have to *_print_scripts.
|
147 |
+
*
|
148 |
+
* @since 1.1.2
|
149 |
+
*/
|
150 |
+
function custom_login_login_scripts() {
|
151 |
+
/* Generator */
|
152 |
+
echo '<meta name="generator" content="Custom Login lite" />' . "\n";
|
153 |
+
|
154 |
+
/* Scripts */
|
155 |
+
wp_register_script( 'gravatar', CUSTOM_LOGIN_JS . 'gravatar.js', array( 'jquery' ), '1.2', false );
|
156 |
+
|
157 |
+
if ( ( custom_login_get_setting( 'custom_jquery' ) != '' || custom_login_get_setting( 'gravatar' ) != false ) && get_option( 'users_can_register' ) ) {
|
158 |
+
wp_enqueue_script( array( 'jquery', 'gravatar' ) ); // Enqueue to the $wp_scripts engine (doesn't output).
|
159 |
+
wp_print_scripts( array( 'jquery', 'gravatar' ) ); // Output the registered scripts.
|
160 |
+
}
|
161 |
+
|
162 |
+
/* Styles */
|
163 |
+
wp_register_style( 'custom-login-defualt', CUSTOM_LOGIN_CSS . 'custom-login.css', false, '0.8', 'screen' );
|
164 |
+
|
165 |
+
if ( custom_login_get_setting( 'custom' ) != false ) {
|
166 |
+
require_once( trailingslashit( CUSTOM_LOGIN_DIR ) . 'library/css/custom-login.css.php' );
|
167 |
+
} else {
|
168 |
+
wp_enqueue_style( 'custom-login-defualt' );
|
169 |
+
wp_print_styles( 'custom-login-defualt' );
|
170 |
+
}
|
171 |
+
}
|
172 |
+
|
173 |
+
/**
|
174 |
+
* Add html to the footer
|
175 |
+
*
|
176 |
+
* @since 0.4.6
|
177 |
+
* @updated 1.1.2
|
178 |
+
*/
|
179 |
+
function custom_login_footer_js() {
|
180 |
+
global $custom_login;
|
181 |
+
|
182 |
+
if ( false != custom_login_get_setting( 'gravatar' ) ) { ?>
|
183 |
+
|
184 |
+
<script type='text/javascript'>
|
185 |
+
//<![CDATA[
|
186 |
+
jQuery(document).ready(
|
187 |
+
function($) {
|
188 |
+
<?php if ( get_option( 'users_can_register' ) ) { ?>
|
189 |
+
var email = $('#user_email').size();
|
190 |
+
if ( email > 0 ) {
|
191 |
+
$('#user_email').parent().parent().css('position','relative');
|
192 |
+
$('#user_email').parent().append('<span id="working"></span>');
|
193 |
+
$('#user_email').parent().append('<img id="gravatar" style="display:none; position:relative; top:10px; width:37px" />');
|
194 |
+
$('#user_email').css('width','80.4%').getGravatar({
|
195 |
+
avatarSize: 48,
|
196 |
+
start: function(){
|
197 |
+
$('#working').fadeIn('fast');
|
198 |
+
},
|
199 |
+
stop: function(){
|
200 |
+
$('#working').fadeOut('slow');
|
201 |
+
},
|
202 |
+
url: '/includes/get-gravatar.php',
|
203 |
+
fallback: 'http://0.gravatar.com/avatar/ad516503a11cd5ca435acc9bb6523536'
|
204 |
+
});
|
205 |
+
|
206 |
+
$('#working').hide();
|
207 |
+
$('img#gravatar').delay(2000).fadeTo(400,1);
|
208 |
+
}
|
209 |
+
<?php } ?>
|
210 |
+
}
|
211 |
+
);
|
212 |
+
//]]>
|
213 |
+
</script>
|
214 |
+
<?php }
|
215 |
+
|
216 |
+
if ( '' != custom_login_get_setting( 'custom_jquery' ) ) { ?>
|
217 |
+
|
218 |
+
<script type='text/javascript'>
|
219 |
+
//<![CDATA[
|
220 |
+
jQuery(document).ready(
|
221 |
+
function($) {
|
222 |
+
<?php $jquery = str_replace( '\n', '', custom_login_get_setting( 'custom_jquery' ) ); ?>
|
223 |
+
<?php $jquery = wp_specialchars_decode( stripslashes( $jquery ), 1, 0, 1 ); ?>
|
224 |
+
<?php $jquery = htmlspecialchars( $jquery, ENT_NOQUOTES ); ?>
|
225 |
+
<?php echo $jquery; ?>
|
226 |
+
}
|
227 |
+
);
|
228 |
+
//]]>
|
229 |
+
</script>
|
230 |
+
<?php }
|
231 |
+
}
|
232 |
+
|
233 |
+
/**
|
234 |
+
* Add html to the login footer
|
235 |
+
* @since 1.1.0
|
236 |
+
*/
|
237 |
+
function custom_login_custom_html() {
|
238 |
+
if ( '' != custom_login_get_setting( 'custom_html' ) )
|
239 |
+
echo wp_specialchars_decode( stripslashes( custom_login_get_setting( 'custom_html' ) ), 1, 0, 1 );
|
240 |
+
}
|
241 |
+
|
242 |
+
|
243 |
+
/**
|
244 |
+
* Browser prefixes
|
245 |
+
*
|
246 |
+
* @since 1.1 (1/8/13)
|
247 |
+
*/
|
248 |
+
function custom_login_prefix_it( $input, $option ) {
|
249 |
+
$prefixs = array( '-webkit-', '-moz-', '-ms-', '-o-', '' );
|
250 |
+
|
251 |
+
echo "\n\t";
|
252 |
+
|
253 |
+
foreach ( $prefixs as $prefix ) {
|
254 |
+
echo trailingsemicolonit( $prefix . $input . ': ' . esc_attr( $option ) );
|
255 |
+
}
|
256 |
+
}
|
257 |
+
|
258 |
+
/**
|
259 |
+
* Add a semi colon
|
260 |
+
*
|
261 |
+
* Remove esc_attr since it's encoding single quotes in image urls with quotes.
|
262 |
+
*
|
263 |
+
* @since 1.1 (1/8/13)
|
264 |
+
* @updated 1.1.1 (1/9/13)
|
265 |
+
*/
|
266 |
+
function trailingsemicolonit( $input ) {
|
267 |
+
$input = rtrim( $input, ';' );
|
268 |
+
|
269 |
+
return $input . ";\n\t";
|
270 |
+
}
|
271 |
+
|
272 |
+
?>
|
languages/custom-login-es_ES.mo
ADDED
Binary file
|
languages/custom-login-es_ES.po
ADDED
@@ -0,0 +1,157 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of the WordPress plugin Custom Login 0.8 by Austin Passy.
|
2 |
+
# Copyright (C) 2010 Austin Passy
|
3 |
+
# This file is distributed under the same license as the Custom Login package.
|
4 |
+
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
|
5 |
+
#
|
6 |
+
msgid ""
|
7 |
+
msgstr ""
|
8 |
+
"Project-Id-Version: Custom Login 0.8\n"
|
9 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/tag/custom-login\n"
|
10 |
+
"POT-Creation-Date: 2010-09-16 22:04+0000\n"
|
11 |
+
"PO-Revision-Date: 2012-03-13 05:22-0600\n"
|
12 |
+
"Last-Translator: AA\n"
|
13 |
+
"Language-Team: -es_ES <arcos.alejandro@gmail.com>\n"
|
14 |
+
"MIME-Version: 1.0\n"
|
15 |
+
"Content-Type: text/plain; charset=utf-8\n"
|
16 |
+
"Content-Transfer-Encoding: 8bit\n"
|
17 |
+
"X-Poedit-Country: MEXICO\n"
|
18 |
+
|
19 |
+
#. #-#-#-#-# plugin.pot (Custom Login 0.8) #-#-#-#-#
|
20 |
+
#. Plugin Name of the plugin/theme
|
21 |
+
#: library/admin/admin.php:70
|
22 |
+
msgid "Custom Login"
|
23 |
+
msgstr "Custom Login"
|
24 |
+
|
25 |
+
#: library/admin/admin.php:215
|
26 |
+
msgid "Avtivation — <em>to infinity and beyond</em>"
|
27 |
+
msgstr "Avtivation — <em>al infinito y más allá</em>"
|
28 |
+
|
29 |
+
#: library/admin/admin.php:217
|
30 |
+
msgid "Announcements"
|
31 |
+
msgstr "Anuncios"
|
32 |
+
|
33 |
+
#: library/admin/admin.php:219
|
34 |
+
msgid "General Settings"
|
35 |
+
msgstr "Configuración general"
|
36 |
+
|
37 |
+
#: library/admin/admin.php:221
|
38 |
+
msgid "Advanced Settings"
|
39 |
+
msgstr "Configuración avanzada"
|
40 |
+
|
41 |
+
#: library/admin/admin.php:223
|
42 |
+
msgid "About Custom Login"
|
43 |
+
msgstr "Acerca de Custom Login"
|
44 |
+
|
45 |
+
#: library/admin/admin.php:225
|
46 |
+
msgid "Support Custom Login"
|
47 |
+
msgstr "Soporte de Custom Login"
|
48 |
+
|
49 |
+
#: library/admin/admin.php:227
|
50 |
+
msgid "Preview your work, <em>Master</em>"
|
51 |
+
msgstr "Vista previa de su trabajo, <em>Maestro</em>"
|
52 |
+
|
53 |
+
#: library/admin/admin.php:229
|
54 |
+
msgid "TheFrosty Network"
|
55 |
+
msgstr "TheFrosty Network"
|
56 |
+
|
57 |
+
#: library/admin/admin.php:242
|
58 |
+
msgid "Activate:"
|
59 |
+
msgstr "Activar:"
|
60 |
+
|
61 |
+
#: library/admin/admin.php:253
|
62 |
+
msgid "Gravatar:"
|
63 |
+
msgstr "Gravatar:"
|
64 |
+
|
65 |
+
#: library/admin/admin.php:286
|
66 |
+
msgid "Plugin:"
|
67 |
+
msgstr "Plugin:"
|
68 |
+
|
69 |
+
#: library/admin/admin.php:290
|
70 |
+
msgid "Author:"
|
71 |
+
msgstr "Autor:"
|
72 |
+
|
73 |
+
#: library/admin/admin.php:294
|
74 |
+
msgid "Description:"
|
75 |
+
msgstr "Descripción:"
|
76 |
+
|
77 |
+
#: library/admin/admin.php:309
|
78 |
+
msgid "Donate:"
|
79 |
+
msgstr "Donar:"
|
80 |
+
|
81 |
+
#: library/admin/admin.php:310
|
82 |
+
msgid "<a href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X4JPT57AWMTYW\">PayPal</a>."
|
83 |
+
msgstr "<a href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X4JPT57AWMTYW\">PayPal</a>."
|
84 |
+
|
85 |
+
#: library/admin/admin.php:313
|
86 |
+
msgid "Rate:"
|
87 |
+
msgstr "Calificar:"
|
88 |
+
|
89 |
+
#: library/admin/admin.php:314
|
90 |
+
msgid "<a href=\"http://wordpress.org/extend/plugins/custom-login/\">This plugin on WordPress.org</a>."
|
91 |
+
msgstr "<a href=\"http://wordpress.org/extend/plugins/custom-login/\">Este plugin en WordPress.org</a>."
|
92 |
+
|
93 |
+
#: library/admin/admin.php:317
|
94 |
+
msgid "Share:"
|
95 |
+
msgstr "Compartir:"
|
96 |
+
|
97 |
+
#: library/admin/admin.php:318
|
98 |
+
msgid "Your design on <a href=\"http://www.flickr.com/groups/custom-login/\"><span style=\"color:#0066DC;font-weight:bold;\">Flick</span><span style=\"color:#ff0084;font-weight:bold;\">r</span></a>."
|
99 |
+
msgstr "Su diseño en <a href=\"http://www.flickr.com/groups/custom-login/\"><span style=\"color:#0066DC;font-weight:bold;\">Flick</span><span style=\"color:#ff0084;font-weight:bold;\">r</span></a>."
|
100 |
+
|
101 |
+
#: library/admin/admin.php:321
|
102 |
+
msgid "Support:"
|
103 |
+
msgstr "Soporte:"
|
104 |
+
|
105 |
+
#: library/admin/admin.php:322
|
106 |
+
msgid "<a href=\"http://wordpress.org/tags/custom-login\">WordPress support forums</a>."
|
107 |
+
msgstr "<a href=\"http://wordpress.org/tags/custom-login\">Foros de soporte de WordPress</a>."
|
108 |
+
|
109 |
+
#: library/admin/admin.php:347
|
110 |
+
msgid "Custom CSS:"
|
111 |
+
msgstr "CSS a la medida"
|
112 |
+
|
113 |
+
#: library/admin/admin.php:362
|
114 |
+
msgid "Custom HTML:"
|
115 |
+
msgstr "HTML a la medida"
|
116 |
+
|
117 |
+
#: library/admin/admin.php:602
|
118 |
+
msgid "Don′t you feel good. You just saved me."
|
119 |
+
msgstr "Siéntase muy bien. Acabas de salvarme."
|
120 |
+
|
121 |
+
#: library/admin/admin.php:620
|
122 |
+
msgid "Custom Login Settings"
|
123 |
+
msgstr "Configuración de Custom Login"
|
124 |
+
|
125 |
+
#: library/admin/admin.php:639
|
126 |
+
msgid "Update Settings"
|
127 |
+
msgstr "Actualizar la configuración"
|
128 |
+
|
129 |
+
#: library/admin/admin.php:704
|
130 |
+
msgid "Settings"
|
131 |
+
msgstr "Opciones"
|
132 |
+
|
133 |
+
#: library/admin/admin.php:723
|
134 |
+
#, php-format
|
135 |
+
msgid "Custom Login plugin is not configured yet. It will use the defualt theme unless you configure the %1$s."
|
136 |
+
msgstr "El plugin Custom Login no está configurado aún. Usará el tema instalado por omisión a menos que usted lo configure el %1$s."
|
137 |
+
|
138 |
+
#: library/admin/dashboard.php:9
|
139 |
+
msgid "The Frosty Network <em>feeds</em>"
|
140 |
+
msgstr "El feed de Frosty Network"
|
141 |
+
|
142 |
+
#. Plugin URI of the plugin/theme
|
143 |
+
msgid "http://austinpassy.com/wordpress-plugins/custom-login"
|
144 |
+
msgstr "http://austinpassy.com/wordpress-plugins/custom-login"
|
145 |
+
|
146 |
+
#. Description of the plugin/theme
|
147 |
+
msgid "A simple way to customize your WordPress login screen! Use the built in, easy to use <a href=\"./options-general.php?page=custom-login\">settings</a> page to do the work for you. So simple a caveboy can do it! Now featuring a HTML & CSS box for advanced users. Share you designs on <a href=\"http://flickr.com/groups/custom-login/\">Flickr</a>!"
|
148 |
+
msgstr "Una forma sencila de configurar su pantalla de entrada. Modifique las opciones fáciles de usar para que hagan el trabajo por usted. ¡Tan sencillo que cualquiera puede hacerlo!. hora cuenta con soporte para HTML & CSS en su porpio campo para los usuarios avanzados. ¡Compartá sus diseños en <a href=\"http://flickr.com/groups/custom-login/\">Flickr</a>!"
|
149 |
+
|
150 |
+
#. Author of the plugin/theme
|
151 |
+
msgid "Austin Passy"
|
152 |
+
msgstr "Austin Passy"
|
153 |
+
|
154 |
+
#. Author URI of the plugin/theme
|
155 |
+
msgid "http://frostywebdesigns.com"
|
156 |
+
msgstr "http://frostywebdesigns.com"
|
157 |
+
|
languages/custom-login-tr_TR.mo
ADDED
Binary file
|
languages/custom-login-tr_TR.po
ADDED
@@ -0,0 +1,490 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: Custom Login\n"
|
4 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/tag/custom-login\n"
|
5 |
+
"POT-Creation-Date: 2012-04-02 16:51:21+00:00\n"
|
6 |
+
"PO-Revision-Date: 2013-01-11 14:37+0200\n"
|
7 |
+
"Last-Translator: HakanEr <hakanerwptr@gmail.com>\n"
|
8 |
+
"Language-Team: hakaner <hakanerwptr@gmail.com>\n"
|
9 |
+
"Language: tr_TR\n"
|
10 |
+
"MIME-Version: 1.0\n"
|
11 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
12 |
+
"Content-Transfer-Encoding: 8bit\n"
|
13 |
+
"X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
|
14 |
+
"X-Poedit-Basepath: .\n"
|
15 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
16 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
+
"X-Generator: Poedit 1.5.4\n"
|
18 |
+
"X-Poedit-SearchPath-0: .\n"
|
19 |
+
|
20 |
+
#: library/admin/admin.php:74
|
21 |
+
msgid "Custom Login"
|
22 |
+
msgstr "Custom Login"
|
23 |
+
|
24 |
+
#: library/admin/admin.php:75
|
25 |
+
msgid "Custom Login Upgrade"
|
26 |
+
msgstr "Custom Login Yükseltme"
|
27 |
+
|
28 |
+
#: library/admin/admin.php:75 library/admin/admin.php:964
|
29 |
+
msgid "Upgrade"
|
30 |
+
msgstr "Yükselt"
|
31 |
+
|
32 |
+
#: library/admin/admin.php:271
|
33 |
+
msgid "Avtivation — <em>to infinity and beyond</em>"
|
34 |
+
msgstr "Etkinleştirme — <em>sonsuzluk ve ötesine</em>"
|
35 |
+
|
36 |
+
#: library/admin/admin.php:273
|
37 |
+
msgid "Announcements"
|
38 |
+
msgstr "Duyurular"
|
39 |
+
|
40 |
+
#: library/admin/admin.php:275
|
41 |
+
msgid "About Custom Login"
|
42 |
+
msgstr "Custom Login Hakkında"
|
43 |
+
|
44 |
+
#: library/admin/admin.php:277
|
45 |
+
msgid "Support Custom Login"
|
46 |
+
msgstr "Custom Login Destekle"
|
47 |
+
|
48 |
+
#: library/admin/admin.php:279
|
49 |
+
msgid "Dashboard Widget"
|
50 |
+
msgstr "Pano Widget"
|
51 |
+
|
52 |
+
#: library/admin/admin.php:281
|
53 |
+
msgid "Preview your work, <em>Master</em>"
|
54 |
+
msgstr "Yaptığın işin ön izlemesi, <em>Üstat</em>"
|
55 |
+
|
56 |
+
#: library/admin/admin.php:285 library/admin/admin.php:286
|
57 |
+
msgid "Upgrade Custom Login"
|
58 |
+
msgstr "Custom Login Yükselt"
|
59 |
+
|
60 |
+
#: library/admin/admin.php:288
|
61 |
+
msgid "General Settings"
|
62 |
+
msgstr "Genel Ayarlar"
|
63 |
+
|
64 |
+
#: library/admin/admin.php:290
|
65 |
+
msgid "Advanced Settings"
|
66 |
+
msgstr "Gelişmiş Ayarlar"
|
67 |
+
|
68 |
+
#: library/admin/admin.php:292
|
69 |
+
msgid "TheFrosty Network"
|
70 |
+
msgstr "TheFrosty Ağı"
|
71 |
+
|
72 |
+
#: library/admin/admin.php:305
|
73 |
+
msgid "Activate:"
|
74 |
+
msgstr "Etkinleştir:"
|
75 |
+
|
76 |
+
#: library/admin/admin.php:310
|
77 |
+
msgid ""
|
78 |
+
"Check this box to use your own CSS, leave unchecked to use the default style."
|
79 |
+
msgstr ""
|
80 |
+
"Bu kutuyu işaretleyerek kendi CSS inizi kullanın, varsayılan stil için boş "
|
81 |
+
"bırakın."
|
82 |
+
|
83 |
+
#: library/admin/admin.php:315
|
84 |
+
msgid "Gravatar:"
|
85 |
+
msgstr "Gravatar:"
|
86 |
+
|
87 |
+
#: library/admin/admin.php:320
|
88 |
+
msgid "This feature only works for sites with registration enabled."
|
89 |
+
msgstr "Bu özellik yalnızca üye olma seçeneği etkin olan siteler için çalışır."
|
90 |
+
|
91 |
+
#: library/admin/admin.php:320
|
92 |
+
msgid "Check this box to activate a AJAX Gravatar image for registration."
|
93 |
+
msgstr ""
|
94 |
+
"Üye kaydında AJAX Gravatar resimlerini açmak için bu kutuyu işaretleyin."
|
95 |
+
|
96 |
+
#: library/admin/admin.php:347
|
97 |
+
msgid "Plugin:"
|
98 |
+
msgstr "Eklenti:"
|
99 |
+
|
100 |
+
#: library/admin/admin.php:351
|
101 |
+
msgid "Author:"
|
102 |
+
msgstr "Yazar:"
|
103 |
+
|
104 |
+
#: library/admin/admin.php:355
|
105 |
+
msgid "Description:"
|
106 |
+
msgstr "Açıklama:"
|
107 |
+
|
108 |
+
#: library/admin/admin.php:393
|
109 |
+
msgid "Thanks for purchasing the plugin! Here is your download link: "
|
110 |
+
msgstr "Eklentiyi satın aldığınız için teşekkürler! İndirme linkiniz burada:"
|
111 |
+
|
112 |
+
#: library/admin/admin.php:425
|
113 |
+
msgid "Hide the upgrade form?"
|
114 |
+
msgstr "Yükseltme formunu gizle?"
|
115 |
+
|
116 |
+
#: library/admin/admin.php:434
|
117 |
+
msgid ""
|
118 |
+
"Want to upgrade to Pro? If you've purchase the plugin login below to get "
|
119 |
+
"your download link. Need a login? Click %s to purchase the plugin."
|
120 |
+
msgstr ""
|
121 |
+
"Pro sürüme yükseltmek mi istiyorsunuz? Eğer eklentiyi satın aldıysanız "
|
122 |
+
"indirme linkiniz için alttan giriş yapın. Giriş yapmak mı istiyorsunuz? %s "
|
123 |
+
"tıklayarak satın alın."
|
124 |
+
|
125 |
+
#: library/admin/admin.php:466
|
126 |
+
msgid "Upgrade to Custom Login PRO"
|
127 |
+
msgstr "Custom Login PRO Yükselt"
|
128 |
+
|
129 |
+
#: library/admin/admin.php:470
|
130 |
+
msgid "You have already downloaded the plugin, download again?"
|
131 |
+
msgstr "Ekletiyi zaten indirdin, tekrar indirmek ister misin?"
|
132 |
+
|
133 |
+
#: library/admin/admin.php:471 library/admin/admin.php:899
|
134 |
+
msgid "Get download link"
|
135 |
+
msgstr "İndirme bağlantısını al"
|
136 |
+
|
137 |
+
#: library/admin/admin.php:485
|
138 |
+
msgid "Donate:"
|
139 |
+
msgstr "Bağış:"
|
140 |
+
|
141 |
+
#: library/admin/admin.php:486
|
142 |
+
msgid ""
|
143 |
+
"<a href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-"
|
144 |
+
"xclick&hosted_button_id=X4JPT57AWMTYW\">PayPal</a>."
|
145 |
+
msgstr ""
|
146 |
+
"<a href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-"
|
147 |
+
"xclick&hosted_button_id=X4JPT57AWMTYW\">PayPal</a>."
|
148 |
+
|
149 |
+
#: library/admin/admin.php:489
|
150 |
+
msgid "Rate:"
|
151 |
+
msgstr "Oy ver:"
|
152 |
+
|
153 |
+
#: library/admin/admin.php:490
|
154 |
+
msgid ""
|
155 |
+
"<a href=\"http://wordpress.org/extend/plugins/custom-login/\">This plugin on "
|
156 |
+
"WordPress.org</a>."
|
157 |
+
msgstr ""
|
158 |
+
"<a href=\"http://wordpress.org/extend/plugins/custom-login/\">WordPress.org "
|
159 |
+
"eklenti sayfasına gidin</a>."
|
160 |
+
|
161 |
+
#: library/admin/admin.php:493
|
162 |
+
msgid "Share:"
|
163 |
+
msgstr "Paylaş:"
|
164 |
+
|
165 |
+
#: library/admin/admin.php:494
|
166 |
+
msgid ""
|
167 |
+
"Your design on <a href=\"http://www.flickr.com/groups/custom-login/\"><span "
|
168 |
+
"style=\"color:#0066DC;font-weight:bold;\">Flick</span><span style=\"color:"
|
169 |
+
"#ff0084;font-weight:bold;\">r</span></a>."
|
170 |
+
msgstr ""
|
171 |
+
"Tasarımınız <a href=\"http://www.flickr.com/groups/custom-login/\"><span "
|
172 |
+
"style=\"color:#0066DC;font-weight:bold;\">Flick</span><span style=\"color:"
|
173 |
+
"#ff0084;font-weight:bold;\">r</span></a>'da."
|
174 |
+
|
175 |
+
#: library/admin/admin.php:497
|
176 |
+
msgid "Support:"
|
177 |
+
msgstr "Destek:"
|
178 |
+
|
179 |
+
#: library/admin/admin.php:498
|
180 |
+
msgid ""
|
181 |
+
"<a href=\"http://wordpress.org/tags/custom-login\">WordPress support forums</"
|
182 |
+
"a>."
|
183 |
+
msgstr ""
|
184 |
+
"<a href=\"http://wordpress.org/tags/custom-login\">WordPress destek "
|
185 |
+
"forumları</a>."
|
186 |
+
|
187 |
+
#: library/admin/admin.php:501
|
188 |
+
msgid "Go PRO:"
|
189 |
+
msgstr "PRO Sürüm:"
|
190 |
+
|
191 |
+
#: library/admin/admin.php:517
|
192 |
+
msgid "Dashboard:"
|
193 |
+
msgstr "Pano:"
|
194 |
+
|
195 |
+
#: library/admin/admin.php:521
|
196 |
+
msgid "Hide the dashboard widget?"
|
197 |
+
msgstr "Pano widget gizlensin mi?"
|
198 |
+
|
199 |
+
#: library/admin/admin.php:534
|
200 |
+
msgid "Click here to see a live preview!"
|
201 |
+
msgstr "Buraya tıklayarak ön izlemeyi gör!"
|
202 |
+
|
203 |
+
#: library/admin/admin.php:535
|
204 |
+
msgid "(May not work as of WordPress 3.1.1)"
|
205 |
+
msgstr "(WordPress 3.1.1 ile çalışmayabilir)"
|
206 |
+
|
207 |
+
#: library/admin/admin.php:554
|
208 |
+
msgid "html border-top color:"
|
209 |
+
msgstr "html üst-çerçeve rengi:"
|
210 |
+
|
211 |
+
#: library/admin/admin.php:559
|
212 |
+
msgid ""
|
213 |
+
"Use HEX color <strong>with</strong> “#” <strong>or</strong> RGB/"
|
214 |
+
"A format.<br />\r\n"
|
215 |
+
"\t\t\t\t<strong>This is the top 15px border color section</strong><br />\r\n"
|
216 |
+
"\t\t\t\tExample: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)"
|
217 |
+
"</code>"
|
218 |
+
msgstr ""
|
219 |
+
"HEX renk kodları <strong>ile</strong> “#” <strong>veya</"
|
220 |
+
"strong>RGB/A formatı kullanın.<br />\n"
|
221 |
+
"<strong>Bu üst çerçeve 15px renk bölümüdür</strong><br />\n"
|
222 |
+
"Örneğin: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)</code>"
|
223 |
+
|
224 |
+
#: library/admin/admin.php:568
|
225 |
+
msgid "html border-top background:"
|
226 |
+
msgstr "html üst-çerçeve arkaplanı:"
|
227 |
+
|
228 |
+
#: library/admin/admin.php:574
|
229 |
+
msgid ""
|
230 |
+
"This can replace the new background image at the top of the login screen. "
|
231 |
+
"Upload an image and put the full path here.<br />\r\n"
|
232 |
+
" Suggested size: <code>1px X 31px</code> (for a repeating "
|
233 |
+
"background)."
|
234 |
+
msgstr ""
|
235 |
+
"Bununla giriş ekranının üst kısmına yeni bir arka plan resmi "
|
236 |
+
"ekleyebilirsiniz. Bir resim yükleyin ve buraya tam yolunu koyun.<br />\n"
|
237 |
+
" Tavsiye boyut: <code>1px X 31px</code> (tekrarlayan bir arka "
|
238 |
+
"plan için)."
|
239 |
+
|
240 |
+
#: library/admin/admin.php:582
|
241 |
+
msgid "html background color:"
|
242 |
+
msgstr "html arkaplan rengi:"
|
243 |
+
|
244 |
+
#: library/admin/admin.php:587
|
245 |
+
msgid ""
|
246 |
+
"Use HEX color <strong>with</strong> “#” <strong>or</strong> RGB/"
|
247 |
+
"A format.<br />\r\n"
|
248 |
+
"\t\t\t\tExample: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)"
|
249 |
+
"</code>"
|
250 |
+
msgstr ""
|
251 |
+
"HEX renk kodları <strong>ile</strong> “#” <strong>veya</"
|
252 |
+
"strong>RGB/A formatı kullanın.<br />\n"
|
253 |
+
"Örneğin: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)</code>"
|
254 |
+
|
255 |
+
#: library/admin/admin.php:595
|
256 |
+
msgid "html background url:"
|
257 |
+
msgstr "html arkaplan linki:"
|
258 |
+
|
259 |
+
#: library/admin/admin.php:601
|
260 |
+
msgid ""
|
261 |
+
"Upload an image and put the full path here.<br />\r\n"
|
262 |
+
" Suggested size: <code>10px X 500px</code> (for a repeating "
|
263 |
+
"background) or<br />\r\n"
|
264 |
+
" Full size image with a 100% stretched to fit window image."
|
265 |
+
msgstr ""
|
266 |
+
"Bir resim yükleyin ve buraya tam yolunu koyun.<br />\n"
|
267 |
+
" Tavsiye boyut: <code>10px X 500px</code> (tekrarlayan bir "
|
268 |
+
"arka plan için) veya <br />\n"
|
269 |
+
" Pencereye %100 sığacak bir tam boy resim."
|
270 |
+
|
271 |
+
#: library/admin/admin.php:610
|
272 |
+
msgid "html background repeat:"
|
273 |
+
msgstr "html arkaplan tekrarı:"
|
274 |
+
|
275 |
+
#: library/admin/admin.php:615
|
276 |
+
msgid ""
|
277 |
+
"Use <code>no-repeat</code>, <code>repeat</code>, <code>repeat-x</code> or "
|
278 |
+
"<code>repeat.</code>"
|
279 |
+
msgstr ""
|
280 |
+
"<code>no-repeat</code>, <code>repeat</code>, <code>repeat-x</code> veya "
|
281 |
+
"<code>repeat.</code> kullanın"
|
282 |
+
|
283 |
+
#: library/admin/admin.php:622
|
284 |
+
msgid "Logo:"
|
285 |
+
msgstr "Logo:"
|
286 |
+
|
287 |
+
#: library/admin/admin.php:628
|
288 |
+
msgid ""
|
289 |
+
"Upload an image and put the full path here.<br />\r\n"
|
290 |
+
" Suggested size: <code>310px X 70px</code>, which will "
|
291 |
+
"replace WordPress logo. Be sure to leave blank if not in use. NOTE: Will go "
|
292 |
+
"<strong>above</strong> the form and it′s border."
|
293 |
+
msgstr ""
|
294 |
+
"Bir resim yükleyin ve buraya tam yolunu koyun.<br />\n"
|
295 |
+
" Tavsiye boyut: <code>310px X 70px</code>, WordPress logosu "
|
296 |
+
"yerini alır. Eğer kullanımda değilse boş bıraktığınızdan emin olun. NOT: "
|
297 |
+
"Formun üstü ve çereçevesine yerleşir."
|
298 |
+
|
299 |
+
#: library/admin/admin.php:637
|
300 |
+
msgid "login form background color:"
|
301 |
+
msgstr "Giriş formu arkaplan rengi:"
|
302 |
+
|
303 |
+
#: library/admin/admin.php:642 library/admin/admin.php:691
|
304 |
+
#: library/admin/admin.php:732
|
305 |
+
msgid ""
|
306 |
+
"Use HEX color <strong>with</strong> “#” or RGB/A format.<br />"
|
307 |
+
"\r\n"
|
308 |
+
"\t\t\t\tExample: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)"
|
309 |
+
"</code>"
|
310 |
+
msgstr ""
|
311 |
+
"HEX renk kodları <strong>ile</strong> “#” <strong>veya</"
|
312 |
+
"strong>RGB/A formatı kullanın.<br />\n"
|
313 |
+
"Örneğin: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)</code>"
|
314 |
+
|
315 |
+
#: library/admin/admin.php:650
|
316 |
+
msgid "login form background url:"
|
317 |
+
msgstr "Giriş formu arkaplan linki:"
|
318 |
+
|
319 |
+
#: library/admin/admin.php:664
|
320 |
+
msgid "login form border radius:"
|
321 |
+
msgstr "Giriş formu çerçeve çapı:"
|
322 |
+
|
323 |
+
#: library/admin/admin.php:669
|
324 |
+
msgid ""
|
325 |
+
"Choose your border radius, ie <code>8</code> or <code>12</code>. Do not put "
|
326 |
+
"“<strong>px</strong>”!"
|
327 |
+
msgstr ""
|
328 |
+
"Çerçeve çapını seçin, örn. <code>8</code> ya da <code>12</code>. “"
|
329 |
+
"<strong>px</strong>” koymayın!"
|
330 |
+
|
331 |
+
#: library/admin/admin.php:675
|
332 |
+
msgid "login form border thickness:"
|
333 |
+
msgstr "Giriş formu çerçeve kalınlığı:"
|
334 |
+
|
335 |
+
#: library/admin/admin.php:680
|
336 |
+
msgid ""
|
337 |
+
"Choose your border thickness, i.e. <code>1</code> or <code>2</code>. Do not "
|
338 |
+
"put “<strong>px</strong>”!"
|
339 |
+
msgstr ""
|
340 |
+
"Çerçeve kalınlığını seçin, örn. <code>1</code> ya da <code>2</code>. “"
|
341 |
+
"<strong>px</strong>” koymayın!"
|
342 |
+
|
343 |
+
#: library/admin/admin.php:686
|
344 |
+
msgid "login form border color:"
|
345 |
+
msgstr "Giriş formu çerçeve rengi:"
|
346 |
+
|
347 |
+
#: library/admin/admin.php:699
|
348 |
+
msgid "login form box shadow:"
|
349 |
+
msgstr "Giriş formu kutu gölgesi:"
|
350 |
+
|
351 |
+
#: library/admin/admin.php:707
|
352 |
+
msgid ""
|
353 |
+
"Choose your box shadow settings, i.e. <code>5px 5px 18px #464646</code> "
|
354 |
+
"<em>example code - <code>offset, offset, blur, color</code></em>."
|
355 |
+
msgstr ""
|
356 |
+
"Kutu gölge ayarlarını seçin, örn. <code>5px 5px 18px #464646</code> "
|
357 |
+
"<em>örnek kod - <code>konum, konum, bulanıklık, renk</code></em>."
|
358 |
+
|
359 |
+
#: library/admin/admin.php:714
|
360 |
+
msgid "login form padding fix:"
|
361 |
+
msgstr "Giriş formu dolgu düzeltme:"
|
362 |
+
|
363 |
+
#: library/admin/admin.php:719
|
364 |
+
msgid "Select the box if you would like the padding of the form to fit better."
|
365 |
+
msgstr "Eğer daha uyumlu bir form dolgusu istiyorsanız kutuyu işaretleyin."
|
366 |
+
|
367 |
+
#: library/admin/admin.php:728
|
368 |
+
msgid "label font color:"
|
369 |
+
msgstr "Font etiket rengi:"
|
370 |
+
|
371 |
+
#: library/admin/admin.php:750
|
372 |
+
msgid "Custom CSS:"
|
373 |
+
msgstr "Kişisel CSS:"
|
374 |
+
|
375 |
+
#: library/admin/admin.php:755
|
376 |
+
msgid ""
|
377 |
+
"Use this box to enter any custom CSS code that may not be shown below.<br />"
|
378 |
+
"\r\n"
|
379 |
+
" <strong>Example:</strong> <code>.login #backtoblog a { color:"
|
380 |
+
"#990000; }</code><br />\r\n"
|
381 |
+
" § <strong>Example:</strong> <code>#snow { display:"
|
382 |
+
"block; position:absolute; } #snow img { height:auto; width:100%; }</"
|
383 |
+
"code><br />\r\n"
|
384 |
+
" § example CSS code for custom html code example.."
|
385 |
+
msgstr ""
|
386 |
+
"Bu kutuyu kullanarak altta gösterilmeyen herhangi bir kişisel CSS kodu girin."
|
387 |
+
"<br />\n"
|
388 |
+
"<strong>Örnek:</strong> <code>.login #backtoblog a { color:#990000; }</"
|
389 |
+
"code><br />\n"
|
390 |
+
" § <strong>Örnek:</strong> <code>#snow { display:block; "
|
391 |
+
"position:absolute; } #snow img { height:auto; width:100%; }</code><br />\n"
|
392 |
+
" § Kişisel html kod örneği için kişisel CSS kod "
|
393 |
+
"örneğidir.."
|
394 |
+
|
395 |
+
#: library/admin/admin.php:765
|
396 |
+
msgid "Custom HTML:"
|
397 |
+
msgstr "Kişisel HTML:"
|
398 |
+
|
399 |
+
#: library/admin/admin.php:770
|
400 |
+
msgid ""
|
401 |
+
"Use this box to enter any custom HTML coded that you can add custom style to "
|
402 |
+
"in the custom CSS box.<br />\r\n"
|
403 |
+
" <strong>Example:</strong> <code><div id=\"snow\"><"
|
404 |
+
"img src=\"../image.jpg\" alt=\"\" /></div><br /><div id=\"snow-"
|
405 |
+
"bird\"> </div></code>"
|
406 |
+
msgstr ""
|
407 |
+
"Bu kutuyu kullanarak kişisel CSS kutusuna girdiğiniz kişisel stil için "
|
408 |
+
"kodlanmış kişisel HTML kodlarını girin.<br />\n"
|
409 |
+
" <strong>Örnek:</strong> <code><div id=\"snow\"><img "
|
410 |
+
"src=\"../image.jpg\" alt=\"\" /></div><br /><div id=\"snow-bird"
|
411 |
+
"\"> </div></code>"
|
412 |
+
|
413 |
+
#: library/admin/admin.php:823
|
414 |
+
msgid "Don′t you feel good. You just saved me."
|
415 |
+
msgstr "İyi hissetmiyor musun. Beni kurtardın."
|
416 |
+
|
417 |
+
#: library/admin/admin.php:841
|
418 |
+
msgid "Custom Login Settings"
|
419 |
+
msgstr "Custom Login Ayarları"
|
420 |
+
|
421 |
+
#: library/admin/admin.php:861
|
422 |
+
msgid "Update Settings"
|
423 |
+
msgstr "Ayarları Güncelle"
|
424 |
+
|
425 |
+
#: library/admin/admin.php:884
|
426 |
+
msgid "Custom Login Pro Upgrade Check"
|
427 |
+
msgstr "Custom Login Pro Yükseltme Kontrolu"
|
428 |
+
|
429 |
+
#: library/admin/admin.php:962
|
430 |
+
msgid "Settings"
|
431 |
+
msgstr "Ayarlar"
|
432 |
+
|
433 |
+
#: library/admin/admin.php:982
|
434 |
+
msgid ""
|
435 |
+
"Custom Login plugin is not configured yet. It will use the defualt theme "
|
436 |
+
"unless you configure the %1$s."
|
437 |
+
msgstr ""
|
438 |
+
"Custom Login eklentisi henüz yapılandırılmadı. %1$s ayarlamadığınız sürece "
|
439 |
+
"varsayılan temayı kullanır."
|
440 |
+
|
441 |
+
#: library/admin/dashboard.php:9
|
442 |
+
msgid "The Frosty Network <em>feeds</em>"
|
443 |
+
msgstr "The Frosty Ağ <em>beslemesi</em>"
|
444 |
+
|
445 |
+
#. Plugin Name of the plugin/theme
|
446 |
+
msgid "Custom Login lite"
|
447 |
+
msgstr "Custom Login lite"
|
448 |
+
|
449 |
+
#. Plugin URI of the plugin/theme
|
450 |
+
msgid "http://austinpassy.com/wordpress-plugins/custom-login"
|
451 |
+
msgstr "http://austinpassy.com/wordpress-plugins/custom-login"
|
452 |
+
|
453 |
+
#. Description of the plugin/theme
|
454 |
+
msgid ""
|
455 |
+
"A simple way to customize your WordPress login screen! Use the built in, "
|
456 |
+
"easy to use <a href=\"./options-general.php?page=custom-login\">settings</a> "
|
457 |
+
"page to do the work for you. So simple a neanderthal can do it! Now "
|
458 |
+
"featuring a HTML & CSS box for advanced users. Share you designs on <a "
|
459 |
+
"href=\"http://flickr.com/groups/custom-login/\">Flickr</a> or upgrade to the "
|
460 |
+
"<a href=\"http://thefrosty.com/custom-login-pro/\">PRO</a> version!"
|
461 |
+
msgstr ""
|
462 |
+
"WordPress giriş ekranını kişiselleştirmek için kolay bir yol! İşinizi yapmak "
|
463 |
+
"için yerleşik, kullanımı kolay <a href=\"./options-general.php?page=custom-"
|
464 |
+
"login\">ayarlar</a> sayfası. Bir mağara adamının bile yapabileceği "
|
465 |
+
"basitlikte! Şimdi, gelişmiş kullanıcılar için HTML & CSS özellikleri de "
|
466 |
+
"var. Tasarımlarınızı <a href=\"http://flickr.com/groups/custom-login/"
|
467 |
+
"\">Flickr</a> üzerinde paylaşın veya <a href=\"http://thefrosty.com/custom-"
|
468 |
+
"login-pro/\">PRO</a> sürüme yükseltin!"
|
469 |
+
|
470 |
+
#. Author of the plugin/theme
|
471 |
+
msgid "Austin Passy"
|
472 |
+
msgstr "Austin Passy"
|
473 |
+
|
474 |
+
#. Author URI of the plugin/theme
|
475 |
+
msgid "http://frostywebdesigns.com"
|
476 |
+
msgstr "http://frostywebdesigns.com"
|
477 |
+
|
478 |
+
#~ msgid ""
|
479 |
+
#~ "<a href=\"http://thefrosty.com/custom-login-pro/?ref=custom-login&url="
|
480 |
+
#~ msgstr ""
|
481 |
+
#~ "<a href=\"http://thefrosty.com/custom-login-pro/?ref=custom-login&url="
|
482 |
+
|
483 |
+
#~ msgid ""
|
484 |
+
#~ "Upload an image and put the full path here. Suggested size: <code>308px X "
|
485 |
+
#~ "108px</code><br />\n"
|
486 |
+
#~ " My suggestion: use a transparent .png or .gif. <a href=\""
|
487 |
+
#~ msgstr ""
|
488 |
+
#~ "Bir resim yükleyin ve buraya tam yolunu koyun. Tavsiye boyut: <code>308px "
|
489 |
+
#~ "X 108px</code><br />\n"
|
490 |
+
#~ "Benim önerim: transparan bir png ya da .gif kullanın. <a href=\""
|
languages/custom-login.mo
ADDED
Binary file
|
languages/custom-login.po
ADDED
@@ -0,0 +1,158 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of the WordPress plugin Custom Login 0.8 by Austin Passy.
|
2 |
+
# Copyright (C) 2010 Austin Passy
|
3 |
+
# This file is distributed under the same license as the Custom Login package.
|
4 |
+
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
|
5 |
+
#
|
6 |
+
msgid ""
|
7 |
+
msgstr ""
|
8 |
+
"Project-Id-Version: Custom Login\n"
|
9 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/tag/custom-login\n"
|
10 |
+
"POT-Creation-Date: 2010-09-16 22:04+0000\n"
|
11 |
+
"PO-Revision-Date: 2012-10-02 11:38-0800\n"
|
12 |
+
"Last-Translator: Austin Passy <austin@thefrosty.com>\n"
|
13 |
+
"Language-Team: \n"
|
14 |
+
"MIME-Version: 1.0\n"
|
15 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
16 |
+
"Content-Transfer-Encoding: 8bit\n"
|
17 |
+
"X-Poedit-KeywordsList: __;_e\n"
|
18 |
+
"X-Poedit-Basepath: .\n"
|
19 |
+
|
20 |
+
#. #-#-#-#-# plugin.pot (Custom Login 0.8) #-#-#-#-#
|
21 |
+
#. Plugin Name of the plugin/theme
|
22 |
+
#: library/admin/admin.php:70
|
23 |
+
msgid "Custom Login"
|
24 |
+
msgstr ""
|
25 |
+
|
26 |
+
#: library/admin/admin.php:215
|
27 |
+
msgid "Avtivation — <em>to infinity and beyond</em>"
|
28 |
+
msgstr ""
|
29 |
+
|
30 |
+
#: library/admin/admin.php:217
|
31 |
+
msgid "Announcements"
|
32 |
+
msgstr ""
|
33 |
+
|
34 |
+
#: library/admin/admin.php:219
|
35 |
+
msgid "General Settings"
|
36 |
+
msgstr ""
|
37 |
+
|
38 |
+
#: library/admin/admin.php:221
|
39 |
+
msgid "Advanced Settings"
|
40 |
+
msgstr ""
|
41 |
+
|
42 |
+
#: library/admin/admin.php:223
|
43 |
+
msgid "About Custom Login"
|
44 |
+
msgstr ""
|
45 |
+
|
46 |
+
#: library/admin/admin.php:225
|
47 |
+
msgid "Support Custom Login"
|
48 |
+
msgstr ""
|
49 |
+
|
50 |
+
#: library/admin/admin.php:227
|
51 |
+
msgid "Preview your work, <em>Master</em>"
|
52 |
+
msgstr ""
|
53 |
+
|
54 |
+
#: library/admin/admin.php:229
|
55 |
+
msgid "TheFrosty Network"
|
56 |
+
msgstr ""
|
57 |
+
|
58 |
+
#: library/admin/admin.php:242
|
59 |
+
msgid "Activate:"
|
60 |
+
msgstr ""
|
61 |
+
|
62 |
+
#: library/admin/admin.php:253
|
63 |
+
msgid "Gravatar:"
|
64 |
+
msgstr ""
|
65 |
+
|
66 |
+
#: library/admin/admin.php:286
|
67 |
+
msgid "Plugin:"
|
68 |
+
msgstr ""
|
69 |
+
|
70 |
+
#: library/admin/admin.php:290
|
71 |
+
msgid "Author:"
|
72 |
+
msgstr ""
|
73 |
+
|
74 |
+
#: library/admin/admin.php:294
|
75 |
+
msgid "Description:"
|
76 |
+
msgstr ""
|
77 |
+
|
78 |
+
#: library/admin/admin.php:309
|
79 |
+
msgid "Donate:"
|
80 |
+
msgstr ""
|
81 |
+
|
82 |
+
#: library/admin/admin.php:310
|
83 |
+
msgid "<a href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X4JPT57AWMTYW\">PayPal</a>."
|
84 |
+
msgstr ""
|
85 |
+
|
86 |
+
#: library/admin/admin.php:313
|
87 |
+
msgid "Rate:"
|
88 |
+
msgstr ""
|
89 |
+
|
90 |
+
#: library/admin/admin.php:314
|
91 |
+
msgid "<a href=\"http://wordpress.org/extend/plugins/custom-login/\">This plugin on WordPress.org</a>."
|
92 |
+
msgstr ""
|
93 |
+
|
94 |
+
#: library/admin/admin.php:317
|
95 |
+
msgid "Share:"
|
96 |
+
msgstr ""
|
97 |
+
|
98 |
+
#: library/admin/admin.php:318
|
99 |
+
msgid "Your design on <a href=\"http://www.flickr.com/groups/custom-login/\"><span style=\"color:#0066DC;font-weight:bold;\">Flick</span><span style=\"color:#ff0084;font-weight:bold;\">r</span></a>."
|
100 |
+
msgstr ""
|
101 |
+
|
102 |
+
#: library/admin/admin.php:321
|
103 |
+
msgid "Support:"
|
104 |
+
msgstr ""
|
105 |
+
|
106 |
+
#: library/admin/admin.php:322
|
107 |
+
msgid "<a href=\"http://wordpress.org/tags/custom-login\">WordPress support forums</a>."
|
108 |
+
msgstr ""
|
109 |
+
|
110 |
+
#: library/admin/admin.php:347
|
111 |
+
msgid "Custom CSS:"
|
112 |
+
msgstr ""
|
113 |
+
|
114 |
+
#: library/admin/admin.php:362
|
115 |
+
msgid "Custom HTML:"
|
116 |
+
msgstr ""
|
117 |
+
|
118 |
+
#: library/admin/admin.php:602
|
119 |
+
msgid "Don′t you feel good. You just saved me."
|
120 |
+
msgstr ""
|
121 |
+
|
122 |
+
#: library/admin/admin.php:620
|
123 |
+
msgid "Custom Login Settings"
|
124 |
+
msgstr ""
|
125 |
+
|
126 |
+
#: library/admin/admin.php:639
|
127 |
+
msgid "Update Settings"
|
128 |
+
msgstr ""
|
129 |
+
|
130 |
+
#: library/admin/admin.php:704
|
131 |
+
msgid "Settings"
|
132 |
+
msgstr ""
|
133 |
+
|
134 |
+
#: library/admin/admin.php:723
|
135 |
+
#, php-format
|
136 |
+
msgid "Custom Login plugin is not configured yet. It will use the defualt theme unless you configure the %1$s."
|
137 |
+
msgstr ""
|
138 |
+
|
139 |
+
#: library/admin/dashboard.php:9
|
140 |
+
msgid "The Frosty Network <em>feeds</em>"
|
141 |
+
msgstr ""
|
142 |
+
|
143 |
+
#. Plugin URI of the plugin/theme
|
144 |
+
msgid "http://austinpassy.com/wordpress-plugins/custom-login"
|
145 |
+
msgstr ""
|
146 |
+
|
147 |
+
#. Description of the plugin/theme
|
148 |
+
msgid "A simple way to customize your WordPress login screen! Use the built in, easy to use <a href=\"./options-general.php?page=custom-login\">settings</a> page to do the work for you. So simple a caveboy can do it! Now featuring a HTML & CSS box for advanced users. Share you designs on <a href=\"http://flickr.com/groups/custom-login/\">Flickr</a>!"
|
149 |
+
msgstr ""
|
150 |
+
|
151 |
+
#. Author of the plugin/theme
|
152 |
+
msgid "Austin Passy"
|
153 |
+
msgstr ""
|
154 |
+
|
155 |
+
#. Author URI of the plugin/theme
|
156 |
+
msgid "http://frostywebdesigns.com"
|
157 |
+
msgstr ""
|
158 |
+
|
languages/custom-login.pot
ADDED
@@ -0,0 +1,404 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2012 Custom Login lite
|
2 |
+
# This file is distributed under the same license as the Custom Login lite package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: Custom Login lite 1.0.1\n"
|
6 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/tag/custom-login\n"
|
7 |
+
"POT-Creation-Date: 2012-04-02 16:51:21+00:00\n"
|
8 |
+
"MIME-Version: 1.0\n"
|
9 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
+
"Content-Transfer-Encoding: 8bit\n"
|
11 |
+
"PO-Revision-Date: 2012-MO-DA HO:MI+ZONE\n"
|
12 |
+
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
+
"Language-Team: LANGUAGE <LL@li.org>\n"
|
14 |
+
|
15 |
+
#: library/admin/admin.php:74
|
16 |
+
msgid "Custom Login"
|
17 |
+
msgstr ""
|
18 |
+
|
19 |
+
#: library/admin/admin.php:75
|
20 |
+
msgid "Custom Login Upgrade"
|
21 |
+
msgstr ""
|
22 |
+
|
23 |
+
#: library/admin/admin.php:75 library/admin/admin.php:964
|
24 |
+
msgid "Upgrade"
|
25 |
+
msgstr ""
|
26 |
+
|
27 |
+
#: library/admin/admin.php:271
|
28 |
+
msgid "Avtivation — <em>to infinity and beyond</em>"
|
29 |
+
msgstr ""
|
30 |
+
|
31 |
+
#: library/admin/admin.php:273
|
32 |
+
msgid "Announcements"
|
33 |
+
msgstr ""
|
34 |
+
|
35 |
+
#: library/admin/admin.php:275
|
36 |
+
msgid "About Custom Login"
|
37 |
+
msgstr ""
|
38 |
+
|
39 |
+
#: library/admin/admin.php:277
|
40 |
+
msgid "Support Custom Login"
|
41 |
+
msgstr ""
|
42 |
+
|
43 |
+
#: library/admin/admin.php:279
|
44 |
+
msgid "Dashboard Widget"
|
45 |
+
msgstr ""
|
46 |
+
|
47 |
+
#: library/admin/admin.php:281
|
48 |
+
msgid "Preview your work, <em>Master</em>"
|
49 |
+
msgstr ""
|
50 |
+
|
51 |
+
#: library/admin/admin.php:285 library/admin/admin.php:286
|
52 |
+
msgid "Upgrade Custom Login"
|
53 |
+
msgstr ""
|
54 |
+
|
55 |
+
#: library/admin/admin.php:288
|
56 |
+
msgid "General Settings"
|
57 |
+
msgstr ""
|
58 |
+
|
59 |
+
#: library/admin/admin.php:290
|
60 |
+
msgid "Advanced Settings"
|
61 |
+
msgstr ""
|
62 |
+
|
63 |
+
#: library/admin/admin.php:292
|
64 |
+
msgid "TheFrosty Network"
|
65 |
+
msgstr ""
|
66 |
+
|
67 |
+
#: library/admin/admin.php:305
|
68 |
+
msgid "Activate:"
|
69 |
+
msgstr ""
|
70 |
+
|
71 |
+
#: library/admin/admin.php:310
|
72 |
+
msgid ""
|
73 |
+
"Check this box to use your own CSS, leave unchecked to use the default style."
|
74 |
+
msgstr ""
|
75 |
+
|
76 |
+
#: library/admin/admin.php:315
|
77 |
+
msgid "Gravatar:"
|
78 |
+
msgstr ""
|
79 |
+
|
80 |
+
#: library/admin/admin.php:320
|
81 |
+
msgid "This feature only works for sites with registration enabled."
|
82 |
+
msgstr ""
|
83 |
+
|
84 |
+
#: library/admin/admin.php:320
|
85 |
+
msgid "Check this box to activate a AJAX Gravatar image for registration."
|
86 |
+
msgstr ""
|
87 |
+
|
88 |
+
#: library/admin/admin.php:347
|
89 |
+
msgid "Plugin:"
|
90 |
+
msgstr ""
|
91 |
+
|
92 |
+
#: library/admin/admin.php:351
|
93 |
+
msgid "Author:"
|
94 |
+
msgstr ""
|
95 |
+
|
96 |
+
#: library/admin/admin.php:355
|
97 |
+
msgid "Description:"
|
98 |
+
msgstr ""
|
99 |
+
|
100 |
+
#: library/admin/admin.php:393
|
101 |
+
msgid "Thanks for purchasing the plugin! Here is your download link: "
|
102 |
+
msgstr ""
|
103 |
+
|
104 |
+
#: library/admin/admin.php:425
|
105 |
+
msgid "Hide the upgrade form?"
|
106 |
+
msgstr ""
|
107 |
+
|
108 |
+
#: library/admin/admin.php:434
|
109 |
+
msgid ""
|
110 |
+
"Want to upgrade to Pro? If you've purchase the plugin login below to get "
|
111 |
+
"your download link. Need a login? Click %s to purchase the plugin."
|
112 |
+
msgstr ""
|
113 |
+
|
114 |
+
#: library/admin/admin.php:466
|
115 |
+
msgid "Upgrade to Custom Login PRO"
|
116 |
+
msgstr ""
|
117 |
+
|
118 |
+
#: library/admin/admin.php:470
|
119 |
+
msgid "You have already downloaded the plugin, download again?"
|
120 |
+
msgstr ""
|
121 |
+
|
122 |
+
#: library/admin/admin.php:471 library/admin/admin.php:899
|
123 |
+
msgid "Get download link"
|
124 |
+
msgstr ""
|
125 |
+
|
126 |
+
#: library/admin/admin.php:485
|
127 |
+
msgid "Donate:"
|
128 |
+
msgstr ""
|
129 |
+
|
130 |
+
#: library/admin/admin.php:486
|
131 |
+
msgid ""
|
132 |
+
"<a href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-"
|
133 |
+
"xclick&hosted_button_id=X4JPT57AWMTYW\">PayPal</a>."
|
134 |
+
msgstr ""
|
135 |
+
|
136 |
+
#: library/admin/admin.php:489
|
137 |
+
msgid "Rate:"
|
138 |
+
msgstr ""
|
139 |
+
|
140 |
+
#: library/admin/admin.php:490
|
141 |
+
msgid ""
|
142 |
+
"<a href=\"http://wordpress.org/extend/plugins/custom-login/\">This plugin on "
|
143 |
+
"WordPress.org</a>."
|
144 |
+
msgstr ""
|
145 |
+
|
146 |
+
#: library/admin/admin.php:493
|
147 |
+
msgid "Share:"
|
148 |
+
msgstr ""
|
149 |
+
|
150 |
+
#: library/admin/admin.php:494
|
151 |
+
msgid ""
|
152 |
+
"Your design on <a href=\"http://www.flickr.com/groups/custom-login/\"><span "
|
153 |
+
"style=\"color:#0066DC;font-weight:bold;\">Flick</span><span style=\"color:"
|
154 |
+
"#ff0084;font-weight:bold;\">r</span></a>."
|
155 |
+
msgstr ""
|
156 |
+
|
157 |
+
#: library/admin/admin.php:497
|
158 |
+
msgid "Support:"
|
159 |
+
msgstr ""
|
160 |
+
|
161 |
+
#: library/admin/admin.php:498
|
162 |
+
msgid ""
|
163 |
+
"<a href=\"http://wordpress.org/tags/custom-login\">WordPress support forums</"
|
164 |
+
"a>."
|
165 |
+
msgstr ""
|
166 |
+
|
167 |
+
#: library/admin/admin.php:501
|
168 |
+
msgid "Go PRO:"
|
169 |
+
msgstr ""
|
170 |
+
|
171 |
+
#: library/admin/admin.php:517
|
172 |
+
msgid "Dashboard:"
|
173 |
+
msgstr ""
|
174 |
+
|
175 |
+
#: library/admin/admin.php:521
|
176 |
+
msgid "Hide the dashboard widget?"
|
177 |
+
msgstr ""
|
178 |
+
|
179 |
+
#: library/admin/admin.php:534
|
180 |
+
msgid "Click here to see a live preview!"
|
181 |
+
msgstr ""
|
182 |
+
|
183 |
+
#: library/admin/admin.php:535
|
184 |
+
msgid "(May not work as of WordPress 3.1.1)"
|
185 |
+
msgstr ""
|
186 |
+
|
187 |
+
#: library/admin/admin.php:554
|
188 |
+
msgid "html border-top color:"
|
189 |
+
msgstr ""
|
190 |
+
|
191 |
+
#: library/admin/admin.php:559
|
192 |
+
msgid ""
|
193 |
+
"Use HEX color <strong>with</strong> “#” <strong>or</strong> RGB/"
|
194 |
+
"A format.<br />\r\n"
|
195 |
+
"\t\t\t\t<strong>This is the top 15px border color section</strong><br />\r\n"
|
196 |
+
"\t\t\t\tExample: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)"
|
197 |
+
"</code>"
|
198 |
+
msgstr ""
|
199 |
+
|
200 |
+
#: library/admin/admin.php:568
|
201 |
+
msgid "html border-top background:"
|
202 |
+
msgstr ""
|
203 |
+
|
204 |
+
#: library/admin/admin.php:574
|
205 |
+
msgid ""
|
206 |
+
"This can replace the new background image at the top of the login screen. "
|
207 |
+
"Upload an image and put the full path here.<br />\r\n"
|
208 |
+
" Suggested size: <code>1px X 31px</code> (for a repeating "
|
209 |
+
"background)."
|
210 |
+
msgstr ""
|
211 |
+
|
212 |
+
#: library/admin/admin.php:582
|
213 |
+
msgid "html background color:"
|
214 |
+
msgstr ""
|
215 |
+
|
216 |
+
#: library/admin/admin.php:587
|
217 |
+
msgid ""
|
218 |
+
"Use HEX color <strong>with</strong> “#” <strong>or</strong> RGB/"
|
219 |
+
"A format.<br />\r\n"
|
220 |
+
"\t\t\t\tExample: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)"
|
221 |
+
"</code>"
|
222 |
+
msgstr ""
|
223 |
+
|
224 |
+
#: library/admin/admin.php:595
|
225 |
+
msgid "html background url:"
|
226 |
+
msgstr ""
|
227 |
+
|
228 |
+
#: library/admin/admin.php:601
|
229 |
+
msgid ""
|
230 |
+
"Upload an image and put the full path here.<br />\r\n"
|
231 |
+
" Suggested size: <code>10px X 500px</code> (for a repeating "
|
232 |
+
"background) or<br />\r\n"
|
233 |
+
" Full size image with a 100% stretched to fit window image."
|
234 |
+
msgstr ""
|
235 |
+
|
236 |
+
#: library/admin/admin.php:610
|
237 |
+
msgid "html background repeat:"
|
238 |
+
msgstr ""
|
239 |
+
|
240 |
+
#: library/admin/admin.php:615
|
241 |
+
msgid ""
|
242 |
+
"Use <code>no-repeat</code>, <code>repeat</code>, <code>repeat-x</code> or "
|
243 |
+
"<code>repeat.</code>"
|
244 |
+
msgstr ""
|
245 |
+
|
246 |
+
#: library/admin/admin.php:622
|
247 |
+
msgid "Logo:"
|
248 |
+
msgstr ""
|
249 |
+
|
250 |
+
#: library/admin/admin.php:628
|
251 |
+
msgid ""
|
252 |
+
"Upload an image and put the full path here.<br />\r\n"
|
253 |
+
" Suggested size: <code>310px X 70px</code>, which will "
|
254 |
+
"replace WordPress logo. Be sure to leave blank if not in use. NOTE: Will go "
|
255 |
+
"<strong>above</strong> the form and it′s border."
|
256 |
+
msgstr ""
|
257 |
+
|
258 |
+
#: library/admin/admin.php:637
|
259 |
+
msgid "login form background color:"
|
260 |
+
msgstr ""
|
261 |
+
|
262 |
+
#: library/admin/admin.php:642 library/admin/admin.php:691
|
263 |
+
#: library/admin/admin.php:732
|
264 |
+
msgid ""
|
265 |
+
"Use HEX color <strong>with</strong> “#” or RGB/A format.<br />"
|
266 |
+
"\r\n"
|
267 |
+
"\t\t\t\tExample: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)"
|
268 |
+
"</code>"
|
269 |
+
msgstr ""
|
270 |
+
|
271 |
+
#: library/admin/admin.php:650
|
272 |
+
msgid "login form background url:"
|
273 |
+
msgstr ""
|
274 |
+
|
275 |
+
#: library/admin/admin.php:664
|
276 |
+
msgid "login form border radius:"
|
277 |
+
msgstr ""
|
278 |
+
|
279 |
+
#: library/admin/admin.php:669
|
280 |
+
msgid ""
|
281 |
+
"Choose your border radius, ie <code>8</code> or <code>12</code>. Do not put "
|
282 |
+
"“<strong>px</strong>”!"
|
283 |
+
msgstr ""
|
284 |
+
|
285 |
+
#: library/admin/admin.php:675
|
286 |
+
msgid "login form border thickness:"
|
287 |
+
msgstr ""
|
288 |
+
|
289 |
+
#: library/admin/admin.php:680
|
290 |
+
msgid ""
|
291 |
+
"Choose your border thickness, i.e. <code>1</code> or <code>2</code>. Do not "
|
292 |
+
"put “<strong>px</strong>”!"
|
293 |
+
msgstr ""
|
294 |
+
|
295 |
+
#: library/admin/admin.php:686
|
296 |
+
msgid "login form border color:"
|
297 |
+
msgstr ""
|
298 |
+
|
299 |
+
#: library/admin/admin.php:699
|
300 |
+
msgid "login form box shadow:"
|
301 |
+
msgstr ""
|
302 |
+
|
303 |
+
#: library/admin/admin.php:707
|
304 |
+
msgid ""
|
305 |
+
"Choose your box shadow settings, i.e. <code>5px 5px 18px #464646</code> "
|
306 |
+
"<em>example code - <code>offset, offset, blur, color</code></em>."
|
307 |
+
msgstr ""
|
308 |
+
|
309 |
+
#: library/admin/admin.php:714
|
310 |
+
msgid "login form padding fix:"
|
311 |
+
msgstr ""
|
312 |
+
|
313 |
+
#: library/admin/admin.php:719
|
314 |
+
msgid "Select the box if you would like the padding of the form to fit better."
|
315 |
+
msgstr ""
|
316 |
+
|
317 |
+
#: library/admin/admin.php:728
|
318 |
+
msgid "label font color:"
|
319 |
+
msgstr ""
|
320 |
+
|
321 |
+
#: library/admin/admin.php:750
|
322 |
+
msgid "Custom CSS:"
|
323 |
+
msgstr ""
|
324 |
+
|
325 |
+
#: library/admin/admin.php:755
|
326 |
+
msgid ""
|
327 |
+
"Use this box to enter any custom CSS code that may not be shown below.<br />"
|
328 |
+
"\r\n"
|
329 |
+
" <strong>Example:</strong> <code>.login #backtoblog a { color:"
|
330 |
+
"#990000; }</code><br />\r\n"
|
331 |
+
" § <strong>Example:</strong> <code>#snow { display:"
|
332 |
+
"block; position:absolute; } #snow img { height:auto; width:100%; }</"
|
333 |
+
"code><br />\r\n"
|
334 |
+
" § example CSS code for custom html code example.."
|
335 |
+
msgstr ""
|
336 |
+
|
337 |
+
#: library/admin/admin.php:765
|
338 |
+
msgid "Custom HTML:"
|
339 |
+
msgstr ""
|
340 |
+
|
341 |
+
#: library/admin/admin.php:770
|
342 |
+
msgid ""
|
343 |
+
"Use this box to enter any custom HTML coded that you can add custom style to "
|
344 |
+
"in the custom CSS box.<br />\r\n"
|
345 |
+
" <strong>Example:</strong> <code><div id=\"snow\"><"
|
346 |
+
"img src=\"../image.jpg\" alt=\"\" /></div><br /><div id=\"snow-"
|
347 |
+
"bird\"> </div></code>"
|
348 |
+
msgstr ""
|
349 |
+
|
350 |
+
#: library/admin/admin.php:823
|
351 |
+
msgid "Don′t you feel good. You just saved me."
|
352 |
+
msgstr ""
|
353 |
+
|
354 |
+
#: library/admin/admin.php:841
|
355 |
+
msgid "Custom Login Settings"
|
356 |
+
msgstr ""
|
357 |
+
|
358 |
+
#: library/admin/admin.php:861
|
359 |
+
msgid "Update Settings"
|
360 |
+
msgstr ""
|
361 |
+
|
362 |
+
#: library/admin/admin.php:884
|
363 |
+
msgid "Custom Login Pro Upgrade Check"
|
364 |
+
msgstr ""
|
365 |
+
|
366 |
+
#: library/admin/admin.php:962
|
367 |
+
msgid "Settings"
|
368 |
+
msgstr ""
|
369 |
+
|
370 |
+
#: library/admin/admin.php:982
|
371 |
+
msgid ""
|
372 |
+
"Custom Login plugin is not configured yet. It will use the defualt theme "
|
373 |
+
"unless you configure the %1$s."
|
374 |
+
msgstr ""
|
375 |
+
|
376 |
+
#: library/admin/dashboard.php:9
|
377 |
+
msgid "The Frosty Network <em>feeds</em>"
|
378 |
+
msgstr ""
|
379 |
+
|
380 |
+
#. Plugin Name of the plugin/theme
|
381 |
+
msgid "Custom Login lite"
|
382 |
+
msgstr ""
|
383 |
+
|
384 |
+
#. Plugin URI of the plugin/theme
|
385 |
+
msgid "http://austinpassy.com/wordpress-plugins/custom-login"
|
386 |
+
msgstr ""
|
387 |
+
|
388 |
+
#. Description of the plugin/theme
|
389 |
+
msgid ""
|
390 |
+
"A simple way to customize your WordPress login screen! Use the built in, "
|
391 |
+
"easy to use <a href=\"./options-general.php?page=custom-login\">settings</a> "
|
392 |
+
"page to do the work for you. So simple a neanderthal can do it! Now "
|
393 |
+
"featuring a HTML & CSS box for advanced users. Share you designs on <a "
|
394 |
+
"href=\"http://flickr.com/groups/custom-login/\">Flickr</a> or upgrade to the "
|
395 |
+
"<a href=\"http://thefrosty.com/custom-login-pro/\">PRO</a> version!"
|
396 |
+
msgstr ""
|
397 |
+
|
398 |
+
#. Author of the plugin/theme
|
399 |
+
msgid "Austin Passy"
|
400 |
+
msgstr ""
|
401 |
+
|
402 |
+
#. Author URI of the plugin/theme
|
403 |
+
msgid "http://frostywebdesigns.com"
|
404 |
+
msgstr ""
|
library/admin/Sprite.jpg
ADDED
Binary file
|
library/admin/admin.php
ADDED
@@ -0,0 +1,925 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Administration functions for loading and displaying the settings page and saving settings
|
4 |
+
* are handled in this file.
|
5 |
+
*
|
6 |
+
* @package CustomLogin
|
7 |
+
*/
|
8 |
+
|
9 |
+
/* Initialize the theme admin functionality. */
|
10 |
+
add_action( 'init', 'custom_login_admin_init' );
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Initializes the theme administration functions.
|
14 |
+
*
|
15 |
+
* @since 0.8
|
16 |
+
*/
|
17 |
+
function custom_login_admin_init() {
|
18 |
+
add_action( 'admin_init', 'custom_login_scripts' );
|
19 |
+
|
20 |
+
add_action( 'admin_init', 'custom_login_styles' );
|
21 |
+
|
22 |
+
add_action( 'admin_menu', 'custom_login_settings_page_init' );
|
23 |
+
|
24 |
+
add_action( 'custom_login_update_settings_page', 'custom_login_save_settings' );
|
25 |
+
}
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Register the javascript.
|
29 |
+
*
|
30 |
+
* @since 0.8
|
31 |
+
*/
|
32 |
+
function custom_login_scripts() {
|
33 |
+
$plugin_data = get_plugin_data( CUSTOM_LOGIN_DIR . 'custom-login.php' );
|
34 |
+
|
35 |
+
wp_register_script( 'autosize', CUSTOM_LOGIN_JS . 'jquery.autosize.js', array( 'jquery' ), '1.15.3', false );
|
36 |
+
|
37 |
+
wp_register_script( 'custom-login', CUSTOM_LOGIN_JS . 'custom-login.js', array( 'jquery' ), $plugin_data['Version'], false );
|
38 |
+
|
39 |
+
wp_register_script( 'jscolor', CUSTOM_LOGIN_JS . 'jscolor.js', false, '1.4.0', false );
|
40 |
+
|
41 |
+
wp_register_script( 'gravatar', CUSTOM_LOGIN_JS . 'gravatar.js', array( 'jquery' ), '1.2', false );
|
42 |
+
}
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Register the stylesheets.
|
46 |
+
*
|
47 |
+
* @since 0.8
|
48 |
+
*/
|
49 |
+
function custom_login_styles() {
|
50 |
+
$plugin_data = get_plugin_data( CUSTOM_LOGIN_DIR . 'custom-login.php' );
|
51 |
+
|
52 |
+
wp_register_style( 'custom-login-tabs', CUSTOM_LOGIN_CSS . 'tabs.css', false, $plugin_data['Version'], 'screen' );
|
53 |
+
|
54 |
+
wp_register_style( 'custom-login-admin', CUSTOM_LOGIN_CSS . 'admin.css', false, $plugin_data['Version'], 'screen' );
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Sets up the cleaner gallery settings page and loads the appropriate functions when needed.
|
59 |
+
*
|
60 |
+
* @since 0.8
|
61 |
+
*/
|
62 |
+
function custom_login_settings_page_init() {
|
63 |
+
global $custom_login;
|
64 |
+
|
65 |
+
$role = 'manage_options';
|
66 |
+
$img = '<div style="width: 16px; height: 16px; overflow: hidden; display: block; float: left;"><img src="' . plugin_dir_url( __FILE__ ) . 'Sprite.jpg" style="background-position: -31px 0 !important" /></div>';
|
67 |
+
$img = '';
|
68 |
+
|
69 |
+
/* Create the theme settings page. */
|
70 |
+
$custom_login->settings_page = add_options_page( __( 'Custom Login', 'custom-login' ), $img . __( 'Custom Login', 'custom-login' ), $role, 'custom-login', 'custom_login_settings_page' );
|
71 |
+
|
72 |
+
/* Register the default theme settings meta boxes. */
|
73 |
+
add_action( "load-{$custom_login->settings_page}", 'custom_login_create_settings_meta_boxes' );
|
74 |
+
|
75 |
+
/* Make sure the settings are saved. */
|
76 |
+
add_action( "load-{$custom_login->settings_page}", 'custom_login_load_settings_page' );
|
77 |
+
|
78 |
+
/* Load the JavaScript and stylehsheets needed for the theme settings. */
|
79 |
+
add_action( "load-{$custom_login->settings_page}", 'custom_login_settings_page_enqueue_script' );
|
80 |
+
add_action( "load-{$custom_login->settings_page}", 'custom_login_settings_page_enqueue_style' );
|
81 |
+
|
82 |
+
add_action( "admin_head-{$custom_login->settings_page}", 'custom_login_settings_page_load_scripts' );
|
83 |
+
}
|
84 |
+
|
85 |
+
/**
|
86 |
+
* Returns an array with the default plugin settings.
|
87 |
+
*
|
88 |
+
* @since 0.8
|
89 |
+
*/
|
90 |
+
function custom_login_settings() {
|
91 |
+
$plugin_data = get_plugin_data( CUSTOM_LOGIN_DIR . 'custom-login.php' );
|
92 |
+
|
93 |
+
$settings = array(
|
94 |
+
'version' => $plugin_data['Version'],
|
95 |
+
/* Activate */
|
96 |
+
'custom' => false,
|
97 |
+
/* Gravatar */
|
98 |
+
'gravatar' => false,
|
99 |
+
/* Core */
|
100 |
+
'hide_dashboard' => false,
|
101 |
+
'disable_presstrends' => false,
|
102 |
+
/* Upgrade */
|
103 |
+
'hide_upgrade' => false,
|
104 |
+
'upgrade_complete' => false, //if the upgrade is good, hide it all forever.
|
105 |
+
/* Custom css */
|
106 |
+
'custom_css' => '',
|
107 |
+
/* Custom html */
|
108 |
+
'custom_html' => '',
|
109 |
+
/* Custom jQUery */
|
110 |
+
'custom_jquery' => '',
|
111 |
+
/* html */
|
112 |
+
'html_border_top_color' => '', //WP < 3.x
|
113 |
+
'html_border_top_background' => '', //WP > 3.x
|
114 |
+
'html_background_color' => '',
|
115 |
+
'html_background_url' => '',
|
116 |
+
'html_background_repeat' => 'repeat-x',
|
117 |
+
'html_background_size' => 'cover',
|
118 |
+
/* Login form */
|
119 |
+
'login_form_logo' => '',
|
120 |
+
'login_form_border_top_color' => '',
|
121 |
+
'login_form_background_color' => '',
|
122 |
+
'login_form_background' => '',
|
123 |
+
'login_form_background_size' => 'cover',
|
124 |
+
'login_form_border_radius' => '11',
|
125 |
+
'login_form_border' => '1',
|
126 |
+
'login_form_border_color' => '',
|
127 |
+
/* Box Shadows */
|
128 |
+
'login_form_box_shadow_1' => '5',
|
129 |
+
'login_form_box_shadow_2' => '5',
|
130 |
+
'login_form_box_shadow_3' => '18',
|
131 |
+
'login_form_box_shadow_4' => '#464646',
|
132 |
+
/* Form Padding */
|
133 |
+
'login_form_padding_top' => true,
|
134 |
+
/* Label color */
|
135 |
+
'label_color' => '#ffffff',
|
136 |
+
);
|
137 |
+
return apply_filters( 'custom_login_settings', $settings );
|
138 |
+
}
|
139 |
+
|
140 |
+
/**
|
141 |
+
* Function run at load time of the settings page, which is useful for hooking save functions into.
|
142 |
+
*
|
143 |
+
* @since 0.8
|
144 |
+
*/
|
145 |
+
function custom_login_load_settings_page() {
|
146 |
+
|
147 |
+
//delete_option( 'custom_login_settings' );
|
148 |
+
/* Get theme settings from the database. */
|
149 |
+
$settings = get_option( 'custom_login_settings' );
|
150 |
+
|
151 |
+
///////////////////////////////////////////////////////////////////////////////////////////////
|
152 |
+
// TO BE REMOVED IN VERSION 0.9 //
|
153 |
+
/* If the old settings are available, delete the old settings. */
|
154 |
+
//if ( !empty( $settings['use_custom'] ) ) {
|
155 |
+
//delete_option( 'custom_login_settings' );
|
156 |
+
|
157 |
+
/* Redirect the page so that the settings are reflected on the settings page. */
|
158 |
+
//wp_redirect( admin_url( 'options-general.php?page=custom-login' ) );
|
159 |
+
//exit;
|
160 |
+
//}
|
161 |
+
///////////////////////////////////////////////////////////////////////////////////////////////
|
162 |
+
|
163 |
+
/* If no settings are available, add the default settings to the database. */
|
164 |
+
if ( empty( $settings ) ) {
|
165 |
+
add_option( 'custom_login_settings', custom_login_settings(), '', 'yes' );
|
166 |
+
|
167 |
+
/* Redirect the page so that the settings are reflected on the settings page. */
|
168 |
+
wp_redirect( admin_url( 'options-general.php?page=custom-login' ) );
|
169 |
+
exit;
|
170 |
+
}
|
171 |
+
|
172 |
+
/* If the form has been submitted, check the referer and execute available actions. */
|
173 |
+
elseif ( isset( $_POST['custom-login-settings-submit'] ) ) {
|
174 |
+
|
175 |
+
/* Make sure the form is valid. */
|
176 |
+
check_admin_referer( 'custom-login-settings-page' );
|
177 |
+
|
178 |
+
/* Available hook for saving settings. */
|
179 |
+
do_action( 'custom_login_update_settings_page' );
|
180 |
+
|
181 |
+
/* Redirect the page so that the new settings are reflected on the settings page. */
|
182 |
+
wp_redirect( admin_url( 'options-general.php?page=custom-login&updated=true' ) );
|
183 |
+
exit;
|
184 |
+
}
|
185 |
+
}
|
186 |
+
|
187 |
+
|
188 |
+
/**
|
189 |
+
* Validates the plugin settings.
|
190 |
+
*
|
191 |
+
* @since 0.8
|
192 |
+
*/
|
193 |
+
function custom_login_save_settings() {
|
194 |
+
|
195 |
+
/* Get the current theme settings. */
|
196 |
+
$settings = get_option( 'custom_login_settings' );
|
197 |
+
$plugin_data = get_plugin_data( CUSTOM_LOGIN_DIR . 'custom-login.php' );
|
198 |
+
|
199 |
+
$settings['version'] = ( ( isset( $_POST['version'] ) ) ? esc_html( $_POST['version'] ) : $plugin_data['Version'] );
|
200 |
+
$settings['custom'] = ( ( isset( $_POST['custom'] ) ) ? true : false );
|
201 |
+
$settings['gravatar'] = ( ( isset( $_POST['gravatar'] ) ) ? true : false );
|
202 |
+
$settings['hide_dashboard'] = ( ( isset( $_POST['hide_dashboard'] ) ) ? true : false );
|
203 |
+
$settings['disable_presstrends'] = ( ( isset( $_POST['disable_presstrends'] ) ) ? true : false );
|
204 |
+
$settings['hide_upgrade'] = ( ( isset( $_POST['hide_upgrade'] ) ) ? true : false );
|
205 |
+
|
206 |
+
$settings['custom_css'] = esc_html( $_POST['custom_css'] );
|
207 |
+
$settings['custom_html'] = esc_html( $_POST['custom_html'] );
|
208 |
+
$settings['custom_jquery'] = esc_html( $_POST['custom_jquery'] );
|
209 |
+
|
210 |
+
$settings['html_border_top_color'] = ( ( isset( $_POST['html_border_top_color'] ) ) ? esc_html( $_POST['html_border_top_color'] ) : '' ); // > 3.0.x
|
211 |
+
$settings['html_border_top_background'] = isset( $_POST['html_border_top_background'] ) ? esc_html( $_POST['html_border_top_background'] ) : '';
|
212 |
+
$settings['html_background_color'] = esc_html( $_POST['html_background_color'] );
|
213 |
+
$settings['html_background_url'] = esc_html( $_POST['html_background_url'] );
|
214 |
+
$settings['html_background_repeat'] = esc_attr( $_POST['html_background_repeat'] );
|
215 |
+
$settings['html_background_size'] = esc_attr( $_POST['html_background_size'] );
|
216 |
+
|
217 |
+
$settings['login_form_logo'] = esc_html( $_POST['login_form_logo'] );
|
218 |
+
$settings['login_form_border_top_color'] = ( ( isset( $_POST['login_form_border_top_color'] ) ) ? esc_html( $_POST['login_form_border_top_color'] ) : '' );
|
219 |
+
$settings['login_form_background_color'] = esc_html( $_POST['login_form_background_color'] );
|
220 |
+
$settings['login_form_background'] = esc_html( $_POST['login_form_background'] );
|
221 |
+
$settings['login_form_background_size'] = esc_attr( $_POST['login_form_background_size'] );
|
222 |
+
$settings['login_form_border_radius'] = esc_html( $_POST['login_form_border_radius'] );
|
223 |
+
$settings['login_form_border'] = esc_html( $_POST['login_form_border'] );
|
224 |
+
$settings['login_form_border_color'] = esc_html( $_POST['login_form_border_color'] );
|
225 |
+
$settings['login_form_box_shadow_1'] = esc_html( $_POST['login_form_box_shadow_1'] );
|
226 |
+
$settings['login_form_box_shadow_2'] = esc_html( $_POST['login_form_box_shadow_2'] );
|
227 |
+
$settings['login_form_box_shadow_3'] = esc_html( $_POST['login_form_box_shadow_3'] );
|
228 |
+
$settings['login_form_box_shadow_4'] = esc_html( $_POST['login_form_box_shadow_4'] );
|
229 |
+
$settings['login_form_padding_top'] = ( ( isset( $_POST['login_form_padding_top'] ) ) ? true : false );
|
230 |
+
$settings['label_color'] = esc_html( $_POST['label_color'] );
|
231 |
+
|
232 |
+
/* Update the theme settings. */
|
233 |
+
$updated = update_option( 'custom_login_settings', $settings );
|
234 |
+
}
|
235 |
+
|
236 |
+
/**
|
237 |
+
* Registers the plugin meta boxes for use on the settings page.
|
238 |
+
*
|
239 |
+
* @since 0.8
|
240 |
+
*/
|
241 |
+
function custom_login_create_settings_meta_boxes() {
|
242 |
+
global $custom_login;
|
243 |
+
|
244 |
+
|
245 |
+
add_meta_box( 'custom-login-activate-meta-box', __( 'Avtivation — <em>to infinity and beyond</em>', 'custom-login' ), 'custom_login_activate_meta_box', $custom_login->settings_page, 'normal', 'high' );
|
246 |
+
|
247 |
+
add_meta_box( 'custom-login-announcement-meta-box', __( 'Announcements', 'custom-login' ), 'custom_login_announcement_meta_box', $custom_login->settings_page, 'normal', 'high' );
|
248 |
+
|
249 |
+
add_meta_box( 'custom-login-about-meta-box', __( 'About Custom Login', 'custom-login' ), 'custom_login_about_meta_box', $custom_login->settings_page, 'advanced', 'high' );
|
250 |
+
|
251 |
+
add_meta_box( 'custom-login-support-meta-box', __( 'Support Custom Login', 'custom-login' ), 'custom_login_support_meta_box', $custom_login->settings_page, 'advanced', 'high' );
|
252 |
+
|
253 |
+
add_meta_box( 'custom-login-dasboard-meta-box', __( 'Core Settings', 'custom-login' ), 'custom_login_dashboard_meta_box', $custom_login->settings_page, 'advanced', 'high' );
|
254 |
+
|
255 |
+
add_meta_box( 'custom-login-preview-meta-box', __( 'Preview your work, <em>Master</em>', 'custom-login' ), 'custom_login_preview_meta_box', $custom_login->settings_page, 'advanced', 'high' );
|
256 |
+
|
257 |
+
/* Remove the upgrade meta box when upgrade is good */
|
258 |
+
add_meta_box( 'custom-login-upgrade-link-meta-box', __( 'Upgrade Custom Login', 'custom-login' ), 'custom_login_upgrade_link_meta_box', $custom_login->settings_page, 'advanced', 'high' );
|
259 |
+
|
260 |
+
add_meta_box( 'custom-login-general-meta-box', __( 'General Settings', 'custom-login' ), 'custom_login_general_meta_box', $custom_login->settings_page, 'normal', 'high' );
|
261 |
+
|
262 |
+
add_meta_box( 'custom-login-advanced-meta-box', __( 'Advanced Settings', 'custom-login' ), 'custom_login_advanced_meta_box', $custom_login->settings_page, 'normal', 'high' );
|
263 |
+
|
264 |
+
add_meta_box( 'custom-login-tabs-meta-box', __( 'TheFrosty Network', 'custom-login' ), 'custom_login_tabs_meta_box', $custom_login->settings_page, 'side', 'low' );
|
265 |
+
}
|
266 |
+
|
267 |
+
/**
|
268 |
+
* Displays activation meta box.
|
269 |
+
*
|
270 |
+
* @since 0.8
|
271 |
+
*/
|
272 |
+
function custom_login_activate_meta_box() { ?>
|
273 |
+
|
274 |
+
<table class="form-table side">
|
275 |
+
<tr>
|
276 |
+
<th>
|
277 |
+
<label for="custom"><?php _e( 'Activate:', 'custom-login' ); ?></label>
|
278 |
+
</th>
|
279 |
+
<td>
|
280 |
+
<input id="custom" name="custom" type="checkbox" <?php checked( custom_login_get_setting( 'custom' ), true ); ?> value="true" />
|
281 |
+
<a class="question" title="Help & Examples">[?]</a><br />
|
282 |
+
<span class="hide"><?php _e( 'Check this box to use your own CSS, leave unchecked to use the default style.', 'custom-login' ); ?></span>
|
283 |
+
</td>
|
284 |
+
</tr>
|
285 |
+
<tr>
|
286 |
+
<th>
|
287 |
+
<label for="gravatar"><?php _e( 'Gravatar:', 'custom-login' ); ?></label>
|
288 |
+
</th>
|
289 |
+
<td>
|
290 |
+
<input id="gravatar" name="gravatar" type="checkbox" <?php checked( custom_login_get_setting( 'gravatar' ), true ); ?> value="true" <?php if ( !get_option( 'users_can_register' ) ) echo 'disabled="disabled" readonly="readonly"'; ?> />
|
291 |
+
<a class="question" title="Help & Examples">[?]</a><br />
|
292 |
+
<span class="hide"><?php if ( !get_option( 'users_can_register' ) ) { _e( 'This feature only works for sites with registration enabled.', 'custom-login' ); } else { _e( 'Check this box to activate a AJAX Gravatar image for registration.', 'custom-login' ); } ?></span>
|
293 |
+
</td>
|
294 |
+
</tr>
|
295 |
+
</table><!-- .form-table --><?php
|
296 |
+
}
|
297 |
+
|
298 |
+
/**
|
299 |
+
* Display an announcement meta box.
|
300 |
+
*
|
301 |
+
* @since 0.8
|
302 |
+
*/
|
303 |
+
function custom_login_announcement_meta_box() { ?>
|
304 |
+
|
305 |
+
<iframe allowtransparency="true" src="http://austinpassy.com/custom-login.php" scrolling="no" style="height:50px;width:100%;">
|
306 |
+
</iframe><!-- .form-table --><?php
|
307 |
+
}
|
308 |
+
|
309 |
+
/**
|
310 |
+
* Displays the about meta box.
|
311 |
+
*
|
312 |
+
* @since 0.8
|
313 |
+
*/
|
314 |
+
function custom_login_about_meta_box() {
|
315 |
+
$plugin_data = get_plugin_data( CUSTOM_LOGIN_DIR . 'custom-login.php' ); ?>
|
316 |
+
|
317 |
+
<table class="form-table side">
|
318 |
+
<tr>
|
319 |
+
<th><?php _e( 'Plugin:', 'custom-login' ); ?></th>
|
320 |
+
<td><?php echo $plugin_data['Title']; ?> <?php echo $plugin_data['Version']; ?></td>
|
321 |
+
</tr>
|
322 |
+
<tr>
|
323 |
+
<th><?php _e( 'Author:', 'custom-login' ); ?></th>
|
324 |
+
<td><?php echo $plugin_data['Author']; ?> – @<a href="http://twitter.com/TheFrosty" title="Follow me on Twitter">TheFrosty</a></td>
|
325 |
+
</tr>
|
326 |
+
<tr style="display: none;">
|
327 |
+
<th><?php _e( 'Description:', 'custom-login' ); ?></th>
|
328 |
+
<td><?php echo $plugin_data['Description']; ?></td>
|
329 |
+
</tr>
|
330 |
+
</table><!-- .form-table --><?php
|
331 |
+
}
|
332 |
+
|
333 |
+
/**
|
334 |
+
* link to upgrade page
|
335 |
+
* http://codex.wordpress.org/Function_Reference/remove_submenu_page
|
336 |
+
*
|
337 |
+
* @since 1.0.1
|
338 |
+
*/
|
339 |
+
function custom_login_upgrade_link_meta_box() {
|
340 |
+
global $custom_login; ?>
|
341 |
+
|
342 |
+
<div style="height: 25px; padding: 25px; text-align: center"><a href="http://extendd.com/plugin/custom-login-pro/" class="button-secondary"/><?php esc_attr_e('Upgrade to Custom Login PRO', 'custom-login'); ?></a></div><?php
|
343 |
+
}
|
344 |
+
|
345 |
+
/**
|
346 |
+
* Displays the support meta box.
|
347 |
+
*
|
348 |
+
* @since 0.8
|
349 |
+
*/
|
350 |
+
function custom_login_support_meta_box() { ?>
|
351 |
+
|
352 |
+
<table class="form-table side">
|
353 |
+
<tr>
|
354 |
+
<th><?php _e( 'Donate:', 'custom-login' ); ?></th>
|
355 |
+
<td><?php _e( '<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X4JPT57AWMTYW">PayPal</a>.', 'custom-login' ); ?></td>
|
356 |
+
</tr>
|
357 |
+
<tr>
|
358 |
+
<th><?php _e( 'Flattr:', 'custom-login' ); ?></th>
|
359 |
+
<td><a href="http://flattr.com/thing/846561/Custom-Login" target="_blank"><img src="http://api.flattr.com/button/flattr-badge-large.png" alt="<?php _e( 'Flattr:', 'custom-login' ); ?>" title="<?php _e( 'Flattr:', 'custom-login' ); ?>" /></a></td>
|
360 |
+
</tr>
|
361 |
+
<tr>
|
362 |
+
<th><?php _e( 'Rate:', 'custom-login' ); ?></th>
|
363 |
+
<td><?php _e( '<a href="http://wordpress.org/extend/plugins/custom-login/">This plugin on WordPress.org</a>.', 'custom-login' ); ?></td>
|
364 |
+
</tr>
|
365 |
+
<tr>
|
366 |
+
<th><?php _e( 'Share:', 'custom-login' ); ?></th>
|
367 |
+
<td><?php _e( 'Your design on <a href="http://www.flickr.com/groups/custom-login/"><span style="color:#0066DC;font-weight:bold;">Flick</span><span style="color:#ff0084;font-weight:bold;">r</span></a>.', 'custom-login' ); ?></td>
|
368 |
+
</tr>
|
369 |
+
<tr>
|
370 |
+
<th><?php _e( 'Support:', 'custom-login' ); ?></th>
|
371 |
+
<td><?php _e( '<a href="http://wordpress.org/support/plugin/custom-login">WordPress support forums</a>.', 'custom-login' ); ?></td>
|
372 |
+
</tr>
|
373 |
+
<tr>
|
374 |
+
<th><?php _e( 'Contribute:', 'custom-login' ); ?></th>
|
375 |
+
<td><?php _e( '<a href="https://github.com/thefrosty/custom-login">GitHub</a>.', 'custom-login' ); ?></td>
|
376 |
+
</tr>
|
377 |
+
<tr class="alt">
|
378 |
+
<th><?php _e( 'Go PRO:', 'custom-login' ); ?></th>
|
379 |
+
<td><?php _e( '<a href="http://extendd.com/plugin/custom-login-pro/?ref=custom-login&url='.get_home_url().'">Custom Login PRO</a>.', 'custom-login' ); ?></td>
|
380 |
+
</tr>
|
381 |
+
</table><!-- .form-table --><?php
|
382 |
+
}
|
383 |
+
|
384 |
+
/**
|
385 |
+
* Displays the preview meta box.
|
386 |
+
*
|
387 |
+
* @since 0.8
|
388 |
+
*/
|
389 |
+
function custom_login_dashboard_meta_box() { ?>
|
390 |
+
|
391 |
+
<table class="form-table side">
|
392 |
+
<tr>
|
393 |
+
<td>
|
394 |
+
<input id="hide_dashboard" name="hide_dashboard" type="checkbox" <?php checked( custom_login_get_setting( 'hide_dashboard' ), true ); ?> value="true" />
|
395 |
+
<span class="hide"><?php _e( 'Hide the dashboard widget?', 'custom-login' ); ?></span>
|
396 |
+
</td>
|
397 |
+
</tr>
|
398 |
+
<tr>
|
399 |
+
<td>
|
400 |
+
<input id="disable_presstrends" name="disable_presstrends" type="checkbox" <?php checked( custom_login_get_setting( 'disable_presstrends' ), true ); ?> value="true" />
|
401 |
+
<span class="hide"><?php _e( 'Disable <a href="http://presstrends.io">presstrends.io</a>', 'custom-login' ); ?></span>
|
402 |
+
</td>
|
403 |
+
</tr>
|
404 |
+
</table><!-- .form-table --><?php
|
405 |
+
|
406 |
+
if ( defined( 'WP_LOCAL_DEV' ) && WP_LOCAL_DEV ) echo '<code>' . print_r( CUSTOM_LOGIN_FILE, true ) . '</code>';
|
407 |
+
}
|
408 |
+
|
409 |
+
/**
|
410 |
+
* Displays the preview meta box.
|
411 |
+
*
|
412 |
+
* @since 0.8
|
413 |
+
*/
|
414 |
+
function custom_login_preview_meta_box() { ?>
|
415 |
+
|
416 |
+
<p style="font-weight: bold; text-align: center;"><a class="thickbox thickbox-preview" href="<?php echo wp_login_url(); ?>?TB_iframe=true" title=""><?php _e( 'Click here to see a live preview!', 'custom-login' ); ?></a></p>
|
417 |
+
<p style="text-align: center;"><small><?php //_e( '(May not work as of WordPress 3.1.1)', 'custom-login' ); ?></small></p><?php
|
418 |
+
}
|
419 |
+
|
420 |
+
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
421 |
+
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
422 |
+
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
423 |
+
// login_form_border_top_color
|
424 |
+
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
425 |
+
|
426 |
+
/**
|
427 |
+
* Displays the general meta box.
|
428 |
+
*
|
429 |
+
* @since 0.8
|
430 |
+
*/
|
431 |
+
function custom_login_general_meta_box() {
|
432 |
+
|
433 |
+
$background_size = array( 'none', 'cover', 'contain', 'flex' );
|
434 |
+
|
435 |
+
?>
|
436 |
+
<table class="form-table">
|
437 |
+
<th>
|
438 |
+
<label for="html_background_color"><?php _e( 'html background color:', 'custom-login' ); ?></label>
|
439 |
+
</th>
|
440 |
+
<td>
|
441 |
+
<input class="color {hash:true,required:false,adjust:false}" id="html_background_color" name="html_background_color" value="<?php echo custom_login_get_setting( 'html_background_color' ); ?>" size="10" maxlength="21" />
|
442 |
+
<a class="question" title="Help & Examples">[?]</a><br />
|
443 |
+
<span class="hide"><?php _e( 'Use HEX color <strong>with</strong> “#” <strong>or</strong> RGB/A format.<br />
|
444 |
+
Example: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)</code>', 'custom-login' ); ?>
|
445 |
+
</span>
|
446 |
+
</td>
|
447 |
+
</tr>
|
448 |
+
|
449 |
+
<tr>
|
450 |
+
<th>
|
451 |
+
<label for="html_background_url"><?php _e( 'html background url:', 'custom-login' ); ?></label>
|
452 |
+
</th>
|
453 |
+
<td>
|
454 |
+
<input class="upload_image" id="html_background_url" name="html_background_url" value="<?php echo custom_login_get_setting( 'html_background_url' ); ?>" size="40" />
|
455 |
+
<input class="upload_image_button" type="button" value="Upload" />
|
456 |
+
<a class="question" title="Help & Examples">[?]</a><br />
|
457 |
+
<span class="hide"><?php _e( 'Upload an image and put the full path here.<br />
|
458 |
+
Suggested size: <code>10px X 500px</code> (for a repeating background) or<br />
|
459 |
+
Full size image with a 100% stretched to fit window image.', 'custom-login' ); ?>
|
460 |
+
</span>
|
461 |
+
</td>
|
462 |
+
</tr>
|
463 |
+
|
464 |
+
<tr>
|
465 |
+
<th>
|
466 |
+
<label for="html_background_repeat"><?php _e( 'html background repeat:', 'custom-login' ); ?></label>
|
467 |
+
</th>
|
468 |
+
<td>
|
469 |
+
<?php $background_repeat = array( 'no-repeat', 'repeat', 'repeat-x', 'repeat-y' ); ?>
|
470 |
+
<select name="html_background_repeat" id="html_background_repeat" style="width:88px;">
|
471 |
+
<?php foreach ( $background_repeat as $option ) { ?>
|
472 |
+
<option value="<?php echo $option; ?>" <?php selected( $option, custom_login_get_setting( 'html_background_repeat' ) ); ?>><?php echo $option; ?></option>
|
473 |
+
<?php } ?>
|
474 |
+
</select>
|
475 |
+
<a class="question" title="Help & Examples">[?]</a><br />
|
476 |
+
<span class="hide"><?php _e( 'Use <code>no-repeat</code>, <code>repeat</code>, <code>repeat-x</code> or <code>repeat-y.</code>', 'custom-login' ); ?></span>
|
477 |
+
</td>
|
478 |
+
</tr>
|
479 |
+
|
480 |
+
<tr>
|
481 |
+
<th>
|
482 |
+
<label for="html_background_size"><?php _e( 'html background size:', 'custom-login' ); ?></label>
|
483 |
+
</th>
|
484 |
+
<td>
|
485 |
+
<select name="html_background_size" id="html_background_size" style="width:88px;">
|
486 |
+
<?php foreach ( $background_size as $option ) { ?>
|
487 |
+
<option value="<?php echo $option; ?>" <?php selected( $option, custom_login_get_setting( 'html_background_size' ) ); ?>><?php echo $option; ?></option>
|
488 |
+
<?php } ?>
|
489 |
+
</select>
|
490 |
+
<a class="question" title="Help & Examples">[?]</a><br />
|
491 |
+
<span class="hide"><?php _e( 'See <a href="http://css-tricks.com/perfect-full-page-background-image/">CSS-Tricks</a> and <a href="http://davidwalsh.name/background-size">David Walsh</a> for examples.', 'custom-login' ); ?></span>
|
492 |
+
</td>
|
493 |
+
</tr>
|
494 |
+
<!-- Break -->
|
495 |
+
|
496 |
+
<tr style="border-top: 1px solid #eee;">
|
497 |
+
<th>
|
498 |
+
<label for="login_form_logo"><?php _e( 'Logo:', 'custom-login' ); ?></label>
|
499 |
+
</th>
|
500 |
+
<td>
|
501 |
+
<input class="upload_image" id="login_form_logo" name="login_form_logo" value="<?php echo custom_login_get_setting( 'login_form_logo' ); ?>" size="40" />
|
502 |
+
<input class="upload_image_button" type="button" value="Upload" />
|
503 |
+
<a class="question" title="Help & Examples">[?]</a><br />
|
504 |
+
<span class="hide"><?php _e( 'Upload an image and put the full path here.<br />
|
505 |
+
Suggested size: <code>310px X 70px</code>, which will replace WordPress logo. Be sure to leave blank if not in use. NOTE: Will go <strong>above</strong> the form and it′s border.', 'custom-login' ); ?>
|
506 |
+
</span>
|
507 |
+
</td>
|
508 |
+
</tr>
|
509 |
+
<!-- Break -->
|
510 |
+
|
511 |
+
<tr style="border-top: 1px solid #eee;">
|
512 |
+
<th>
|
513 |
+
<label for="login_form_background_color"><?php _e( 'login form background color:', 'custom-login' ); ?></label>
|
514 |
+
</th>
|
515 |
+
<td>
|
516 |
+
<input class="color {hash:true,required:false,adjust:false}" id="login_form_background_color" name="login_form_background_color" value="<?php echo custom_login_get_setting( 'login_form_background_color' ); ?>" size="10" maxlength="21" />
|
517 |
+
<a class="question" title="Help & Examples">[?]</a><br />
|
518 |
+
<span class="hide"><?php _e( 'Use HEX color <strong>with</strong> “#” or RGB/A format.<br />
|
519 |
+
Example: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)</code>', 'custom-login' ); ?>
|
520 |
+
</span>
|
521 |
+
</td>
|
522 |
+
</tr>
|
523 |
+
|
524 |
+
<tr>
|
525 |
+
<th>
|
526 |
+
<label for="login_form_background"><?php _e( 'login form background url:', 'custom-login' ); ?></label>
|
527 |
+
</th>
|
528 |
+
<td>
|
529 |
+
<input class="upload_image" id="login_form_background" name="login_form_background" value="<?php echo custom_login_get_setting( 'login_form_background' ); ?>" size="40" />
|
530 |
+
<input class="upload_image_button" type="button" value="Upload" />
|
531 |
+
<a class="question" title="Help & Examples">[?]</a><br />
|
532 |
+
<span class="hide"><?php _e( 'Upload an image and put the full path here. Suggested size: <code>308px X 108px</code><br />
|
533 |
+
My suggestion: use a transparent .png or .gif. <a href="' . CUSTOM_LOGIN_URL . 'library/psd/custom-login.psd">Download included .psd file</a>.', 'custom-login' ); ?>
|
534 |
+
</span>
|
535 |
+
</td>
|
536 |
+
</tr>
|
537 |
+
|
538 |
+
<tr>
|
539 |
+
<th>
|
540 |
+
<label for="login_form_background_size"><?php _e( 'form background size:', 'custom-login' ); ?></label>
|
541 |
+
</th>
|
542 |
+
<td>
|
543 |
+
<select name="login_form_background_size" id="login_form_background_size" style="width:88px;">
|
544 |
+
<?php foreach ( $background_size as $option ) { ?>
|
545 |
+
<option value="<?php echo $option; ?>" <?php selected( $option, custom_login_get_setting( 'login_form_background_size' ) ); ?>><?php echo $option; ?></option>
|
546 |
+
<?php } ?>
|
547 |
+
</select>
|
548 |
+
<a class="question" title="Help & Examples">[?]</a><br />
|
549 |
+
<span class="hide"><?php _e( 'See <a href="http://css-tricks.com/perfect-full-page-background-image/">CSS-Tricks</a> and <a href="http://davidwalsh.name/background-size">David Walsh</a> for examples.', 'custom-login' ); ?></span>
|
550 |
+
</td>
|
551 |
+
</tr>
|
552 |
+
|
553 |
+
<tr>
|
554 |
+
<th>
|
555 |
+
<label for="login_form_border_radius"><?php _e( 'login form border radius:', 'custom-login' ); ?></label>
|
556 |
+
</th>
|
557 |
+
<td>
|
558 |
+
<input id="login_form_border_radius" name="login_form_border_radius" value="<?php echo custom_login_get_setting( 'login_form_border_radius' ); ?>" size="3" maxlength="2" />px
|
559 |
+
<a class="question" title="Help & Examples">[?]</a><br />
|
560 |
+
<span class="hide"><?php _e( 'Choose your border radius, ie <code>8</code> or <code>12</code>. Do not put “<strong>px</strong>”!', 'custom-login' ); ?></span>
|
561 |
+
</td>
|
562 |
+
</tr>
|
563 |
+
|
564 |
+
<tr>
|
565 |
+
<th>
|
566 |
+
<label for="login_form_border"><?php _e( 'login form border thickness:', 'custom-login' ); ?></label>
|
567 |
+
</th>
|
568 |
+
<td>
|
569 |
+
<input id="login_form_border" name="login_form_border" value="<?php echo custom_login_get_setting( 'login_form_border' ); ?>" size="2" maxlength="2" />px
|
570 |
+
<a class="question" title="Help & Examples">[?]</a><br />
|
571 |
+
<span class="hide"><?php _e( 'Choose your border thickness, i.e. <code>1</code> or <code>2</code>. Do not put “<strong>px</strong>”!', 'custom-login' ); ?></span>
|
572 |
+
</td>
|
573 |
+
</tr>
|
574 |
+
|
575 |
+
<tr>
|
576 |
+
<th>
|
577 |
+
<label for="login_form_border_color"><?php _e( 'login form border color:', 'custom-login' ); ?></label>
|
578 |
+
</th>
|
579 |
+
<td>
|
580 |
+
<input class="color {hash:true,required:false,adjust:false}" id="login_form_border_color" name="login_form_border_color" value="<?php echo custom_login_get_setting( 'login_form_border_color' ); ?>" size="10" maxlength="21" />
|
581 |
+
<a class="question" title="Help & Examples">[?]</a><br />
|
582 |
+
<span class="hide"><?php _e( 'Use HEX color <strong>with</strong> “#” or RGB/A format.<br />
|
583 |
+
Example: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)</code>', 'custom-login' ); ?>
|
584 |
+
</span>
|
585 |
+
</td>
|
586 |
+
</tr>
|
587 |
+
|
588 |
+
<tr>
|
589 |
+
<th>
|
590 |
+
<label for="login_form_box_shadow_1"><?php _e( 'login form box shadow:', 'custom-login' ); ?></label>
|
591 |
+
</th>
|
592 |
+
<td>
|
593 |
+
<input id="login_form_box_shadow_1" name="login_form_box_shadow_1" value="<?php echo custom_login_get_setting( 'login_form_box_shadow_1' ); ?>" size="2" maxlength="2" />px
|
594 |
+
<input id="login_form_box_shadow_2" name="login_form_box_shadow_2" value="<?php echo custom_login_get_setting( 'login_form_box_shadow_2' ); ?>" size="2" maxlength="2" />px
|
595 |
+
<input id="login_form_box_shadow_3" name="login_form_box_shadow_3" value="<?php echo custom_login_get_setting( 'login_form_box_shadow_3' ); ?>" size="2" maxlength="2" />px
|
596 |
+
<input class="color {hash:true,required:false,adjust:false}" id="login_form_box_shadow_4" name="login_form_box_shadow_4" value="<?php echo custom_login_get_setting( 'login_form_box_shadow_4' ); ?>" size="10" maxlength="21" />
|
597 |
+
<a class="question" title="Help & Examples">[?]</a><br />
|
598 |
+
<span class="hide"><?php _e( 'Choose your box shadow settings, i.e. <code>5px 5px 18px #464646</code> <em>example code - <code>offset, offset, blur, color</code></em>.', 'custom-login' ); ?>
|
599 |
+
</span>
|
600 |
+
</td>
|
601 |
+
</tr>
|
602 |
+
|
603 |
+
<tr>
|
604 |
+
<th>
|
605 |
+
<label for="login_form_padding_top"><?php _e( 'login form padding fix:', 'custom-login' ); ?></label>
|
606 |
+
</th>
|
607 |
+
<td>
|
608 |
+
<input id="login_form_padding_top" name="login_form_padding_top" type="checkbox" <?php checked( custom_login_get_setting( 'login_form_padding_top' ), true ); ?> value="true" />
|
609 |
+
<a class="question" title="Help & Examples">[?]</a><br />
|
610 |
+
<span class="hide"><?php _e( 'Select the box if you would like the padding of the form to fit better.', 'custom-login' ); ?>
|
611 |
+
</span>
|
612 |
+
</td>
|
613 |
+
</tr>
|
614 |
+
|
615 |
+
<!-- Break -->
|
616 |
+
|
617 |
+
<tr style="border-top: 1px solid #eee;">
|
618 |
+
<th>
|
619 |
+
<label for="label_color"><?php _e( 'label font color:', 'custom-login' ); ?></label>
|
620 |
+
</th>
|
621 |
+
<td>
|
622 |
+
<input class="color {hash:true,required:false,adjust:false}" id="label_color" name="label_color" value="<?php echo custom_login_get_setting( 'label_color' ); ?>" size="10" maxlength="21" /> <a class="question" title="Help & Examples">[?]</a><br />
|
623 |
+
<span class="hide"><?php _e( 'Use HEX color <strong>with</strong> “#” or RGB/A format.<br />
|
624 |
+
Example: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)</code>', 'custom-login' ); ?>
|
625 |
+
</span>
|
626 |
+
</td>
|
627 |
+
</tr>
|
628 |
+
</table><!-- .form-table --><?php
|
629 |
+
}
|
630 |
+
|
631 |
+
/**
|
632 |
+
* Displays the gallery settings meta box.
|
633 |
+
*
|
634 |
+
* @since 0.8
|
635 |
+
*/
|
636 |
+
function custom_login_advanced_meta_box() { ?>
|
637 |
+
|
638 |
+
<table class="form-table">
|
639 |
+
<tr>
|
640 |
+
<th>
|
641 |
+
<label for="custom_css"><?php _e( 'Custom CSS:', 'custom-login' ); ?></label>
|
642 |
+
</th>
|
643 |
+
<td>
|
644 |
+
<textarea id="custom_css" name="custom_css" cols="50" rows="3" class="large-text code"><?php echo wp_specialchars_decode( stripslashes( custom_login_get_setting( 'custom_css' ) ), 1, 0, 1 ); ?></textarea>
|
645 |
+
<a class="question" title="Help & Examples">[?]</a><br />
|
646 |
+
<span class="hide"><?php _e( 'Use this box to enter any custom CSS code that may not be shown below.<br />
|
647 |
+
<strong>Example code for resgister, forgot password, back to blog:</strong><br>
|
648 |
+
<code>.login #nav, .login #backtoblog { text-shadow: none;}</code><br />
|
649 |
+
<code>.login #nav a{color:#FFFFFF!important;}
|
650 |
+
.login #nav a:hover{color:#FFFFFF!important;}</code><br />
|
651 |
+
<code>.login #nav a{text-decoration:none!important;}
|
652 |
+
.login #nav a:hover{text-decoration:underline!important;}</code><br />
|
653 |
+
<code>.login #backtoblog a{text-decoration:none!important;}
|
654 |
+
.login #backtoblog a:hover{text-decoration:underline!important;}</code><br />
|
655 |
+
<code>.login #backtoblog a{color:#FFFFFF!important;}
|
656 |
+
.login #backtoblog a:hover{color:#FFFFFF!important;}</code><br />
|
657 |
+
<hr>
|
658 |
+
<strong>Example:</strong> <code>.login #backtoblog a { color:#990000; }</code><br />
|
659 |
+
§ <strong>Example:</strong> <code>#snow { display:block; position:absolute; } #snow img { height:auto; width:100%; }</code><br />
|
660 |
+
§ example CSS code for custom html code example..', 'custom-login' ); ?>
|
661 |
+
</span>
|
662 |
+
</td>
|
663 |
+
</tr>
|
664 |
+
|
665 |
+
<tr>
|
666 |
+
<th>
|
667 |
+
<label for="custom_html"><?php _e( 'Custom HTML:', 'custom-login' ); ?></label>
|
668 |
+
</th>
|
669 |
+
<td>
|
670 |
+
<textarea id="custom_html" name="custom_html" cols="50" rows="3" class="large-text code"><?php echo wp_specialchars_decode( stripslashes( custom_login_get_setting( 'custom_html' ) ), 1, 0, 1 ); ?></textarea>
|
671 |
+
<a class="question" title="Help & Examples">[?]</a><br />
|
672 |
+
<span class="hide"><?php _e( 'Use this box to enter any custom HTML coded that you can add custom style to in the custom CSS box.<br />
|
673 |
+
<strong>Example:</strong> <code><div id="snow"><img src="../image.jpg" alt="" /></div><br /><div id="snow-bird"> </div></code>', 'custom-login' ); ?>
|
674 |
+
</span>
|
675 |
+
</td>
|
676 |
+
</tr>
|
677 |
+
|
678 |
+
<tr>
|
679 |
+
<th>
|
680 |
+
<label for="custom_jquery"><?php _e( 'Custom jQuery:', 'custom-login' ); ?></label>
|
681 |
+
</th>
|
682 |
+
<td>
|
683 |
+
<textarea id="custom_jquery" name="custom_jquery" cols="50" rows="3" class="large-text code"><?php echo wp_specialchars_decode( stripslashes( custom_login_get_setting( 'custom_jquery' ) ), 1, 0, 1 ); ?></textarea>
|
684 |
+
<a class="question" title="Help & Examples">[?]</a><br />
|
685 |
+
<span class="hide"><?php _e( 'Use this box to enter any custom jQuery.<br />
|
686 |
+
<strong>Example:</strong> <code>$(\'#login\').delay(300).fadeTo(800,1);</code>', 'custom-login' ); ?>
|
687 |
+
</span>
|
688 |
+
</td>
|
689 |
+
</tr>
|
690 |
+
</table><!-- .form-table --><?php
|
691 |
+
}
|
692 |
+
|
693 |
+
/**
|
694 |
+
* Displays the support meta box.
|
695 |
+
*
|
696 |
+
* @since 0.8
|
697 |
+
*/
|
698 |
+
function custom_login_tabs_meta_box() { ?>
|
699 |
+
<table class="form-table">
|
700 |
+
<div id="tab" class="tabbed inside">
|
701 |
+
|
702 |
+
<ul class="tabs">
|
703 |
+
<li class="t1 t"><a class="t1 tab">Austin Passy</a></li>
|
704 |
+
<li class="t2 t"><a class="t2 tab">WordCamp<strong>LA</strong></a></li>
|
705 |
+
<li class="t4 t"><a class="t3 tab">Extendd</a></li>
|
706 |
+
<li class="t4 t"><a class="t4 tab">Premium WP Plugins</a></li>
|
707 |
+
<li class="t4 t"><a class="t5 tab">Infield Box</a></li>
|
708 |
+
<li class="t5 t"><a class="t6 tab">Float-O-holics</a></li>
|
709 |
+
<li class="t6 t"><a class="t7 tab">Great Escape</a></li>
|
710 |
+
<li class="t7 t"><a class="t8 tab">PDXbyPix</a></li>
|
711 |
+
<li class="t8 t"><a class="t9 tab">Jeana Arter</a></li>
|
712 |
+
</ul>
|
713 |
+
|
714 |
+
<?php
|
715 |
+
if ( function_exists( 'thefrosty_network_feed' ) ) {
|
716 |
+
thefrosty_network_feed( 'http://feeds.feedburner.com/AustinPassy', '1' );
|
717 |
+
thefrosty_network_feed( 'http://feeds.feedburner.com/WordCampLA', '2' );
|
718 |
+
thefrosty_network_feed( 'http://extendd.com/feed', '3' );
|
719 |
+
thefrosty_network_feed( 'http://extendd.com/feed?post_type=plugin', '4' );
|
720 |
+
thefrosty_network_feed( 'http://infieldbox.com/feed', '5' );
|
721 |
+
thefrosty_network_feed( 'http://floatoholics.com/feed', '6' );
|
722 |
+
thefrosty_network_feed( 'http://greatescapecabofishing.com/feed', '7' );
|
723 |
+
thefrosty_network_feed( 'http://pdxbypix.com/feed', '8' );
|
724 |
+
thefrosty_network_feed( 'http://feeds.feedburner.com/JeanaArter', '9' );
|
725 |
+
} ?>
|
726 |
+
|
727 |
+
</div>
|
728 |
+
</table><!-- .form-table --><?php
|
729 |
+
}
|
730 |
+
|
731 |
+
/**
|
732 |
+
* Displays a settings saved message.
|
733 |
+
*
|
734 |
+
* @since 0.8
|
735 |
+
*/
|
736 |
+
function custom_login_settings_update_message() { ?>
|
737 |
+
<div class="updated fade">
|
738 |
+
<p><strong><?php _e( 'Don′t you feel good. You just saved me.', 'custom-login' ); ?></strong></p>
|
739 |
+
</div><?php
|
740 |
+
}
|
741 |
+
|
742 |
+
/**
|
743 |
+
* Outputs the HTML and calls the meta boxes for the settings page.
|
744 |
+
*
|
745 |
+
* @since 0.8
|
746 |
+
*/
|
747 |
+
function custom_login_settings_page() {
|
748 |
+
global $custom_login;
|
749 |
+
|
750 |
+
$plugin_data = get_plugin_data( CUSTOM_LOGIN_DIR . 'custom-login.php' ); ?>
|
751 |
+
|
752 |
+
<div class="wrap">
|
753 |
+
|
754 |
+
<?php if ( function_exists( 'screen_icon' ) ) screen_icon(); ?>
|
755 |
+
|
756 |
+
<h2><?php _e( 'Custom Login Settings', 'custom-login' ); ?></h2>
|
757 |
+
|
758 |
+
<?php //if ( isset( $_GET['updated'] ) && 'true' == esc_attr( $_GET['updated'] ) ) custom_login_settings_update_message(); ?>
|
759 |
+
|
760 |
+
<div id="poststuff">
|
761 |
+
|
762 |
+
<form method="post" action="<?php echo esc_url( admin_url( 'options-general.php?page=custom-login' ) ); ?>">
|
763 |
+
|
764 |
+
<?php wp_nonce_field( 'custom-login-settings-page' ); ?>
|
765 |
+
<?php wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?>
|
766 |
+
|
767 |
+
<?php wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?>
|
768 |
+
|
769 |
+
<div class="metabox-holder">
|
770 |
+
<div class="post-box-container column-1 normal"><?php do_meta_boxes( $custom_login->settings_page, 'normal', $plugin_data ); ?></div>
|
771 |
+
<div class="post-box-container column-2 advanced"><?php do_meta_boxes( $custom_login->settings_page, 'advanced', $plugin_data ); ?></div>
|
772 |
+
<div class="post-box-container column-3 side" style="clear:both;"><?php do_meta_boxes( $custom_login->settings_page, 'side', $plugin_data ); ?></div>
|
773 |
+
</div>
|
774 |
+
|
775 |
+
<p class="submit" style="clear: both;">
|
776 |
+
<input type="submit" name="Submit" class="button-primary" value="<?php _e( 'Update Settings', 'custom-login' ); ?>" />
|
777 |
+
<input type="hidden" name="custom-login-settings-submit" value="true" />
|
778 |
+
</p><!-- .submit -->
|
779 |
+
|
780 |
+
</form>
|
781 |
+
|
782 |
+
</div><!-- #poststuff -->
|
783 |
+
|
784 |
+
</div><!-- .wrap --><?php
|
785 |
+
}
|
786 |
+
|
787 |
+
/**
|
788 |
+
* Loads the scripts needed for the settings page.
|
789 |
+
*
|
790 |
+
* @since 0.8
|
791 |
+
*/
|
792 |
+
function custom_login_settings_page_enqueue_script() {
|
793 |
+
wp_enqueue_script( 'media-upload' );
|
794 |
+
wp_enqueue_script( 'common' );
|
795 |
+
wp_enqueue_script( 'wp-lists' );
|
796 |
+
wp_enqueue_script( 'postbox' );
|
797 |
+
wp_enqueue_script( 'thickbox' );
|
798 |
+
wp_enqueue_script( 'theme-preview' );
|
799 |
+
wp_enqueue_script( 'autosize' );
|
800 |
+
wp_enqueue_script( 'custom-login' );
|
801 |
+
wp_enqueue_script( 'jscolor' );
|
802 |
+
}
|
803 |
+
|
804 |
+
/**
|
805 |
+
* Loads the stylesheets needed for the settings page.
|
806 |
+
*
|
807 |
+
* @since 0.8
|
808 |
+
*/
|
809 |
+
function custom_login_settings_page_enqueue_style() {
|
810 |
+
wp_enqueue_style( 'thickbox' );
|
811 |
+
wp_enqueue_style( 'custom-login-tabs' );
|
812 |
+
wp_enqueue_style( 'custom-login-admin' );
|
813 |
+
}
|
814 |
+
|
815 |
+
/**
|
816 |
+
* Loads the metabox toggle JavaScript in the settings page head.
|
817 |
+
*
|
818 |
+
* @since 0.8
|
819 |
+
*/
|
820 |
+
function custom_login_settings_page_load_scripts() {
|
821 |
+
global $custom_login; ?>
|
822 |
+
<script type="text/javascript">
|
823 |
+
//<![CDATA[
|
824 |
+
jQuery(document).ready( function($) {
|
825 |
+
$('.if-js-closed').removeClass('if-js-closed').addClass('closed');
|
826 |
+
postboxes.add_postbox_toggles( '<?php echo $custom_login->settings_page; ?>' );
|
827 |
+
});
|
828 |
+
//]]>
|
829 |
+
</script><?php
|
830 |
+
}
|
831 |
+
|
832 |
+
/**
|
833 |
+
* Plugin Action /Settings on plugins page
|
834 |
+
* @since 0.4.2
|
835 |
+
* @package plugin
|
836 |
+
*/
|
837 |
+
function custom_login_plugin_actions( $links, $file ) {
|
838 |
+
if( $file == 'custom-login/custom-login.php' && function_exists( "admin_url" ) ) {
|
839 |
+
$settings_link = '<a href="' . admin_url( 'options-general.php?page=custom-login' ) . '">' . __('Settings', 'custom-login' ) . '</a>';
|
840 |
+
array_unshift( $links, $settings_link ); // before other links
|
841 |
+
$links[] = '<a href="http://extendd.com/plugin/custom-login-pro/?ref=plugin-upgrade&refer=' . urlencode( home_url() ) . '" target="_blank">' . __('Go Pro', 'custom-login' ) . '</a>';
|
842 |
+
}
|
843 |
+
return $links;
|
844 |
+
}
|
845 |
+
|
846 |
+
/**
|
847 |
+
* Warnings
|
848 |
+
* @since 0.5
|
849 |
+
* @package admin
|
850 |
+
*/
|
851 |
+
function custom_login_admin_warnings() {
|
852 |
+
global $custom_login;
|
853 |
+
|
854 |
+
function custom_login_warning() {
|
855 |
+
global $custom_login;
|
856 |
+
|
857 |
+
if ( custom_login_get_setting( 'use_custom' ) != true )?>
|
858 |
+
<p id="custom-login-warning" class="updated fade below-h2" style="padding: 5px 10px;">
|
859 |
+
<strong><?php sprintf( _e( 'Custom Login plugin is not configured yet. It will use the defualt theme unless you configure the %1$s.', 'custom-login' ), '<a href="' . admin_url( 'options-general.php?page=custom-login' ) . '">options</a>' ); ?></strong>
|
860 |
+
</p><?php
|
861 |
+
}
|
862 |
+
|
863 |
+
add_action( 'admin_notices', 'custom_login_warning' );
|
864 |
+
|
865 |
+
return;
|
866 |
+
}
|
867 |
+
|
868 |
+
/**
|
869 |
+
* RSS Feed
|
870 |
+
* @since 0.3
|
871 |
+
* @updated 1.1
|
872 |
+
* @package Admin
|
873 |
+
*/
|
874 |
+
if ( !function_exists( 'thefrosty_network_feed' ) ) {
|
875 |
+
function thefrosty_network_feed( $url, $count ) {
|
876 |
+
|
877 |
+
$items = custom_login_fetch_rss_items( 3, $url );
|
878 |
+
|
879 |
+
echo '<div class="t' . esc_attr( $count ) . ' tab-content postbox open feed">';
|
880 |
+
echo '<ul>';
|
881 |
+
if ( empty( $items ) ) {
|
882 |
+
echo '<li>' . __( 'Error fetching feed' ) . '</li>';
|
883 |
+
} else {
|
884 |
+
foreach( $items as $item ) : ?>
|
885 |
+
<li>
|
886 |
+
<a href='<?php echo esc_url( $item->get_permalink() ); ?>' title='<?php esc_attr_e( $item->get_description() ); ?>'><?php esc_attr_e( $item->get_title() ); ?></a><br />
|
887 |
+
<span style="font-size:10px; color:#aaa;"><?php esc_attr_e( $item->get_date('F, jS Y | g:i a') ); ?></span>
|
888 |
+
</li>
|
889 |
+
<?php endforeach;
|
890 |
+
}
|
891 |
+
echo '</ul>';
|
892 |
+
echo '</div>';
|
893 |
+
}
|
894 |
+
}
|
895 |
+
|
896 |
+
/**
|
897 |
+
* Fetch RSS items from the feed.
|
898 |
+
*
|
899 |
+
* @param int $num Number of items to fetch.
|
900 |
+
* @param string $feed The feed to fetch.
|
901 |
+
* @return array|bool False on error, array of RSS items on success.
|
902 |
+
*/
|
903 |
+
function custom_login_fetch_rss_items( $num, $feed ) {
|
904 |
+
include_once( ABSPATH . WPINC . '/feed.php' );
|
905 |
+
$rss = fetch_feed( $feed );
|
906 |
+
|
907 |
+
// Bail if feed doesn't work
|
908 |
+
if ( !$rss || is_wp_error( $rss ) )
|
909 |
+
return false;
|
910 |
+
|
911 |
+
$rss_items = $rss->get_items( 0, $rss->get_item_quantity( $num ) );
|
912 |
+
|
913 |
+
// If the feed was erroneous
|
914 |
+
if ( !$rss_items ) {
|
915 |
+
$md5 = md5( $feed );
|
916 |
+
delete_transient( 'feed_' . $md5 );
|
917 |
+
delete_transient( 'feed_mod_' . $md5 );
|
918 |
+
$rss = fetch_feed( $feed );
|
919 |
+
$rss_items = $rss->get_items( 0, $rss->get_item_quantity( $num ) );
|
920 |
+
}
|
921 |
+
|
922 |
+
return $rss_items;
|
923 |
+
}
|
924 |
+
|
925 |
+
?>
|
library/admin/dashboard.php
ADDED
@@ -0,0 +1,168 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Load the feed from The Frosty network
|
5 |
+
*
|
6 |
+
* @since 12/3/12
|
7 |
+
* @updated 12/3/12
|
8 |
+
*/
|
9 |
+
if ( !class_exists( 'the_frosty_dashboard' ) ) :
|
10 |
+
class the_frosty_dashboard {
|
11 |
+
|
12 |
+
/**
|
13 |
+
* To infinity.
|
14 |
+
*
|
15 |
+
*/
|
16 |
+
function __construct() {
|
17 |
+
add_action( 'wp_dashboard_setup', array( $this, 'add_dashboard_widget' ) );
|
18 |
+
}
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Add the dashboard widget
|
22 |
+
*
|
23 |
+
* @return void
|
24 |
+
*/
|
25 |
+
function add_dashboard_widget() {
|
26 |
+
wp_add_dashboard_widget( 'thefrosty_dashboard', __( 'The Frosty Network <em>feeds</em>' ), array( $this, 'dashboard' ), array( $this, 'dashboard_control' ) );
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Fetch RSS items from the feed.
|
31 |
+
*
|
32 |
+
* @param int $num Number of items to fetch.
|
33 |
+
* @param string $feed The feed to fetch.
|
34 |
+
* @return array|bool False on error, array of RSS items on success.
|
35 |
+
*/
|
36 |
+
public function fetch_rss_items( $num, $feed ) {
|
37 |
+
include_once( ABSPATH . WPINC . '/feed.php' );
|
38 |
+
$rss = fetch_feed( $feed );
|
39 |
+
|
40 |
+
// Bail if feed doesn't work
|
41 |
+
if ( !$rss || is_wp_error( $rss ) )
|
42 |
+
return false;
|
43 |
+
|
44 |
+
$rss_items = $rss->get_items( 0, $rss->get_item_quantity( $num ) );
|
45 |
+
|
46 |
+
// If the feed was erroneous
|
47 |
+
if ( !$rss_items ) {
|
48 |
+
$md5 = md5( $feed );
|
49 |
+
delete_transient( 'feed_' . $md5 );
|
50 |
+
delete_transient( 'feed_mod_' . $md5 );
|
51 |
+
$rss = fetch_feed( $feed );
|
52 |
+
$rss_items = $rss->get_items( 0, $rss->get_item_quantity( $num ) );
|
53 |
+
}
|
54 |
+
return $rss_items;
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Output CSS
|
59 |
+
*
|
60 |
+
* @return string
|
61 |
+
*/
|
62 |
+
function style() {
|
63 |
+
?>
|
64 |
+
<style>
|
65 |
+
#frosty-dashboard .frosty-image {
|
66 |
+
display: inline-block;
|
67 |
+
height: 25px;
|
68 |
+
float: left;
|
69 |
+
width: 25px;
|
70 |
+
overflow: hidden
|
71 |
+
}
|
72 |
+
#frosty-dashboard .frosty-image span {
|
73 |
+
background: url('<?php echo esc_url( plugin_dir_url( __FILE__ ) ) . 'Sprite.jpg'; ?>') 0 0 no-repeat;
|
74 |
+
-webkit-background-size: 300px 25px;
|
75 |
+
-moz-background-size: 300px 25px;
|
76 |
+
-ms-background-size: 300px 25px;
|
77 |
+
-o-background-size: 300px 25px;
|
78 |
+
background-size: 300px 25px;
|
79 |
+
display: inline-block;
|
80 |
+
height: 25px;
|
81 |
+
width: 25px
|
82 |
+
}
|
83 |
+
#frosty-dashboard li { padding-left:30px }
|
84 |
+
span.austinpassy { background-position: -25px 0 !important }
|
85 |
+
span.frostywebdesigns { background-position: -50px 0 !important }
|
86 |
+
span.jeanaarter { background-position: -75px 0 !important }
|
87 |
+
span.wordcampla { background-position: -100px 0 !important }
|
88 |
+
span.floatoholics { background-position: -125px 0 !important }
|
89 |
+
span.thefrosty { background-position: -150px 0 !important }
|
90 |
+
span.greatescapecabofishing { background-position: -175px 0 !important }
|
91 |
+
span.eateryengine { background-position: -200px 0 !important }
|
92 |
+
span.extendd { background-position: -225px 0 !important }
|
93 |
+
</style>
|
94 |
+
<?php
|
95 |
+
}
|
96 |
+
|
97 |
+
/**
|
98 |
+
* Print the dashboard widget
|
99 |
+
*
|
100 |
+
* @return string
|
101 |
+
*/
|
102 |
+
function dashboard( $sidebar_args ) {
|
103 |
+
$widget_options = get_option( 'the_frosty_dashboard_widget_options' );
|
104 |
+
|
105 |
+
$item_count = !empty( $widget_options['items'] ) ? $widget_options['items'] : 6;
|
106 |
+
$rss_items = $this->fetch_rss_items( $item_count, 'http://pipes.yahoo.com/pipes/pipe.run?_id=52c339c010550750e3e64d478b1c96ea&_render=rss' );
|
107 |
+
|
108 |
+
$this->style();
|
109 |
+
$content = '<ul id="frosty-dashboard">';
|
110 |
+
if ( !$rss_items ) {
|
111 |
+
$content .= '<li>' . __( 'Error fetching feed' ) . '</li>';
|
112 |
+
} else {
|
113 |
+
foreach ( $rss_items as $item ) {
|
114 |
+
$title = esc_attr( strtolower( sanitize_title_with_dashes( htmlentities( $item->get_title() ) ) ) );
|
115 |
+
|
116 |
+
$class = str_replace( array( 'http://', 'https://' ), '', $item->get_permalink() );
|
117 |
+
$class = str_replace( array( '2010.', '2011.', '2012.', '2013.', '2014.', '2015.' ), '', $class );
|
118 |
+
$class = str_replace( array( '.com/', '.net/', '.org/', '.la/', 'la.' ), ' ', $class );
|
119 |
+
$class = str_replace( array( '2011/', '2012/', '2013/', '2014/' ), '', $class );
|
120 |
+
$class = str_replace( array( '01/', '02/', '03/', '04/', '05/', '06/', '07/', '08/', '09/', '10/', '11/', '12/' ), '', $class );
|
121 |
+
$class = str_replace( $title, '', $class );
|
122 |
+
$class = str_replace( '/', '', $class );
|
123 |
+
$class = str_replace( 'feedproxy.google', '', $class );
|
124 |
+
$class = str_replace( '~r', '', $class );
|
125 |
+
$class = str_replace( '~', ' ', $class );
|
126 |
+
$class = trim( $class );
|
127 |
+
list( $class, $therest ) = explode( ' ', $class );
|
128 |
+
// Redundant, I know. Can you make a preg_replace for this?
|
129 |
+
|
130 |
+
$url = preg_replace( '/#.*/', '', esc_url( $item->get_permalink(), null, 'display' ) );
|
131 |
+
$content .= '<div class="frosty-image"><span class="' . strtolower( $class ) . '"> </span></div>';
|
132 |
+
$content .= '<li>';
|
133 |
+
$content .= '<a class="rsswidget" href="' . $url . '">' . esc_html( $item->get_title() ) . '</a> ';
|
134 |
+
$content .= '<span style="font-size:10px; color:#aaa;">' . esc_attr( $item->get_date('F, jS Y') ) . '</span>';
|
135 |
+
$content .= '</li>';
|
136 |
+
}
|
137 |
+
}
|
138 |
+
$content .= '</ul>';
|
139 |
+
echo $content;
|
140 |
+
}
|
141 |
+
|
142 |
+
/**
|
143 |
+
* Print the dashboard control widget
|
144 |
+
*
|
145 |
+
* @return string
|
146 |
+
*/
|
147 |
+
function dashboard_control() {
|
148 |
+
if ( !$widget_options = get_option( 'the_frosty_dashboard_widget_options' ) )
|
149 |
+
$widget_options = array();
|
150 |
+
|
151 |
+
if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id']) && 'thefrosty_dashboard' == $_POST['widget_id'] ) {
|
152 |
+
$items = stripslashes_deep( $_POST['thefrosty_dashboard_items'] );
|
153 |
+
$widget_options['items'] = $items;
|
154 |
+
update_option( 'the_frosty_dashboard_widget_options', $widget_options );
|
155 |
+
}
|
156 |
+
//print_r( $widget_options ); ?>
|
157 |
+
<p><label for="thefrosty_dashboard_items"><?php _e('How many items would you like to display?'); ?></label>
|
158 |
+
<select name="thefrosty_dashboard_items">
|
159 |
+
<?php for ( $i = 3; $i <= 20; ++$i ) echo "<option value='$i' " . selected( $items, $i, false ) . ">$i</option>"; ?>
|
160 |
+
</select></p>
|
161 |
+
<?php
|
162 |
+
}
|
163 |
+
|
164 |
+
}
|
165 |
+
$the_frosty_dashboard = new the_frosty_dashboard;
|
166 |
+
endif;
|
167 |
+
|
168 |
+
?>
|
library/admin/presstrends.php
ADDED
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
function presstrends_dirname() {
|
4 |
+
return dirname( dirname( __FILE__ ) );
|
5 |
+
}
|
6 |
+
/**
|
7 |
+
* PressTrends Plugin API
|
8 |
+
*/
|
9 |
+
function presstrends_CustomLogin_plugin() {
|
10 |
+
|
11 |
+
// PressTrends Account API Key
|
12 |
+
$api_key = 'ehq5aafw0sujyv62ks5roabop0flmh0admwh';
|
13 |
+
$auth = 'ynpujn2oj1xgterwuv8ce93gmx9y3w1lr';
|
14 |
+
|
15 |
+
// Start of Metrics
|
16 |
+
global $wpdb;
|
17 |
+
$data = get_transient( 'presstrends_cache_data' );
|
18 |
+
if ( !$data || $data == '' ) {
|
19 |
+
$api_base = 'http://api.presstrends.io/index.php/api/pluginsites/update/auth/';
|
20 |
+
$url = $api_base . $auth . '/api/' . $api_key . '/';
|
21 |
+
|
22 |
+
$count_posts = wp_count_posts();
|
23 |
+
$count_pages = wp_count_posts( 'page' );
|
24 |
+
$comments_count = wp_count_comments();
|
25 |
+
|
26 |
+
// wp_get_theme was introduced in 3.4, for compatibility with older versions, let's do a workaround for now.
|
27 |
+
if ( function_exists( 'wp_get_theme' ) ) {
|
28 |
+
$theme_data = wp_get_theme();
|
29 |
+
$theme_name = urlencode( $theme_data->Name );
|
30 |
+
} else {
|
31 |
+
$theme_data = get_theme_data( get_stylesheet_directory() . '/style.css' );
|
32 |
+
$theme_name = $theme_data['Name'];
|
33 |
+
}
|
34 |
+
|
35 |
+
$plugin_name = '&';
|
36 |
+
foreach ( get_plugins() as $plugin_info ) {
|
37 |
+
$plugin_name .= $plugin_info['Name'] . '&';
|
38 |
+
}
|
39 |
+
// CHANGE __FILE__ PATH IF LOCATED OUTSIDE MAIN PLUGIN FILE
|
40 |
+
$plugin_data = get_plugin_data( CUSTOM_LOGIN_FILE );
|
41 |
+
$posts_with_comments = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts WHERE post_type='post' AND comment_count > 0" );
|
42 |
+
$data = array(
|
43 |
+
'url' => stripslashes( str_replace( array( 'http://', '/', ':' ), '', site_url() ) ),
|
44 |
+
'posts' => $count_posts->publish,
|
45 |
+
'pages' => $count_pages->publish,
|
46 |
+
'comments' => $comments_count->total_comments,
|
47 |
+
'approved' => $comments_count->approved,
|
48 |
+
'spam' => $comments_count->spam,
|
49 |
+
'pingbacks' => $wpdb->get_var( "SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_type = 'pingback'" ),
|
50 |
+
'post_conversion' => ( $count_posts->publish > 0 && $posts_with_comments > 0 ) ? number_format( ( $posts_with_comments / $count_posts->publish ) * 100, 0, '.', '' ) : 0,
|
51 |
+
'theme_version' => $plugin_data['Version'],
|
52 |
+
'theme_name' => $theme_name,
|
53 |
+
'site_name' => str_replace( ' ', '', get_bloginfo( 'name' ) ),
|
54 |
+
'plugins' => count( get_option( 'active_plugins' ) ),
|
55 |
+
'plugin' => urlencode( $plugin_name ),
|
56 |
+
'wpversion' => get_bloginfo( 'version' ),
|
57 |
+
);
|
58 |
+
|
59 |
+
foreach ( $data as $k => $v ) {
|
60 |
+
$url .= $k . '/' . $v . '/';
|
61 |
+
}
|
62 |
+
wp_remote_get( $url );
|
63 |
+
set_transient( 'presstrends_cache_data', $data, 60 * 60 * 24 );
|
64 |
+
}
|
65 |
+
}
|
66 |
+
|
67 |
+
// PressTrends WordPress Action
|
68 |
+
add_action('admin_init', 'presstrends_CustomLogin_plugin');
|
69 |
+
?>
|
library/css/admin.css
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* Theme settings page. */
|
2 |
+
.form-table.side th {
|
3 |
+
width: 20% !important;
|
4 |
+
}
|
5 |
+
#custom-login-general-meta-box .form-table th {
|
6 |
+
width: 33% !important;
|
7 |
+
}
|
8 |
+
|
9 |
+
.upload_image {
|
10 |
+
float: left;
|
11 |
+
margin-right: 5px;
|
12 |
+
}
|
13 |
+
.upload_image_button {
|
14 |
+
height: 22px;
|
15 |
+
padding-top: 1px;
|
16 |
+
}
|
17 |
+
.upload_image_button:hover {
|
18 |
+
cursor: pointer;
|
19 |
+
}
|
20 |
+
|
21 |
+
.metabox-holder .column-1 {
|
22 |
+
float: left;
|
23 |
+
width: 65%;
|
24 |
+
}
|
25 |
+
.metabox-holder .column-2 {
|
26 |
+
float: right;
|
27 |
+
width: 33%;
|
28 |
+
}
|
29 |
+
.metabox-holder .column-3 {
|
30 |
+
clear: both;
|
31 |
+
width: 100%;
|
32 |
+
}
|
33 |
+
|
34 |
+
/* Questions */
|
35 |
+
a.question, a.addrows {
|
36 |
+
font-weight: bold;
|
37 |
+
text-decoration: none;
|
38 |
+
}
|
39 |
+
a.question:hover, a.addrows:hover {
|
40 |
+
cursor: pointer;
|
41 |
+
}
|
42 |
+
textarea {
|
43 |
+
display: block;
|
44 |
+
-webkit-transition: height 0.2s;
|
45 |
+
-moz-transition: height 0.2s;
|
46 |
+
-ms-transition: height 0.2s;
|
47 |
+
-o-transition: height 0.2s;
|
48 |
+
transition: height 0.2s;
|
49 |
+
}
|
library/css/custom-login.css
ADDED
@@ -0,0 +1,171 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
body {
|
2 |
+
background-color: #666;
|
3 |
+
background-image: -webkit-gradient(
|
4 |
+
linear,
|
5 |
+
left bottom,
|
6 |
+
left top,
|
7 |
+
color-stop(0, #666),
|
8 |
+
color-stop(1, #999)
|
9 |
+
);
|
10 |
+
background-image: -webkit-linear-gradient(
|
11 |
+
center bottom,
|
12 |
+
color-stop(0, #666) 37%,
|
13 |
+
color-stop(1, #999) 69%
|
14 |
+
);
|
15 |
+
background-image: -moz-linear-gradient(
|
16 |
+
center bottom,
|
17 |
+
color-stop(0, #666) 37%,
|
18 |
+
color-stop(1, #999) 69%
|
19 |
+
);
|
20 |
+
background-image: -ms-linear-gradient(
|
21 |
+
center bottom,
|
22 |
+
color-stop(0, #666) 37%,
|
23 |
+
color-stop(1, #999) 69%
|
24 |
+
);
|
25 |
+
background-image: -o-linear-gradient(
|
26 |
+
center bottom,
|
27 |
+
color-stop(0, #666) 37%,
|
28 |
+
color-stop(1, #999) 69%
|
29 |
+
);
|
30 |
+
}
|
31 |
+
body.login {
|
32 |
+
background: grey;
|
33 |
+
}
|
34 |
+
body:before {
|
35 |
+
content: "Powered by the Custom Login lite plugin for WordPress";
|
36 |
+
position: absolute;
|
37 |
+
left: 25px;
|
38 |
+
bottom: 10px;
|
39 |
+
}
|
40 |
+
body:after {
|
41 |
+
content: "";
|
42 |
+
position: absolute;
|
43 |
+
top: 0; left: 0; bottom: 0; right: 0;
|
44 |
+
background-image:
|
45 |
+
-webkit-gradient(linear, 0 0, 100% 100%,
|
46 |
+
color-stop(.25, rgba(255, 255, 255, .2)),
|
47 |
+
color-stop(.25, transparent), color-stop(.5, transparent),
|
48 |
+
color-stop(.5, rgba(255, 255, 255, .2)),
|
49 |
+
color-stop(.75, rgba(255, 255, 255, .2)),
|
50 |
+
color-stop(.75, transparent), to(transparent)
|
51 |
+
);
|
52 |
+
background-image:
|
53 |
+
-webkit-linear-gradient(
|
54 |
+
-45deg,
|
55 |
+
rgba(255, 255, 255, .2) 25%,
|
56 |
+
transparent 25%,
|
57 |
+
transparent 50%,
|
58 |
+
rgba(255, 255, 255, .2) 50%,
|
59 |
+
rgba(255, 255, 255, .2) 75%,
|
60 |
+
transparent 75%,
|
61 |
+
transparent
|
62 |
+
);
|
63 |
+
background-image:
|
64 |
+
-moz-linear-gradient(
|
65 |
+
-45deg,
|
66 |
+
rgba(255, 255, 255, .2) 25%,
|
67 |
+
transparent 25%,
|
68 |
+
transparent 50%,
|
69 |
+
rgba(255, 255, 255, .2) 50%,
|
70 |
+
rgba(255, 255, 255, .2) 75%,
|
71 |
+
transparent 75%,
|
72 |
+
transparent
|
73 |
+
);
|
74 |
+
background-image:
|
75 |
+
-ms-linear-gradient(
|
76 |
+
-45deg,
|
77 |
+
rgba(255, 255, 255, .2) 25%,
|
78 |
+
transparent 25%,
|
79 |
+
transparent 50%,
|
80 |
+
rgba(255, 255, 255, .2) 50%,
|
81 |
+
rgba(255, 255, 255, .2) 75%,
|
82 |
+
transparent 75%,
|
83 |
+
transparent
|
84 |
+
);
|
85 |
+
background-image:
|
86 |
+
-o-linear-gradient(
|
87 |
+
-45deg,
|
88 |
+
rgba(255, 255, 255, .2) 25%,
|
89 |
+
transparent 25%,
|
90 |
+
transparent 50%,
|
91 |
+
rgba(255, 255, 255, .2) 50%,
|
92 |
+
rgba(255, 255, 255, .2) 75%,
|
93 |
+
transparent 75%,
|
94 |
+
transparent
|
95 |
+
);
|
96 |
+
z-index: 1;
|
97 |
+
-webkit-background-size: 50px 50px;
|
98 |
+
-moz-background-size: 50px 50px;
|
99 |
+
overflow: hidden;
|
100 |
+
}
|
101 |
+
|
102 |
+
#login {
|
103 |
+
position: relative;
|
104 |
+
z-index: 2;
|
105 |
+
}
|
106 |
+
#login form {
|
107 |
+
background: #5A5E78;
|
108 |
+
padding-top: 20px;
|
109 |
+
margin-top: 0;
|
110 |
+
-moz-border-radius: 8px;
|
111 |
+
-khtml-border-radius: 8px;
|
112 |
+
-webkit-border-radius: 8px;
|
113 |
+
-o-border-radius: 8px;
|
114 |
+
border-radius: 8px;
|
115 |
+
border: 1px solid #003333;
|
116 |
+
-moz-box-shadow: 8px 8px 18px #122222;
|
117 |
+
-webkit-box-shadow: 8px 8px 18px #122222;
|
118 |
+
-khtml-box-shadow: 8px 8px 18px #122222;
|
119 |
+
-o-box-shadow: 8px 8px 18px #122222;
|
120 |
+
box-shadow: 8px 8px 18px #122222;
|
121 |
+
|
122 |
+
-webkit-transition: all .5s linear;
|
123 |
+
-khtml-transition: all .5s linear;
|
124 |
+
-moz-transition: all .5s linear;
|
125 |
+
-o-transition: all .5s linear;
|
126 |
+
transition: all .5s linear;
|
127 |
+
}
|
128 |
+
#login form:hover, #login form:active {
|
129 |
+
background: #111;
|
130 |
+
border: 1px solid #aaa;
|
131 |
+
-moz-box-shadow: 0 0 28px 15px #ddd;
|
132 |
+
-webkit-box-shadow: 0 0 28px 15px #ddd;
|
133 |
+
-khtml-box-shadow: 0 0 28px 15px #ddd;
|
134 |
+
-o-box-shadow: 0 0 28px 15px #ddd;
|
135 |
+
box-shadow: 0 0 28px 15px #ddd;
|
136 |
+
}
|
137 |
+
|
138 |
+
#login h1 {
|
139 |
+
margin: 0;
|
140 |
+
display: none;
|
141 |
+
}
|
142 |
+
|
143 |
+
.login #nav a, .login #backtoblog a {
|
144 |
+
color: #222 !important;
|
145 |
+
text-shadow: 0 1px 0 #bbb;
|
146 |
+
-moz-text-shadow: 0 1px 0 #bbb;
|
147 |
+
-webkit-text-shadow: 0 1px 0 #bbb;
|
148 |
+
-khtml-text-shadow: 0 1px 0 #bbb;
|
149 |
+
}
|
150 |
+
.login #nav a:hover, .login #backtoblog a:hover {
|
151 |
+
color: #000 !important;
|
152 |
+
}
|
153 |
+
|
154 |
+
label {
|
155 |
+
color: #fff !important;
|
156 |
+
text-shadow: 0 1px 0 #000;
|
157 |
+
-moz-text-shadow: 0 1px 0 #000;
|
158 |
+
-webkit-text-shadow: 0 1px 0 #000;
|
159 |
+
-khtml-text-shadow: 0 1px 0 #000;
|
160 |
+
}
|
161 |
+
|
162 |
+
span.byauthor {
|
163 |
+
color: #ccc;
|
164 |
+
position: absolute;
|
165 |
+
right: 10px;
|
166 |
+
text-decoration: none;
|
167 |
+
top: 7px;
|
168 |
+
}
|
169 |
+
span.byauthor a {
|
170 |
+
position: static !important;
|
171 |
+
}
|
library/css/custom-login.css.php
ADDED
@@ -0,0 +1,133 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
error_reporting(0);
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Extract the options from the database
|
7 |
+
* print_r( get_option( 'custom_login_settings' ) );
|
8 |
+
*
|
9 |
+
* @return Array (
|
10 |
+
[version]
|
11 |
+
[custom]
|
12 |
+
[gravatar]
|
13 |
+
[hide_dashboard]
|
14 |
+
[disable_presstrends]
|
15 |
+
[hide_upgrade]
|
16 |
+
[upgrade_complete]
|
17 |
+
[custom_css]
|
18 |
+
[custom_html]
|
19 |
+
[html_border_top_color] //Deprecated
|
20 |
+
[html_border_top_background] //Deprecated
|
21 |
+
[html_background_color]
|
22 |
+
[html_background_url]
|
23 |
+
[html_background_repeat]
|
24 |
+
[login_form_logo]
|
25 |
+
[login_form_border_top_color]
|
26 |
+
[login_form_background_color]
|
27 |
+
[login_form_background]
|
28 |
+
[login_form_background_size]
|
29 |
+
[login_form_border_radius]
|
30 |
+
[login_form_border]
|
31 |
+
[login_form_border_color]
|
32 |
+
[login_form_box_shadow_1]
|
33 |
+
[login_form_box_shadow_2]
|
34 |
+
[login_form_box_shadow_3]
|
35 |
+
[login_form_box_shadow_4]
|
36 |
+
[login_form_padding_top]
|
37 |
+
[label_color]
|
38 |
+
[html_background_size]
|
39 |
+
*/
|
40 |
+
extract( get_option( 'custom_login_settings' ) );
|
41 |
+
|
42 |
+
?><style type="text/css"><?php
|
43 |
+
|
44 |
+
echo "
|
45 |
+
/**
|
46 |
+
* Custom Login lite by Austin Passy
|
47 |
+
*
|
48 |
+
* Plugin URI : http://austinpassy.com/wordpress-plugins/custom-login
|
49 |
+
* Version : $version
|
50 |
+
* Author URI : http://austinpassy.com
|
51 |
+
* Pro Version : http://extendd.com/plugin/custom-login-pro
|
52 |
+
*
|
53 |
+
*/\n\n";
|
54 |
+
|
55 |
+
/* Custom user input */
|
56 |
+
if ( $custom_css ) echo wp_specialchars_decode( stripslashes( $custom_css ), 1, 0, 1 ) . "\n"; ?>
|
57 |
+
|
58 |
+
html {
|
59 |
+
background-color: <?php
|
60 |
+
|
61 |
+
if ( !empty( $html_background_color ) ) echo trailingsemicolonit( $html_background_color );
|
62 |
+
|
63 |
+
if ( !empty( $html_background_url ) ) {
|
64 |
+
echo trailingsemicolonit( "background-image: url('{$html_background_url}')" );
|
65 |
+
echo trailingsemicolonit( 'background-position: left top' );
|
66 |
+
echo trailingsemicolonit( "background-repeat: {$html_background_repeat}" );
|
67 |
+
|
68 |
+
if ( !empty( $html_background_size ) && 'none' != $html_background_size ) {
|
69 |
+
$html_background_size = ( 'flex' != $html_background_size ) ? $html_background_size : '100% auto';
|
70 |
+
custom_login_prefix_it( 'background-size', $html_background_size );
|
71 |
+
}
|
72 |
+
} ?>
|
73 |
+
|
74 |
+
}
|
75 |
+
|
76 |
+
<?php if ( !empty( $html_background_url ) ) { ?>
|
77 |
+
body.login {
|
78 |
+
background: transparent !important;
|
79 |
+
}
|
80 |
+
<?php } ?>
|
81 |
+
|
82 |
+
#login form {
|
83 |
+
<?php
|
84 |
+
if ( !empty( $login_form_background_color ) ) echo trailingsemicolonit( "background-color: {$login_form_background_color}" );
|
85 |
+
if ( !empty( $login_form_background ) ) {
|
86 |
+
echo trailingsemicolonit( "background-image: url('{$login_form_background}')" );
|
87 |
+
echo trailingsemicolonit( 'background-position: center top' );
|
88 |
+
echo trailingsemicolonit( 'background-repeat: no-repeat' );
|
89 |
+
|
90 |
+
if ( !empty( $form_background_size ) && 'none' != $form_background_size ) {
|
91 |
+
$form_background_size = ( 'flex' != $login_form_background_size ) ? $login_form_background_size : '100% auto';
|
92 |
+
custom_login_prefix_it( 'background-size', $form_background_size );
|
93 |
+
}
|
94 |
+
}
|
95 |
+
|
96 |
+
if ( true == $login_form_padding_top ) echo trailingsemicolonit( 'padding-top: 20px' ); else echo trailingsemicolonit( 'padding-top: 100px' );
|
97 |
+
|
98 |
+
if ( !empty( $login_form_border ) ) {
|
99 |
+
$login_form_border = rtrim( $login_form_border, 'px' );
|
100 |
+
echo trailingsemicolonit( "border: {$login_form_border}px solid {$login_form_border_color}" );
|
101 |
+
}
|
102 |
+
|
103 |
+
if ( absint( $login_form_border_radius ) ) {
|
104 |
+
$login_form_border_radius = rtrim( $login_form_border_radius, 'px' ) . 'px';
|
105 |
+
custom_login_prefix_it( 'border-radius', $login_form_border_radius );
|
106 |
+
}
|
107 |
+
|
108 |
+
$login_form_box_shadow_1 = rtrim( $login_form_box_shadow_1, 'px' ) . 'px';
|
109 |
+
$login_form_box_shadow_2 = rtrim( $login_form_box_shadow_2, 'px' ) . 'px';
|
110 |
+
$login_form_box_shadow_3 = rtrim( $login_form_box_shadow_3, 'px' ) . 'px';
|
111 |
+
|
112 |
+
$box_shadow = $login_form_box_shadow_1 . ' ' . $login_form_box_shadow_2 . ' ' . $login_form_box_shadow_3 . ' ' . $login_form_box_shadow_4;
|
113 |
+
|
114 |
+
custom_login_prefix_it( 'box-shadow', $box_shadow ); ?>
|
115 |
+
|
116 |
+
}
|
117 |
+
|
118 |
+
<?php if ( empty( $login_form_logo ) ) { ?>
|
119 |
+
#login h1 {
|
120 |
+
display: none;
|
121 |
+
}
|
122 |
+
<?php }
|
123 |
+
|
124 |
+
if ( !empty( $login_form_logo ) ) { ?>
|
125 |
+
.login h1 a {
|
126 |
+
background: transparent url('<?php echo $login_form_logo; ?>') no-repeat scroll center top;
|
127 |
+
}
|
128 |
+
<?php } ?>
|
129 |
+
|
130 |
+
label {
|
131 |
+
color: <?php echo $label_color; ?> !important;
|
132 |
+
}
|
133 |
+
</style>
|
library/css/tabs.css
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
ul.tabs {
|
2 |
+
display: block !important;
|
3 |
+
list-style: none;
|
4 |
+
margin: 0;
|
5 |
+
overflow: hidden;
|
6 |
+
width: 100%;
|
7 |
+
}
|
8 |
+
ul.tabs li {
|
9 |
+
float: left;
|
10 |
+
display: inline;
|
11 |
+
margin: 0;
|
12 |
+
padding: 0;
|
13 |
+
background: transparent;
|
14 |
+
}
|
15 |
+
ul.tabs li a {
|
16 |
+
border-radius: 6px 6px 0 0 !important;
|
17 |
+
-moz-border-radius: 6px 6px 0 0 !important;
|
18 |
+
-webkit-border-radius: 6px 6px 0 0 !important;
|
19 |
+
-khtml-border-radius: 6px 6px 0 0 !important;
|
20 |
+
display: block;
|
21 |
+
float: left;
|
22 |
+
margin: 0 3px 0 0;
|
23 |
+
padding: 4px 6px;
|
24 |
+
color: #aaa;
|
25 |
+
text-shadow: 0 1px 0 #fff;
|
26 |
+
-moz-text-shadow: 0 1px 0 #fff;
|
27 |
+
-webkit-text-shadow: 0 1px 0 #fff;
|
28 |
+
-khtml-text-shadow: 0 1px 0 #fff;
|
29 |
+
}
|
30 |
+
ul.tabs li a:hover {
|
31 |
+
background: #DFDFDF url(../../../../../../wp-admin/images/gray-grad.png) repeat-x scroll left top;
|
32 |
+
color: #444;
|
33 |
+
text-decoration: none;
|
34 |
+
}
|
35 |
+
ul.tabs li a.tab-current {
|
36 |
+
background: #DFDFDF url(../../../../../../wp-admin/images/gray-grad.png) repeat-x scroll left top;
|
37 |
+
color: #222;
|
38 |
+
font-weight: bold;
|
39 |
+
}
|
40 |
+
.postbox.open.feed {
|
41 |
+
border-radius: 0 0 6px 6px !important;
|
42 |
+
-moz-border-radius: 0 0 6px 6px !important;
|
43 |
+
-webkit-border-radius: 0 0 6px 6px !important;
|
44 |
+
-khtml-border-radius: 0 0 6px 6px !important;
|
45 |
+
padding: 5px 6px;
|
46 |
+
width: 95.6%;
|
47 |
+
}
|
library/js/arrow.gif
ADDED
Binary file
|
library/js/cross.gif
ADDED
Binary file
|
library/js/custom-login.js
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(
|
2 |
+
function($) {
|
3 |
+
var Version = jQuery.fn.jquery;
|
4 |
+
|
5 |
+
$('.upload_image_button').click(function() {
|
6 |
+
if( Version > '1.6' )
|
7 |
+
formfield = $(this).parent().find('.upload_image').prop('name');
|
8 |
+
else
|
9 |
+
formfield = $(this).parent().find('.upload_image').attr('name');
|
10 |
+
//console.log(formfield);
|
11 |
+
tb_show('', 'media-upload.php?type=image&TB_iframe=true');
|
12 |
+
return false;
|
13 |
+
});
|
14 |
+
|
15 |
+
window.send_to_editor = function(html) {
|
16 |
+
if( Version > '1.6' )
|
17 |
+
imgurl = $('img',html).prop('src');
|
18 |
+
else
|
19 |
+
imgurl = $('img',html).attr('src');
|
20 |
+
$('#' + formfield).val(imgurl);
|
21 |
+
tb_remove();
|
22 |
+
}
|
23 |
+
|
24 |
+
// Tabs
|
25 |
+
$('div.tabbed div').hide();
|
26 |
+
$('div.t1').show();
|
27 |
+
$('div.tabbed ul.tabs li.t1 a').addClass('tab-current');
|
28 |
+
$('div.tabbed ul li a').css('cursor','pointer');
|
29 |
+
|
30 |
+
$('div.tabbed ul li a').click(function(){
|
31 |
+
var thisClass = this.className.slice(0,2);
|
32 |
+
$('div.tabbed div').hide();
|
33 |
+
$('div.' + thisClass).show();
|
34 |
+
$('div.tabbed ul.tabs li a').removeClass('tab-current');
|
35 |
+
$(this).addClass('tab-current');
|
36 |
+
});
|
37 |
+
|
38 |
+
// Queations
|
39 |
+
$('#normal-sortables span.hide').hide();
|
40 |
+
$('#normal-sortables a.question').click(function() {
|
41 |
+
$(this).next().next().toggleClass('hide').toggleClass('show').toggle(380);
|
42 |
+
});
|
43 |
+
|
44 |
+
$('textarea').autosize({
|
45 |
+
append : "\n"
|
46 |
+
});
|
47 |
+
|
48 |
+
// External links
|
49 |
+
$('a').filter(function() {
|
50 |
+
return this.hostname && this.hostname !== location.hostname;
|
51 |
+
}).attr('target','_blank');
|
52 |
+
|
53 |
+
}
|
54 |
+
);
|
library/js/gravatar.js
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*************************************************
|
2 |
+
** Get Gravatar v1.2
|
3 |
+
** Copyright � 2009 Josh Pyles / Pixelmatrix Design LLC
|
4 |
+
** http://pixelmatrixdesign.com
|
5 |
+
**************************************************/
|
6 |
+
(function(a){a.fn.getGravatar=function(b){var c=a.extend({},a.fn.getGravatar.defaults,b);return this.each(function(){$this=a(this);var e=a.meta?a.extend({},c,$this.data()):c;var d="";if($this.is("input[type='text']")){a.fn.getGravatar.getUrl(e,$this.val());$this.keyup(function(){clearTimeout(d);var f=$this.val();d=setTimeout(function(){a.fn.getGravatar.getUrl(e,f)},500)})}})};a.fn.getGravatar.getUrl=function(d,c){if(d.start){d.start($this)}id=a.fn.getGravatar.md5(c);var b="http://gravatar.com/avatar.php?gravatar_id="+id+"&default="+d.fallback+"&size="+d.avatarSize;a.fn.getGravatar.output(d.avatarContainer,b,d.stop)};a.fn.getGravatar.output=function(b,c,d){img=new Image();a(img).load(function(){a(b).prop("src",c);if(d){d()}}).prop("src",c)};a.fn.getGravatar.md5=function(C){var D;var w=function(c,b){return(c<<b)|(c>>>(32-b))};var H=function(x,c){var W,b,k,V,d;k=(x&2147483648);V=(c&2147483648);W=(x&1073741824);b=(c&1073741824);d=(x&1073741823)+(c&1073741823);if(W&b){return(d^2147483648^k^V)}if(W|b){if(d&1073741824){return(d^3221225472^k^V)}else{return(d^1073741824^k^V)}}else{return(d^k^V)}};var r=function(b,d,c){return(b&d)|((~b)&c)};var q=function(b,d,c){return(b&c)|(d&(~c))};var p=function(b,d,c){return(b^d^c)};var n=function(b,d,c){return(d^(b|(~c)))};var u=function(W,V,aa,Z,k,X,Y){W=H(W,H(H(r(V,aa,Z),k),Y));return H(w(W,X),V)};var f=function(W,V,aa,Z,k,X,Y){W=H(W,H(H(q(V,aa,Z),k),Y));return H(w(W,X),V)};var F=function(W,V,aa,Z,k,X,Y){W=H(W,H(H(p(V,aa,Z),k),Y));return H(w(W,X),V)};var t=function(W,V,aa,Z,k,X,Y){W=H(W,H(H(n(V,aa,Z),k),Y));return H(w(W,X),V)};var e=function(W){var X;var k=W.length;var d=k+8;var c=(d-(d%64))/64;var V=(c+1)*16;var Y=new Array(V-1);var b=0;var x=0;while(x<k){X=(x-(x%4))/4;b=(x%4)*8;Y[X]=(Y[X]|(W.charCodeAt(x)<<b));x++}X=(x-(x%4))/4;b=(x%4)*8;Y[X]=Y[X]|(128<<b);Y[V-2]=k<<3;Y[V-1]=k>>>29;return Y};var s=function(k){var b="",c="",x,d;for(d=0;d<=3;d++){x=(k>>>(d*8))&255;c="0"+x.toString(16);b=b+c.substr(c.length-2,2)}return b};var E=[],L,h,G,v,g,U,T,S,R,O=7,M=12,J=17,I=22,B=5,A=9,z=14,y=20,o=4,m=11,l=16,j=23,Q=6,P=10,N=15,K=21;C=a.fn.getGravatar.utf8_encode(C);E=e(C);U=1732584193;T=4023233417;S=2562383102;R=271733878;D=E.length;for(L=0;L<D;L+=16){h=U;G=T;v=S;g=R;U=u(U,T,S,R,E[L+0],O,3614090360);R=u(R,U,T,S,E[L+1],M,3905402710);S=u(S,R,U,T,E[L+2],J,606105819);T=u(T,S,R,U,E[L+3],I,3250441966);U=u(U,T,S,R,E[L+4],O,4118548399);R=u(R,U,T,S,E[L+5],M,1200080426);S=u(S,R,U,T,E[L+6],J,2821735955);T=u(T,S,R,U,E[L+7],I,4249261313);U=u(U,T,S,R,E[L+8],O,1770035416);R=u(R,U,T,S,E[L+9],M,2336552879);S=u(S,R,U,T,E[L+10],J,4294925233);T=u(T,S,R,U,E[L+11],I,2304563134);U=u(U,T,S,R,E[L+12],O,1804603682);R=u(R,U,T,S,E[L+13],M,4254626195);S=u(S,R,U,T,E[L+14],J,2792965006);T=u(T,S,R,U,E[L+15],I,1236535329);U=f(U,T,S,R,E[L+1],B,4129170786);R=f(R,U,T,S,E[L+6],A,3225465664);S=f(S,R,U,T,E[L+11],z,643717713);T=f(T,S,R,U,E[L+0],y,3921069994);U=f(U,T,S,R,E[L+5],B,3593408605);R=f(R,U,T,S,E[L+10],A,38016083);S=f(S,R,U,T,E[L+15],z,3634488961);T=f(T,S,R,U,E[L+4],y,3889429448);U=f(U,T,S,R,E[L+9],B,568446438);R=f(R,U,T,S,E[L+14],A,3275163606);S=f(S,R,U,T,E[L+3],z,4107603335);T=f(T,S,R,U,E[L+8],y,1163531501);U=f(U,T,S,R,E[L+13],B,2850285829);R=f(R,U,T,S,E[L+2],A,4243563512);S=f(S,R,U,T,E[L+7],z,1735328473);T=f(T,S,R,U,E[L+12],y,2368359562);U=F(U,T,S,R,E[L+5],o,4294588738);R=F(R,U,T,S,E[L+8],m,2272392833);S=F(S,R,U,T,E[L+11],l,1839030562);T=F(T,S,R,U,E[L+14],j,4259657740);U=F(U,T,S,R,E[L+1],o,2763975236);R=F(R,U,T,S,E[L+4],m,1272893353);S=F(S,R,U,T,E[L+7],l,4139469664);T=F(T,S,R,U,E[L+10],j,3200236656);U=F(U,T,S,R,E[L+13],o,681279174);R=F(R,U,T,S,E[L+0],m,3936430074);S=F(S,R,U,T,E[L+3],l,3572445317);T=F(T,S,R,U,E[L+6],j,76029189);U=F(U,T,S,R,E[L+9],o,3654602809);R=F(R,U,T,S,E[L+12],m,3873151461);S=F(S,R,U,T,E[L+15],l,530742520);T=F(T,S,R,U,E[L+2],j,3299628645);U=t(U,T,S,R,E[L+0],Q,4096336452);R=t(R,U,T,S,E[L+7],P,1126891415);S=t(S,R,U,T,E[L+14],N,2878612391);T=t(T,S,R,U,E[L+5],K,4237533241);U=t(U,T,S,R,E[L+12],Q,1700485571);R=t(R,U,T,S,E[L+3],P,2399980690);S=t(S,R,U,T,E[L+10],N,4293915773);T=t(T,S,R,U,E[L+1],K,2240044497);U=t(U,T,S,R,E[L+8],Q,1873313359);R=t(R,U,T,S,E[L+15],P,4264355552);S=t(S,R,U,T,E[L+6],N,2734768916);T=t(T,S,R,U,E[L+13],K,1309151649);U=t(U,T,S,R,E[L+4],Q,4149444226);R=t(R,U,T,S,E[L+11],P,3174756917);S=t(S,R,U,T,E[L+2],N,718787259);T=t(T,S,R,U,E[L+9],K,3951481745);U=H(U,h);T=H(T,G);S=H(S,v);R=H(R,g)}var i=s(U)+s(T)+s(S)+s(R);return i.toLowerCase()};a.fn.getGravatar.utf8_encode=function(b){var i=(b+"");var j="";var c,f;var d=0;c=f=0;d=i.length;for(var e=0;e<d;e++){var h=i.charCodeAt(e);var g=null;if(h<128){f++}else{if(h>127&&h<2048){g=String.fromCharCode((h>>6)|192)+String.fromCharCode((h&63)|128)}else{g=String.fromCharCode((h>>12)|224)+String.fromCharCode(((h>>6)&63)|128)+String.fromCharCode((h&63)|128)}}if(g!==null){if(f>c){j+=i.substring(c,f)}j+=g;c=f=e+1}}if(f>c){j+=i.substring(c,i.length)}return j};a.fn.getGravatar.defaults={fallback:"",avatarSize:50,avatarContainer:"#gravatar",start:null,stop:null}})(jQuery);
|
library/js/hs.png
ADDED
Binary file
|
library/js/hv.png
ADDED
Binary file
|
library/js/jquery.autosize.js
ADDED
@@ -0,0 +1,171 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// Autosize 1.15.3 - jQuery plugin for textareas
|
2 |
+
// (c) 2013 Jack Moore - jacklmoore.com
|
3 |
+
// license: www.opensource.org/licenses/mit-license.php
|
4 |
+
|
5 |
+
(function ($) {
|
6 |
+
var
|
7 |
+
defaults = {
|
8 |
+
className: 'autosizejs',
|
9 |
+
append: '',
|
10 |
+
callback: false
|
11 |
+
},
|
12 |
+
hidden = 'hidden',
|
13 |
+
borderBox = 'border-box',
|
14 |
+
lineHeight = 'lineHeight',
|
15 |
+
|
16 |
+
// border:0 is unnecessary, but avoids a bug in FireFox on OSX (http://www.jacklmoore.com/autosize#comment-851)
|
17 |
+
copy = '<textarea tabindex="-1" style="position:absolute; top:-9999px; left:-9999px; right:auto; bottom:auto; border:0; -moz-box-sizing:content-box; -webkit-box-sizing:content-box; box-sizing:content-box; word-wrap:break-word; height:0 !important; min-height:0 !important; overflow:hidden;"/>',
|
18 |
+
|
19 |
+
// line-height is conditionally included because IE7/IE8/old Opera do not return the correct value.
|
20 |
+
copyStyle = [
|
21 |
+
'fontFamily',
|
22 |
+
'fontSize',
|
23 |
+
'fontWeight',
|
24 |
+
'fontStyle',
|
25 |
+
'letterSpacing',
|
26 |
+
'textTransform',
|
27 |
+
'wordSpacing',
|
28 |
+
'textIndent'
|
29 |
+
],
|
30 |
+
oninput = 'oninput',
|
31 |
+
onpropertychange = 'onpropertychange',
|
32 |
+
|
33 |
+
// to keep track which textarea is being mirrored when adjust() is called.
|
34 |
+
mirrored,
|
35 |
+
|
36 |
+
// the mirror element, which is used to calculate what size the mirrored element should be.
|
37 |
+
mirror = $(copy).data('autosize', true)[0];
|
38 |
+
|
39 |
+
// test that line-height can be accurately copied.
|
40 |
+
mirror.style.lineHeight = '99px';
|
41 |
+
if ($(mirror).css(lineHeight) === '99px') {
|
42 |
+
copyStyle.push(lineHeight);
|
43 |
+
}
|
44 |
+
mirror.style.lineHeight = '';
|
45 |
+
|
46 |
+
$.fn.autosize = function (options) {
|
47 |
+
options = $.extend({}, defaults, options || {});
|
48 |
+
|
49 |
+
if (mirror.parentNode !== document.body) {
|
50 |
+
$(document.body).append(mirror);
|
51 |
+
}
|
52 |
+
|
53 |
+
return this.each(function () {
|
54 |
+
var
|
55 |
+
ta = this,
|
56 |
+
$ta = $(ta),
|
57 |
+
minHeight = $ta.height(),
|
58 |
+
active,
|
59 |
+
resize,
|
60 |
+
boxOffset = 0,
|
61 |
+
callback = $.isFunction(options.callback);
|
62 |
+
|
63 |
+
if ($ta.data('autosize')) {
|
64 |
+
// exit if autosize has already been applied, or if the textarea is the mirror element.
|
65 |
+
return;
|
66 |
+
}
|
67 |
+
|
68 |
+
if ($ta.css('box-sizing') === borderBox || $ta.css('-moz-box-sizing') === borderBox || $ta.css('-webkit-box-sizing') === borderBox){
|
69 |
+
boxOffset = $ta.outerHeight() - $ta.height();
|
70 |
+
}
|
71 |
+
|
72 |
+
resize = ($ta.css('resize') === 'none' || $ta.css('resize') === 'vertical') ? 'none' : 'horizontal';
|
73 |
+
|
74 |
+
$ta.css({
|
75 |
+
overflow: hidden,
|
76 |
+
overflowY: hidden,
|
77 |
+
wordWrap: 'break-word',
|
78 |
+
resize: resize
|
79 |
+
}).data('autosize', true);
|
80 |
+
|
81 |
+
function initMirror() {
|
82 |
+
mirrored = ta;
|
83 |
+
mirror.className = options.className;
|
84 |
+
|
85 |
+
// mirror is a duplicate textarea located off-screen that
|
86 |
+
// is automatically updated to contain the same text as the
|
87 |
+
// original textarea. mirror always has a height of 0.
|
88 |
+
// This gives a cross-browser supported way getting the actual
|
89 |
+
// height of the text, through the scrollTop property.
|
90 |
+
$.each(copyStyle, function(i, val){
|
91 |
+
mirror.style[val] = $ta.css(val);
|
92 |
+
});
|
93 |
+
}
|
94 |
+
|
95 |
+
// Using mainly bare JS in this function because it is going
|
96 |
+
// to fire very often while typing, and needs to very efficient.
|
97 |
+
function adjust() {
|
98 |
+
var height, overflow, original;
|
99 |
+
|
100 |
+
if (mirrored !== ta) {
|
101 |
+
initMirror();
|
102 |
+
}
|
103 |
+
|
104 |
+
// the active flag keeps IE from tripping all over itself. Otherwise
|
105 |
+
// actions in the adjust function will cause IE to call adjust again.
|
106 |
+
if (!active) {
|
107 |
+
active = true;
|
108 |
+
mirror.value = ta.value + options.append;
|
109 |
+
mirror.style.overflowY = ta.style.overflowY;
|
110 |
+
original = parseInt(ta.style.height,10);
|
111 |
+
|
112 |
+
// Update the width in case the original textarea width has changed
|
113 |
+
mirror.style.width = $ta.width() + 'px';
|
114 |
+
|
115 |
+
// The following three lines can be replaced with `height = mirror.scrollHeight` when dropping IE7 support.
|
116 |
+
mirror.scrollTop = 0;
|
117 |
+
mirror.scrollTop = 9e4;
|
118 |
+
height = mirror.scrollTop;
|
119 |
+
|
120 |
+
var maxHeight = parseInt($ta.css('maxHeight'), 10);
|
121 |
+
// Opera returns '-1px' when max-height is set to 'none'.
|
122 |
+
maxHeight = maxHeight && maxHeight > 0 ? maxHeight : 9e4;
|
123 |
+
if (height > maxHeight) {
|
124 |
+
height = maxHeight;
|
125 |
+
overflow = 'scroll';
|
126 |
+
} else if (height < minHeight) {
|
127 |
+
height = minHeight;
|
128 |
+
}
|
129 |
+
height += boxOffset;
|
130 |
+
ta.style.overflowY = overflow || hidden;
|
131 |
+
|
132 |
+
if (original !== height) {
|
133 |
+
ta.style.height = height + 'px';
|
134 |
+
if (callback) {
|
135 |
+
options.callback.call(ta);
|
136 |
+
}
|
137 |
+
}
|
138 |
+
|
139 |
+
// This small timeout gives IE a chance to draw it's scrollbar
|
140 |
+
// before adjust can be run again (prevents an infinite loop).
|
141 |
+
setTimeout(function () {
|
142 |
+
active = false;
|
143 |
+
}, 1);
|
144 |
+
}
|
145 |
+
}
|
146 |
+
|
147 |
+
if (onpropertychange in ta) {
|
148 |
+
if (oninput in ta) {
|
149 |
+
// Detects IE9. IE9 does not fire onpropertychange or oninput for deletions,
|
150 |
+
// so binding to onkeyup to catch most of those occassions. There is no way that I
|
151 |
+
// know of to detect something like 'cut' in IE9.
|
152 |
+
ta[oninput] = ta.onkeyup = adjust;
|
153 |
+
} else {
|
154 |
+
// IE7 / IE8
|
155 |
+
ta[onpropertychange] = adjust;
|
156 |
+
}
|
157 |
+
} else {
|
158 |
+
// Modern Browsers
|
159 |
+
ta[oninput] = adjust;
|
160 |
+
}
|
161 |
+
|
162 |
+
$(window).resize(adjust);
|
163 |
+
|
164 |
+
// Allow for manual triggering if needed.
|
165 |
+
$ta.bind('autosize', adjust);
|
166 |
+
|
167 |
+
// Call adjust in case the textarea already contains text.
|
168 |
+
adjust();
|
169 |
+
});
|
170 |
+
};
|
171 |
+
}(window.jQuery || window.Zepto));
|
library/js/jscolor.js
ADDED
@@ -0,0 +1,953 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* jscolor, JavaScript Color Picker
|
3 |
+
*
|
4 |
+
* @version 1.4.0
|
5 |
+
* @license GNU Lesser General Public License, http://www.gnu.org/copyleft/lesser.html
|
6 |
+
* @author Jan Odvarko, http://odvarko.cz
|
7 |
+
* @created 2008-06-15
|
8 |
+
* @updated 2012-07-06
|
9 |
+
* @link http://jscolor.com
|
10 |
+
*/
|
11 |
+
|
12 |
+
|
13 |
+
var jscolor = {
|
14 |
+
|
15 |
+
|
16 |
+
dir : '', // location of jscolor directory (leave empty to autodetect)
|
17 |
+
bindClass : 'color', // class name
|
18 |
+
binding : true, // automatic binding via <input class="...">
|
19 |
+
preloading : true, // use image preloading?
|
20 |
+
|
21 |
+
|
22 |
+
install : function() {
|
23 |
+
jscolor.addEvent(window, 'load', jscolor.init);
|
24 |
+
},
|
25 |
+
|
26 |
+
|
27 |
+
init : function() {
|
28 |
+
if(jscolor.binding) {
|
29 |
+
jscolor.bind();
|
30 |
+
}
|
31 |
+
if(jscolor.preloading) {
|
32 |
+
jscolor.preload();
|
33 |
+
}
|
34 |
+
},
|
35 |
+
|
36 |
+
|
37 |
+
getDir : function() {
|
38 |
+
if(!jscolor.dir) {
|
39 |
+
var detected = jscolor.detectDir();
|
40 |
+
jscolor.dir = detected!==false ? detected : 'jscolor/';
|
41 |
+
}
|
42 |
+
return jscolor.dir;
|
43 |
+
},
|
44 |
+
|
45 |
+
|
46 |
+
detectDir : function() {
|
47 |
+
var base = location.href;
|
48 |
+
|
49 |
+
var e = document.getElementsByTagName('base');
|
50 |
+
for(var i=0; i<e.length; i+=1) {
|
51 |
+
if(e[i].href) { base = e[i].href; }
|
52 |
+
}
|
53 |
+
|
54 |
+
var e = document.getElementsByTagName('script');
|
55 |
+
for(var i=0; i<e.length; i+=1) {
|
56 |
+
if(e[i].src && /(^|\/)jscolor\.js([?#].*)?$/i.test(e[i].src)) {
|
57 |
+
var src = new jscolor.URI(e[i].src);
|
58 |
+
var srcAbs = src.toAbsolute(base);
|
59 |
+
srcAbs.path = srcAbs.path.replace(/[^\/]+$/, ''); // remove filename
|
60 |
+
srcAbs.query = null;
|
61 |
+
srcAbs.fragment = null;
|
62 |
+
return srcAbs.toString();
|
63 |
+
}
|
64 |
+
}
|
65 |
+
return false;
|
66 |
+
},
|
67 |
+
|
68 |
+
|
69 |
+
bind : function() {
|
70 |
+
var matchClass = new RegExp('(^|\\s)('+jscolor.bindClass+')\\s*(\\{[^}]*\\})?', 'i');
|
71 |
+
var e = document.getElementsByTagName('input');
|
72 |
+
for(var i=0; i<e.length; i+=1) {
|
73 |
+
var m;
|
74 |
+
if(!e[i].color && e[i].className && (m = e[i].className.match(matchClass))) {
|
75 |
+
var prop = {};
|
76 |
+
if(m[3]) {
|
77 |
+
try {
|
78 |
+
prop = (new Function ('return (' + m[3] + ')'))();
|
79 |
+
} catch(eInvalidProp) {}
|
80 |
+
}
|
81 |
+
e[i].color = new jscolor.color(e[i], prop);
|
82 |
+
}
|
83 |
+
}
|
84 |
+
},
|
85 |
+
|
86 |
+
|
87 |
+
preload : function() {
|
88 |
+
for(var fn in jscolor.imgRequire) {
|
89 |
+
if(jscolor.imgRequire.hasOwnProperty(fn)) {
|
90 |
+
jscolor.loadImage(fn);
|
91 |
+
}
|
92 |
+
}
|
93 |
+
},
|
94 |
+
|
95 |
+
|
96 |
+
images : {
|
97 |
+
pad : [ 181, 101 ],
|
98 |
+
sld : [ 16, 101 ],
|
99 |
+
cross : [ 15, 15 ],
|
100 |
+
arrow : [ 7, 11 ]
|
101 |
+
},
|
102 |
+
|
103 |
+
|
104 |
+
imgRequire : {},
|
105 |
+
imgLoaded : {},
|
106 |
+
|
107 |
+
|
108 |
+
requireImage : function(filename) {
|
109 |
+
jscolor.imgRequire[filename] = true;
|
110 |
+
},
|
111 |
+
|
112 |
+
|
113 |
+
loadImage : function(filename) {
|
114 |
+
if(!jscolor.imgLoaded[filename]) {
|
115 |
+
jscolor.imgLoaded[filename] = new Image();
|
116 |
+
jscolor.imgLoaded[filename].src = jscolor.getDir()+filename;
|
117 |
+
}
|
118 |
+
},
|
119 |
+
|
120 |
+
|
121 |
+
fetchElement : function(mixed) {
|
122 |
+
return typeof mixed === 'string' ? document.getElementById(mixed) : mixed;
|
123 |
+
},
|
124 |
+
|
125 |
+
|
126 |
+
addEvent : function(el, evnt, func) {
|
127 |
+
if(el.addEventListener) {
|
128 |
+
el.addEventListener(evnt, func, false);
|
129 |
+
} else if(el.attachEvent) {
|
130 |
+
el.attachEvent('on'+evnt, func);
|
131 |
+
}
|
132 |
+
},
|
133 |
+
|
134 |
+
|
135 |
+
fireEvent : function(el, evnt) {
|
136 |
+
if(!el) {
|
137 |
+
return;
|
138 |
+
}
|
139 |
+
if(document.createEvent) {
|
140 |
+
var ev = document.createEvent('HTMLEvents');
|
141 |
+
ev.initEvent(evnt, true, true);
|
142 |
+
el.dispatchEvent(ev);
|
143 |
+
} else if(document.createEventObject) {
|
144 |
+
var ev = document.createEventObject();
|
145 |
+
el.fireEvent('on'+evnt, ev);
|
146 |
+
} else if(el['on'+evnt]) { // alternatively use the traditional event model (IE5)
|
147 |
+
el['on'+evnt]();
|
148 |
+
}
|
149 |
+
},
|
150 |
+
|
151 |
+
|
152 |
+
getElementPos : function(e) {
|
153 |
+
var e1=e, e2=e;
|
154 |
+
var x=0, y=0;
|
155 |
+
if(e1.offsetParent) {
|
156 |
+
do {
|
157 |
+
x += e1.offsetLeft;
|
158 |
+
y += e1.offsetTop;
|
159 |
+
} while(e1 = e1.offsetParent);
|
160 |
+
}
|
161 |
+
while((e2 = e2.parentNode) && e2.nodeName.toUpperCase() !== 'BODY') {
|
162 |
+
x -= e2.scrollLeft;
|
163 |
+
y -= e2.scrollTop;
|
164 |
+
}
|
165 |
+
return [x, y];
|
166 |
+
},
|
167 |
+
|
168 |
+
|
169 |
+
getElementSize : function(e) {
|
170 |
+
return [e.offsetWidth, e.offsetHeight];
|
171 |
+
},
|
172 |
+
|
173 |
+
|
174 |
+
getRelMousePos : function(e) {
|
175 |
+
var x = 0, y = 0;
|
176 |
+
if (!e) { e = window.event; }
|
177 |
+
if (typeof e.offsetX === 'number') {
|
178 |
+
x = e.offsetX;
|
179 |
+
y = e.offsetY;
|
180 |
+
} else if (typeof e.layerX === 'number') {
|
181 |
+
x = e.layerX;
|
182 |
+
y = e.layerY;
|
183 |
+
}
|
184 |
+
return { x: x, y: y };
|
185 |
+
},
|
186 |
+
|
187 |
+
|
188 |
+
getViewPos : function() {
|
189 |
+
if(typeof window.pageYOffset === 'number') {
|
190 |
+
return [window.pageXOffset, window.pageYOffset];
|
191 |
+
} else if(document.body && (document.body.scrollLeft || document.body.scrollTop)) {
|
192 |
+
return [document.body.scrollLeft, document.body.scrollTop];
|
193 |
+
} else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
|
194 |
+
return [document.documentElement.scrollLeft, document.documentElement.scrollTop];
|
195 |
+
} else {
|
196 |
+
return [0, 0];
|
197 |
+
}
|
198 |
+
},
|
199 |
+
|
200 |
+
|
201 |
+
getViewSize : function() {
|
202 |
+
if(typeof window.innerWidth === 'number') {
|
203 |
+
return [window.innerWidth, window.innerHeight];
|
204 |
+
} else if(document.body && (document.body.clientWidth || document.body.clientHeight)) {
|
205 |
+
return [document.body.clientWidth, document.body.clientHeight];
|
206 |
+
} else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
|
207 |
+
return [document.documentElement.clientWidth, document.documentElement.clientHeight];
|
208 |
+
} else {
|
209 |
+
return [0, 0];
|
210 |
+
}
|
211 |
+
},
|
212 |
+
|
213 |
+
|
214 |
+
URI : function(uri) { // See RFC3986
|
215 |
+
|
216 |
+
this.scheme = null;
|
217 |
+
this.authority = null;
|
218 |
+
this.path = '';
|
219 |
+
this.query = null;
|
220 |
+
this.fragment = null;
|
221 |
+
|
222 |
+
this.parse = function(uri) {
|
223 |
+
var m = uri.match(/^(([A-Za-z][0-9A-Za-z+.-]*)(:))?((\/\/)([^\/?#]*))?([^?#]*)((\?)([^#]*))?((#)(.*))?/);
|
224 |
+
this.scheme = m[3] ? m[2] : null;
|
225 |
+
this.authority = m[5] ? m[6] : null;
|
226 |
+
this.path = m[7];
|
227 |
+
this.query = m[9] ? m[10] : null;
|
228 |
+
this.fragment = m[12] ? m[13] : null;
|
229 |
+
return this;
|
230 |
+
};
|
231 |
+
|
232 |
+
this.toString = function() {
|
233 |
+
var result = '';
|
234 |
+
if(this.scheme !== null) { result = result + this.scheme + ':'; }
|
235 |
+
if(this.authority !== null) { result = result + '//' + this.authority; }
|
236 |
+
if(this.path !== null) { result = result + this.path; }
|
237 |
+
if(this.query !== null) { result = result + '?' + this.query; }
|
238 |
+
if(this.fragment !== null) { result = result + '#' + this.fragment; }
|
239 |
+
return result;
|
240 |
+
};
|
241 |
+
|
242 |
+
this.toAbsolute = function(base) {
|
243 |
+
var base = new jscolor.URI(base);
|
244 |
+
var r = this;
|
245 |
+
var t = new jscolor.URI;
|
246 |
+
|
247 |
+
if(base.scheme === null) { return false; }
|
248 |
+
|
249 |
+
if(r.scheme !== null && r.scheme.toLowerCase() === base.scheme.toLowerCase()) {
|
250 |
+
r.scheme = null;
|
251 |
+
}
|
252 |
+
|
253 |
+
if(r.scheme !== null) {
|
254 |
+
t.scheme = r.scheme;
|
255 |
+
t.authority = r.authority;
|
256 |
+
t.path = removeDotSegments(r.path);
|
257 |
+
t.query = r.query;
|
258 |
+
} else {
|
259 |
+
if(r.authority !== null) {
|
260 |
+
t.authority = r.authority;
|
261 |
+
t.path = removeDotSegments(r.path);
|
262 |
+
t.query = r.query;
|
263 |
+
} else {
|
264 |
+
if(r.path === '') {
|
265 |
+
t.path = base.path;
|
266 |
+
if(r.query !== null) {
|
267 |
+
t.query = r.query;
|
268 |
+
} else {
|
269 |
+
t.query = base.query;
|
270 |
+
}
|
271 |
+
} else {
|
272 |
+
if(r.path.substr(0,1) === '/') {
|
273 |
+
t.path = removeDotSegments(r.path);
|
274 |
+
} else {
|
275 |
+
if(base.authority !== null && base.path === '') {
|
276 |
+
t.path = '/'+r.path;
|
277 |
+
} else {
|
278 |
+
t.path = base.path.replace(/[^\/]+$/,'')+r.path;
|
279 |
+
}
|
280 |
+
t.path = removeDotSegments(t.path);
|
281 |
+
}
|
282 |
+
t.query = r.query;
|
283 |
+
}
|
284 |
+
t.authority = base.authority;
|
285 |
+
}
|
286 |
+
t.scheme = base.scheme;
|
287 |
+
}
|
288 |
+
t.fragment = r.fragment;
|
289 |
+
|
290 |
+
return t;
|
291 |
+
};
|
292 |
+
|
293 |
+
function removeDotSegments(path) {
|
294 |
+
var out = '';
|
295 |
+
while(path) {
|
296 |
+
if(path.substr(0,3)==='../' || path.substr(0,2)==='./') {
|
297 |
+
path = path.replace(/^\.+/,'').substr(1);
|
298 |
+
} else if(path.substr(0,3)==='/./' || path==='/.') {
|
299 |
+
path = '/'+path.substr(3);
|
300 |
+
} else if(path.substr(0,4)==='/../' || path==='/..') {
|
301 |
+
path = '/'+path.substr(4);
|
302 |
+
out = out.replace(/\/?[^\/]*$/, '');
|
303 |
+
} else if(path==='.' || path==='..') {
|
304 |
+
path = '';
|
305 |
+
} else {
|
306 |
+
var rm = path.match(/^\/?[^\/]*/)[0];
|
307 |
+
path = path.substr(rm.length);
|
308 |
+
out = out + rm;
|
309 |
+
}
|
310 |
+
}
|
311 |
+
return out;
|
312 |
+
}
|
313 |
+
|
314 |
+
if(uri) {
|
315 |
+
this.parse(uri);
|
316 |
+
}
|
317 |
+
|
318 |
+
},
|
319 |
+
|
320 |
+
|
321 |
+
/*
|
322 |
+
* Usage example:
|
323 |
+
* var myColor = new jscolor.color(myInputElement)
|
324 |
+
*/
|
325 |
+
|
326 |
+
color : function(target, prop) {
|
327 |
+
|
328 |
+
|
329 |
+
this.required = true; // refuse empty values?
|
330 |
+
this.adjust = true; // adjust value to uniform notation?
|
331 |
+
this.hash = false; // prefix color with # symbol?
|
332 |
+
this.caps = true; // uppercase?
|
333 |
+
this.slider = true; // show the value/saturation slider?
|
334 |
+
this.valueElement = target; // value holder
|
335 |
+
this.styleElement = target; // where to reflect current color
|
336 |
+
this.onImmediateChange = null; // onchange callback (can be either string or function)
|
337 |
+
this.hsv = [0, 0, 1]; // read-only 0-6, 0-1, 0-1
|
338 |
+
this.rgb = [1, 1, 1]; // read-only 0-1, 0-1, 0-1
|
339 |
+
this.minH = 0; // read-only 0-6
|
340 |
+
this.maxH = 6; // read-only 0-6
|
341 |
+
this.minS = 0; // read-only 0-1
|
342 |
+
this.maxS = 1; // read-only 0-1
|
343 |
+
this.minV = 0; // read-only 0-1
|
344 |
+
this.maxV = 1; // read-only 0-1
|
345 |
+
|
346 |
+
this.pickerOnfocus = true; // display picker on focus?
|
347 |
+
this.pickerMode = 'HSV'; // HSV | HVS
|
348 |
+
this.pickerPosition = 'bottom'; // left | right | top | bottom
|
349 |
+
this.pickerSmartPosition = true; // automatically adjust picker position when necessary
|
350 |
+
this.pickerButtonHeight = 20; // px
|
351 |
+
this.pickerClosable = false;
|
352 |
+
this.pickerCloseText = 'Close';
|
353 |
+
this.pickerButtonColor = 'ButtonText'; // px
|
354 |
+
this.pickerFace = 10; // px
|
355 |
+
this.pickerFaceColor = 'ThreeDFace'; // CSS color
|
356 |
+
this.pickerBorder = 1; // px
|
357 |
+
this.pickerBorderColor = 'ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight'; // CSS color
|
358 |
+
this.pickerInset = 1; // px
|
359 |
+
this.pickerInsetColor = 'ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow'; // CSS color
|
360 |
+
this.pickerZIndex = 10000;
|
361 |
+
|
362 |
+
|
363 |
+
for(var p in prop) {
|
364 |
+
if(prop.hasOwnProperty(p)) {
|
365 |
+
this[p] = prop[p];
|
366 |
+
}
|
367 |
+
}
|
368 |
+
|
369 |
+
|
370 |
+
this.hidePicker = function() {
|
371 |
+
if(isPickerOwner()) {
|
372 |
+
removePicker();
|
373 |
+
}
|
374 |
+
};
|
375 |
+
|
376 |
+
|
377 |
+
this.showPicker = function() {
|
378 |
+
if(!isPickerOwner()) {
|
379 |
+
var tp = jscolor.getElementPos(target); // target pos
|
380 |
+
var ts = jscolor.getElementSize(target); // target size
|
381 |
+
var vp = jscolor.getViewPos(); // view pos
|
382 |
+
var vs = jscolor.getViewSize(); // view size
|
383 |
+
var ps = getPickerDims(this); // picker size
|
384 |
+
var a, b, c;
|
385 |
+
switch(this.pickerPosition.toLowerCase()) {
|
386 |
+
case 'left': a=1; b=0; c=-1; break;
|
387 |
+
case 'right':a=1; b=0; c=1; break;
|
388 |
+
case 'top': a=0; b=1; c=-1; break;
|
389 |
+
default: a=0; b=1; c=1; break;
|
390 |
+
}
|
391 |
+
var l = (ts[b]+ps[b])/2;
|
392 |
+
|
393 |
+
// picker pos
|
394 |
+
if (!this.pickerSmartPosition) {
|
395 |
+
var pp = [
|
396 |
+
tp[a],
|
397 |
+
tp[b]+ts[b]-l+l*c
|
398 |
+
];
|
399 |
+
} else {
|
400 |
+
var pp = [
|
401 |
+
-vp[a]+tp[a]+ps[a] > vs[a] ?
|
402 |
+
(-vp[a]+tp[a]+ts[a]/2 > vs[a]/2 && tp[a]+ts[a]-ps[a] >= 0 ? tp[a]+ts[a]-ps[a] : tp[a]) :
|
403 |
+
tp[a],
|
404 |
+
-vp[b]+tp[b]+ts[b]+ps[b]-l+l*c > vs[b] ?
|
405 |
+
(-vp[b]+tp[b]+ts[b]/2 > vs[b]/2 && tp[b]+ts[b]-l-l*c >= 0 ? tp[b]+ts[b]-l-l*c : tp[b]+ts[b]-l+l*c) :
|
406 |
+
(tp[b]+ts[b]-l+l*c >= 0 ? tp[b]+ts[b]-l+l*c : tp[b]+ts[b]-l-l*c)
|
407 |
+
];
|
408 |
+
}
|
409 |
+
drawPicker(pp[a], pp[b]);
|
410 |
+
}
|
411 |
+
};
|
412 |
+
|
413 |
+
|
414 |
+
this.importColor = function() {
|
415 |
+
if(!valueElement) {
|
416 |
+
this.exportColor();
|
417 |
+
} else {
|
418 |
+
if(!this.adjust) {
|
419 |
+
if(!this.fromString(valueElement.value, leaveValue)) {
|
420 |
+
styleElement.style.backgroundImage = styleElement.jscStyle.backgroundImage;
|
421 |
+
styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor;
|
422 |
+
styleElement.style.color = styleElement.jscStyle.color;
|
423 |
+
this.exportColor(leaveValue | leaveStyle);
|
424 |
+
}
|
425 |
+
} else if(!this.required && /^\s*$/.test(valueElement.value)) {
|
426 |
+
valueElement.value = '';
|
427 |
+
styleElement.style.backgroundImage = styleElement.jscStyle.backgroundImage;
|
428 |
+
styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor;
|
429 |
+
styleElement.style.color = styleElement.jscStyle.color;
|
430 |
+
this.exportColor(leaveValue | leaveStyle);
|
431 |
+
|
432 |
+
} else if(this.fromString(valueElement.value)) {
|
433 |
+
// OK
|
434 |
+
} else {
|
435 |
+
this.exportColor();
|
436 |
+
}
|
437 |
+
}
|
438 |
+
};
|
439 |
+
|
440 |
+
|
441 |
+
this.exportColor = function(flags) {
|
442 |
+
if(!(flags & leaveValue) && valueElement) {
|
443 |
+
var value = this.toString();
|
444 |
+
if(this.caps) { value = value.toUpperCase(); }
|
445 |
+
if(this.hash) { value = '#'+value; }
|
446 |
+
valueElement.value = value;
|
447 |
+
}
|
448 |
+
if(!(flags & leaveStyle) && styleElement) {
|
449 |
+
styleElement.style.backgroundImage = "none";
|
450 |
+
styleElement.style.backgroundColor =
|
451 |
+
'#'+this.toString();
|
452 |
+
styleElement.style.color =
|
453 |
+
0.213 * this.rgb[0] +
|
454 |
+
0.715 * this.rgb[1] +
|
455 |
+
0.072 * this.rgb[2]
|
456 |
+
< 0.5 ? '#FFF' : '#000';
|
457 |
+
}
|
458 |
+
if(!(flags & leavePad) && isPickerOwner()) {
|
459 |
+
redrawPad();
|
460 |
+
}
|
461 |
+
if(!(flags & leaveSld) && isPickerOwner()) {
|
462 |
+
redrawSld();
|
463 |
+
}
|
464 |
+
};
|
465 |
+
|
466 |
+
|
467 |
+
this.fromHSV = function(h, s, v, flags) { // null = don't change
|
468 |
+
if(h !== null) { h = Math.max(0.0, this.minH, Math.min(6.0, this.maxH, h)); }
|
469 |
+
if(s !== null) { s = Math.max(0.0, this.minS, Math.min(1.0, this.maxS, s)); }
|
470 |
+
if(v !== null) { v = Math.max(0.0, this.minV, Math.min(1.0, this.maxV, v)); }
|
471 |
+
|
472 |
+
this.rgb = HSV_RGB(
|
473 |
+
h===null ? this.hsv[0] : (this.hsv[0]=h),
|
474 |
+
s===null ? this.hsv[1] : (this.hsv[1]=s),
|
475 |
+
v===null ? this.hsv[2] : (this.hsv[2]=v)
|
476 |
+
);
|
477 |
+
|
478 |
+
this.exportColor(flags);
|
479 |
+
};
|
480 |
+
|
481 |
+
|
482 |
+
this.fromRGB = function(r, g, b, flags) { // null = don't change
|
483 |
+
if(r !== null) { r = Math.max(0.0, Math.min(1.0, r)); }
|
484 |
+
if(g !== null) { g = Math.max(0.0, Math.min(1.0, g)); }
|
485 |
+
if(b !== null) { b = Math.max(0.0, Math.min(1.0, b)); }
|
486 |
+
|
487 |
+
var hsv = RGB_HSV(
|
488 |
+
r===null ? this.rgb[0] : r,
|
489 |
+
g===null ? this.rgb[1] : g,
|
490 |
+
b===null ? this.rgb[2] : b
|
491 |
+
);
|
492 |
+
if(hsv[0] !== null) {
|
493 |
+
this.hsv[0] = Math.max(0.0, this.minH, Math.min(6.0, this.maxH, hsv[0]));
|
494 |
+
}
|
495 |
+
if(hsv[2] !== 0) {
|
496 |
+
this.hsv[1] = hsv[1]===null ? null : Math.max(0.0, this.minS, Math.min(1.0, this.maxS, hsv[1]));
|
497 |
+
}
|
498 |
+
this.hsv[2] = hsv[2]===null ? null : Math.max(0.0, this.minV, Math.min(1.0, this.maxV, hsv[2]));
|
499 |
+
|
500 |
+
// update RGB according to final HSV, as some values might be trimmed
|
501 |
+
var rgb = HSV_RGB(this.hsv[0], this.hsv[1], this.hsv[2]);
|
502 |
+
this.rgb[0] = rgb[0];
|
503 |
+
this.rgb[1] = rgb[1];
|
504 |
+
this.rgb[2] = rgb[2];
|
505 |
+
|
506 |
+
this.exportColor(flags);
|
507 |
+
};
|
508 |
+
|
509 |
+
|
510 |
+
this.fromString = function(hex, flags) {
|
511 |
+
var m = hex.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i);
|
512 |
+
if(!m) {
|
513 |
+
return false;
|
514 |
+
} else {
|
515 |
+
if(m[1].length === 6) { // 6-char notation
|
516 |
+
this.fromRGB(
|
517 |
+
parseInt(m[1].substr(0,2),16) / 255,
|
518 |
+
parseInt(m[1].substr(2,2),16) / 255,
|
519 |
+
parseInt(m[1].substr(4,2),16) / 255,
|
520 |
+
flags
|
521 |
+
);
|
522 |
+
} else { // 3-char notation
|
523 |
+
this.fromRGB(
|
524 |
+
parseInt(m[1].charAt(0)+m[1].charAt(0),16) / 255,
|
525 |
+
parseInt(m[1].charAt(1)+m[1].charAt(1),16) / 255,
|
526 |
+
parseInt(m[1].charAt(2)+m[1].charAt(2),16) / 255,
|
527 |
+
flags
|
528 |
+
);
|
529 |
+
}
|
530 |
+
return true;
|
531 |
+
}
|
532 |
+
};
|
533 |
+
|
534 |
+
|
535 |
+
this.toString = function() {
|
536 |
+
return (
|
537 |
+
(0x100 | Math.round(255*this.rgb[0])).toString(16).substr(1) +
|
538 |
+
(0x100 | Math.round(255*this.rgb[1])).toString(16).substr(1) +
|
539 |
+
(0x100 | Math.round(255*this.rgb[2])).toString(16).substr(1)
|
540 |
+
);
|
541 |
+
};
|
542 |
+
|
543 |
+
|
544 |
+
function RGB_HSV(r, g, b) {
|
545 |
+
var n = Math.min(Math.min(r,g),b);
|
546 |
+
var v = Math.max(Math.max(r,g),b);
|
547 |
+
var m = v - n;
|
548 |
+
if(m === 0) { return [ null, 0, v ]; }
|
549 |
+
var h = r===n ? 3+(b-g)/m : (g===n ? 5+(r-b)/m : 1+(g-r)/m);
|
550 |
+
return [ h===6?0:h, m/v, v ];
|
551 |
+
}
|
552 |
+
|
553 |
+
|
554 |
+
function HSV_RGB(h, s, v) {
|
555 |
+
if(h === null) { return [ v, v, v ]; }
|
556 |
+
var i = Math.floor(h);
|
557 |
+
var f = i%2 ? h-i : 1-(h-i);
|
558 |
+
var m = v * (1 - s);
|
559 |
+
var n = v * (1 - s*f);
|
560 |
+
switch(i) {
|
561 |
+
case 6:
|
562 |
+
case 0: return [v,n,m];
|
563 |
+
case 1: return [n,v,m];
|
564 |
+
case 2: return [m,v,n];
|
565 |
+
case 3: return [m,n,v];
|
566 |
+
case 4: return [n,m,v];
|
567 |
+
case 5: return [v,m,n];
|
568 |
+
}
|
569 |
+
}
|
570 |
+
|
571 |
+
|
572 |
+
function removePicker() {
|
573 |
+
delete jscolor.picker.owner;
|
574 |
+
document.getElementsByTagName('body')[0].removeChild(jscolor.picker.boxB);
|
575 |
+
}
|
576 |
+
|
577 |
+
|
578 |
+
function drawPicker(x, y) {
|
579 |
+
if(!jscolor.picker) {
|
580 |
+
jscolor.picker = {
|
581 |
+
box : document.createElement('div'),
|
582 |
+
boxB : document.createElement('div'),
|
583 |
+
pad : document.createElement('div'),
|
584 |
+
padB : document.createElement('div'),
|
585 |
+
padM : document.createElement('div'),
|
586 |
+
sld : document.createElement('div'),
|
587 |
+
sldB : document.createElement('div'),
|
588 |
+
sldM : document.createElement('div'),
|
589 |
+
btn : document.createElement('div'),
|
590 |
+
btnS : document.createElement('span'),
|
591 |
+
btnT : document.createTextNode(THIS.pickerCloseText)
|
592 |
+
};
|
593 |
+
for(var i=0,segSize=4; i<jscolor.images.sld[1]; i+=segSize) {
|
594 |
+
var seg = document.createElement('div');
|
595 |
+
seg.style.height = segSize+'px';
|
596 |
+
seg.style.fontSize = '1px';
|
597 |
+
seg.style.lineHeight = '0';
|
598 |
+
jscolor.picker.sld.appendChild(seg);
|
599 |
+
}
|
600 |
+
jscolor.picker.sldB.appendChild(jscolor.picker.sld);
|
601 |
+
jscolor.picker.box.appendChild(jscolor.picker.sldB);
|
602 |
+
jscolor.picker.box.appendChild(jscolor.picker.sldM);
|
603 |
+
jscolor.picker.padB.appendChild(jscolor.picker.pad);
|
604 |
+
jscolor.picker.box.appendChild(jscolor.picker.padB);
|
605 |
+
jscolor.picker.box.appendChild(jscolor.picker.padM);
|
606 |
+
jscolor.picker.btnS.appendChild(jscolor.picker.btnT);
|
607 |
+
jscolor.picker.btn.appendChild(jscolor.picker.btnS);
|
608 |
+
jscolor.picker.box.appendChild(jscolor.picker.btn);
|
609 |
+
jscolor.picker.boxB.appendChild(jscolor.picker.box);
|
610 |
+
}
|
611 |
+
|
612 |
+
var p = jscolor.picker;
|
613 |
+
|
614 |
+
// controls interaction
|
615 |
+
p.box.onmouseup =
|
616 |
+
p.box.onmouseout = function() { target.focus(); };
|
617 |
+
p.box.onmousedown = function() { abortBlur=true; };
|
618 |
+
p.box.onmousemove = function(e) {
|
619 |
+
if (holdPad || holdSld) {
|
620 |
+
holdPad && setPad(e);
|
621 |
+
holdSld && setSld(e);
|
622 |
+
if (document.selection) {
|
623 |
+
document.selection.empty();
|
624 |
+
} else if (window.getSelection) {
|
625 |
+
window.getSelection().removeAllRanges();
|
626 |
+
}
|
627 |
+
dispatchImmediateChange();
|
628 |
+
}
|
629 |
+
};
|
630 |
+
p.padM.onmouseup =
|
631 |
+
p.padM.onmouseout = function() { if(holdPad) { holdPad=false; jscolor.fireEvent(valueElement,'change'); } };
|
632 |
+
p.padM.onmousedown = function(e) {
|
633 |
+
// if the slider is at the bottom, move it up
|
634 |
+
switch(modeID) {
|
635 |
+
case 0: if (THIS.hsv[2] === 0) { THIS.fromHSV(null, null, 1.0); }; break;
|
636 |
+
case 1: if (THIS.hsv[1] === 0) { THIS.fromHSV(null, 1.0, null); }; break;
|
637 |
+
}
|
638 |
+
holdPad=true;
|
639 |
+
setPad(e);
|
640 |
+
dispatchImmediateChange();
|
641 |
+
};
|
642 |
+
p.sldM.onmouseup =
|
643 |
+
p.sldM.onmouseout = function() { if(holdSld) { holdSld=false; jscolor.fireEvent(valueElement,'change'); } };
|
644 |
+
p.sldM.onmousedown = function(e) {
|
645 |
+
holdSld=true;
|
646 |
+
setSld(e);
|
647 |
+
dispatchImmediateChange();
|
648 |
+
};
|
649 |
+
|
650 |
+
// picker
|
651 |
+
var dims = getPickerDims(THIS);
|
652 |
+
p.box.style.width = dims[0] + 'px';
|
653 |
+
p.box.style.height = dims[1] + 'px';
|
654 |
+
|
655 |
+
// picker border
|
656 |
+
p.boxB.style.position = 'absolute';
|
657 |
+
p.boxB.style.clear = 'both';
|
658 |
+
p.boxB.style.left = x+'px';
|
659 |
+
p.boxB.style.top = y+'px';
|
660 |
+
p.boxB.style.zIndex = THIS.pickerZIndex;
|
661 |
+
p.boxB.style.border = THIS.pickerBorder+'px solid';
|
662 |
+
p.boxB.style.borderColor = THIS.pickerBorderColor;
|
663 |
+
p.boxB.style.background = THIS.pickerFaceColor;
|
664 |
+
|
665 |
+
// pad image
|
666 |
+
p.pad.style.width = jscolor.images.pad[0]+'px';
|
667 |
+
p.pad.style.height = jscolor.images.pad[1]+'px';
|
668 |
+
|
669 |
+
// pad border
|
670 |
+
p.padB.style.position = 'absolute';
|
671 |
+
p.padB.style.left = THIS.pickerFace+'px';
|
672 |
+
p.padB.style.top = THIS.pickerFace+'px';
|
673 |
+
p.padB.style.border = THIS.pickerInset+'px solid';
|
674 |
+
p.padB.style.borderColor = THIS.pickerInsetColor;
|
675 |
+
|
676 |
+
// pad mouse area
|
677 |
+
p.padM.style.position = 'absolute';
|
678 |
+
p.padM.style.left = '0';
|
679 |
+
p.padM.style.top = '0';
|
680 |
+
p.padM.style.width = THIS.pickerFace + 2*THIS.pickerInset + jscolor.images.pad[0] + jscolor.images.arrow[0] + 'px';
|
681 |
+
p.padM.style.height = p.box.style.height;
|
682 |
+
p.padM.style.cursor = 'crosshair';
|
683 |
+
|
684 |
+
// slider image
|
685 |
+
p.sld.style.overflow = 'hidden';
|
686 |
+
p.sld.style.width = jscolor.images.sld[0]+'px';
|
687 |
+
p.sld.style.height = jscolor.images.sld[1]+'px';
|
688 |
+
|
689 |
+
// slider border
|
690 |
+
p.sldB.style.display = THIS.slider ? 'block' : 'none';
|
691 |
+
p.sldB.style.position = 'absolute';
|
692 |
+
p.sldB.style.right = THIS.pickerFace+'px';
|
693 |
+
p.sldB.style.top = THIS.pickerFace+'px';
|
694 |
+
p.sldB.style.border = THIS.pickerInset+'px solid';
|
695 |
+
p.sldB.style.borderColor = THIS.pickerInsetColor;
|
696 |
+
|
697 |
+
// slider mouse area
|
698 |
+
p.sldM.style.display = THIS.slider ? 'block' : 'none';
|
699 |
+
p.sldM.style.position = 'absolute';
|
700 |
+
p.sldM.style.right = '0';
|
701 |
+
p.sldM.style.top = '0';
|
702 |
+
p.sldM.style.width = jscolor.images.sld[0] + jscolor.images.arrow[0] + THIS.pickerFace + 2*THIS.pickerInset + 'px';
|
703 |
+
p.sldM.style.height = p.box.style.height;
|
704 |
+
try {
|
705 |
+
p.sldM.style.cursor = 'pointer';
|
706 |
+
} catch(eOldIE) {
|
707 |
+
p.sldM.style.cursor = 'hand';
|
708 |
+
}
|
709 |
+
|
710 |
+
// "close" button
|
711 |
+
function setBtnBorder() {
|
712 |
+
var insetColors = THIS.pickerInsetColor.split(/\s+/);
|
713 |
+
var pickerOutsetColor = insetColors.length < 2 ? insetColors[0] : insetColors[1] + ' ' + insetColors[0] + ' ' + insetColors[0] + ' ' + insetColors[1];
|
714 |
+
p.btn.style.borderColor = pickerOutsetColor;
|
715 |
+
}
|
716 |
+
p.btn.style.display = THIS.pickerClosable ? 'block' : 'none';
|
717 |
+
p.btn.style.position = 'absolute';
|
718 |
+
p.btn.style.left = THIS.pickerFace + 'px';
|
719 |
+
p.btn.style.bottom = THIS.pickerFace + 'px';
|
720 |
+
p.btn.style.padding = '0 15px';
|
721 |
+
p.btn.style.height = '18px';
|
722 |
+
p.btn.style.border = THIS.pickerInset + 'px solid';
|
723 |
+
setBtnBorder();
|
724 |
+
p.btn.style.color = THIS.pickerButtonColor;
|
725 |
+
p.btn.style.font = '12px sans-serif';
|
726 |
+
p.btn.style.textAlign = 'center';
|
727 |
+
try {
|
728 |
+
p.btn.style.cursor = 'pointer';
|
729 |
+
} catch(eOldIE) {
|
730 |
+
p.btn.style.cursor = 'hand';
|
731 |
+
}
|
732 |
+
p.btn.onmousedown = function () {
|
733 |
+
THIS.hidePicker();
|
734 |
+
};
|
735 |
+
p.btnS.style.lineHeight = p.btn.style.height;
|
736 |
+
|
737 |
+
// load images in optimal order
|
738 |
+
switch(modeID) {
|
739 |
+
case 0: var padImg = 'hs.png'; break;
|
740 |
+
case 1: var padImg = 'hv.png'; break;
|
741 |
+
}
|
742 |
+
p.padM.style.backgroundImage = "url('"+jscolor.getDir()+"cross.gif')";
|
743 |
+
p.padM.style.backgroundRepeat = "no-repeat";
|
744 |
+
p.sldM.style.backgroundImage = "url('"+jscolor.getDir()+"arrow.gif')";
|
745 |
+
p.sldM.style.backgroundRepeat = "no-repeat";
|
746 |
+
p.pad.style.backgroundImage = "url('"+jscolor.getDir()+padImg+"')";
|
747 |
+
p.pad.style.backgroundRepeat = "no-repeat";
|
748 |
+
p.pad.style.backgroundPosition = "0 0";
|
749 |
+
|
750 |
+
// place pointers
|
751 |
+
redrawPad();
|
752 |
+
redrawSld();
|
753 |
+
|
754 |
+
jscolor.picker.owner = THIS;
|
755 |
+
document.getElementsByTagName('body')[0].appendChild(p.boxB);
|
756 |
+
}
|
757 |
+
|
758 |
+
|
759 |
+
function getPickerDims(o) {
|
760 |
+
var dims = [
|
761 |
+
2*o.pickerInset + 2*o.pickerFace + jscolor.images.pad[0] +
|
762 |
+
(o.slider ? 2*o.pickerInset + 2*jscolor.images.arrow[0] + jscolor.images.sld[0] : 0),
|
763 |
+
o.pickerClosable ?
|
764 |
+
4*o.pickerInset + 3*o.pickerFace + jscolor.images.pad[1] + o.pickerButtonHeight :
|
765 |
+
2*o.pickerInset + 2*o.pickerFace + jscolor.images.pad[1]
|
766 |
+
];
|
767 |
+
return dims;
|
768 |
+
}
|
769 |
+
|
770 |
+
|
771 |
+
function redrawPad() {
|
772 |
+
// redraw the pad pointer
|
773 |
+
switch(modeID) {
|
774 |
+
case 0: var yComponent = 1; break;
|
775 |
+
case 1: var yComponent = 2; break;
|
776 |
+
}
|
777 |
+
var x = Math.round((THIS.hsv[0]/6) * (jscolor.images.pad[0]-1));
|
778 |
+
var y = Math.round((1-THIS.hsv[yComponent]) * (jscolor.images.pad[1]-1));
|
779 |
+
jscolor.picker.padM.style.backgroundPosition =
|
780 |
+
(THIS.pickerFace+THIS.pickerInset+x - Math.floor(jscolor.images.cross[0]/2)) + 'px ' +
|
781 |
+
(THIS.pickerFace+THIS.pickerInset+y - Math.floor(jscolor.images.cross[1]/2)) + 'px';
|
782 |
+
|
783 |
+
// redraw the slider image
|
784 |
+
var seg = jscolor.picker.sld.childNodes;
|
785 |
+
|
786 |
+
switch(modeID) {
|
787 |
+
case 0:
|
788 |
+
var rgb = HSV_RGB(THIS.hsv[0], THIS.hsv[1], 1);
|
789 |
+
for(var i=0; i<seg.length; i+=1) {
|
790 |
+
seg[i].style.backgroundColor = 'rgb('+
|
791 |
+
(rgb[0]*(1-i/seg.length)*100)+'%,'+
|
792 |
+
(rgb[1]*(1-i/seg.length)*100)+'%,'+
|
793 |
+
(rgb[2]*(1-i/seg.length)*100)+'%)';
|
794 |
+
}
|
795 |
+
break;
|
796 |
+
case 1:
|
797 |
+
var rgb, s, c = [ THIS.hsv[2], 0, 0 ];
|
798 |
+
var i = Math.floor(THIS.hsv[0]);
|
799 |
+
var f = i%2 ? THIS.hsv[0]-i : 1-(THIS.hsv[0]-i);
|
800 |
+
switch(i) {
|
801 |
+
case 6:
|
802 |
+
case 0: rgb=[0,1,2]; break;
|
803 |
+
case 1: rgb=[1,0,2]; break;
|
804 |
+
case 2: rgb=[2,0,1]; break;
|
805 |
+
case 3: rgb=[2,1,0]; break;
|
806 |
+
case 4: rgb=[1,2,0]; break;
|
807 |
+
case 5: rgb=[0,2,1]; break;
|
808 |
+
}
|
809 |
+
for(var i=0; i<seg.length; i+=1) {
|
810 |
+
s = 1 - 1/(seg.length-1)*i;
|
811 |
+
c[1] = c[0] * (1 - s*f);
|
812 |
+
c[2] = c[0] * (1 - s);
|
813 |
+
seg[i].style.backgroundColor = 'rgb('+
|
814 |
+
(c[rgb[0]]*100)+'%,'+
|
815 |
+
(c[rgb[1]]*100)+'%,'+
|
816 |
+
(c[rgb[2]]*100)+'%)';
|
817 |
+
}
|
818 |
+
break;
|
819 |
+
}
|
820 |
+
}
|
821 |
+
|
822 |
+
|
823 |
+
function redrawSld() {
|
824 |
+
// redraw the slider pointer
|
825 |
+
switch(modeID) {
|
826 |
+
case 0: var yComponent = 2; break;
|
827 |
+
case 1: var yComponent = 1; break;
|
828 |
+
}
|
829 |
+
var y = Math.round((1-THIS.hsv[yComponent]) * (jscolor.images.sld[1]-1));
|
830 |
+
jscolor.picker.sldM.style.backgroundPosition =
|
831 |
+
'0 ' + (THIS.pickerFace+THIS.pickerInset+y - Math.floor(jscolor.images.arrow[1]/2)) + 'px';
|
832 |
+
}
|
833 |
+
|
834 |
+
|
835 |
+
function isPickerOwner() {
|
836 |
+
return jscolor.picker && jscolor.picker.owner === THIS;
|
837 |
+
}
|
838 |
+
|
839 |
+
|
840 |
+
function blurTarget() {
|
841 |
+
if(valueElement === target) {
|
842 |
+
THIS.importColor();
|
843 |
+
}
|
844 |
+
if(THIS.pickerOnfocus) {
|
845 |
+
THIS.hidePicker();
|
846 |
+
}
|
847 |
+
}
|
848 |
+
|
849 |
+
|
850 |
+
function blurValue() {
|
851 |
+
if(valueElement !== target) {
|
852 |
+
THIS.importColor();
|
853 |
+
}
|
854 |
+
}
|
855 |
+
|
856 |
+
|
857 |
+
function setPad(e) {
|
858 |
+
var mpos = jscolor.getRelMousePos(e);
|
859 |
+
var x = mpos.x - THIS.pickerFace - THIS.pickerInset;
|
860 |
+
var y = mpos.y - THIS.pickerFace - THIS.pickerInset;
|
861 |
+
switch(modeID) {
|
862 |
+
case 0: THIS.fromHSV(x*(6/(jscolor.images.pad[0]-1)), 1 - y/(jscolor.images.pad[1]-1), null, leaveSld); break;
|
863 |
+
case 1: THIS.fromHSV(x*(6/(jscolor.images.pad[0]-1)), null, 1 - y/(jscolor.images.pad[1]-1), leaveSld); break;
|
864 |
+
}
|
865 |
+
}
|
866 |
+
|
867 |
+
|
868 |
+
function setSld(e) {
|
869 |
+
var mpos = jscolor.getRelMousePos(e);
|
870 |
+
var y = mpos.y - THIS.pickerFace - THIS.pickerInset;
|
871 |
+
switch(modeID) {
|
872 |
+
case 0: THIS.fromHSV(null, null, 1 - y/(jscolor.images.sld[1]-1), leavePad); break;
|
873 |
+
case 1: THIS.fromHSV(null, 1 - y/(jscolor.images.sld[1]-1), null, leavePad); break;
|
874 |
+
}
|
875 |
+
}
|
876 |
+
|
877 |
+
|
878 |
+
function dispatchImmediateChange() {
|
879 |
+
if (THIS.onImmediateChange) {
|
880 |
+
var callback;
|
881 |
+
if (typeof THIS.onImmediateChange === 'string') {
|
882 |
+
callback = new Function (THIS.onImmediateChange);
|
883 |
+
} else {
|
884 |
+
callback = THIS.onImmediateChange;
|
885 |
+
}
|
886 |
+
callback.call(THIS);
|
887 |
+
}
|
888 |
+
}
|
889 |
+
|
890 |
+
|
891 |
+
var THIS = this;
|
892 |
+
var modeID = this.pickerMode.toLowerCase()==='hvs' ? 1 : 0;
|
893 |
+
var abortBlur = false;
|
894 |
+
var
|
895 |
+
valueElement = jscolor.fetchElement(this.valueElement),
|
896 |
+
styleElement = jscolor.fetchElement(this.styleElement);
|
897 |
+
var
|
898 |
+
holdPad = false,
|
899 |
+
holdSld = false;
|
900 |
+
var
|
901 |
+
leaveValue = 1<<0,
|
902 |
+
leaveStyle = 1<<1,
|
903 |
+
leavePad = 1<<2,
|
904 |
+
leaveSld = 1<<3;
|
905 |
+
|
906 |
+
// target
|
907 |
+
jscolor.addEvent(target, 'focus', function() {
|
908 |
+
if(THIS.pickerOnfocus) { THIS.showPicker(); }
|
909 |
+
});
|
910 |
+
jscolor.addEvent(target, 'blur', function() {
|
911 |
+
if(!abortBlur) {
|
912 |
+
window.setTimeout(function(){ abortBlur || blurTarget(); abortBlur=false; }, 0);
|
913 |
+
} else {
|
914 |
+
abortBlur = false;
|
915 |
+
}
|
916 |
+
});
|
917 |
+
|
918 |
+
// valueElement
|
919 |
+
if(valueElement) {
|
920 |
+
var updateField = function() {
|
921 |
+
THIS.fromString(valueElement.value, leaveValue);
|
922 |
+
dispatchImmediateChange();
|
923 |
+
};
|
924 |
+
jscolor.addEvent(valueElement, 'keyup', updateField);
|
925 |
+
jscolor.addEvent(valueElement, 'input', updateField);
|
926 |
+
jscolor.addEvent(valueElement, 'blur', blurValue);
|
927 |
+
valueElement.setAttribute('autocomplete', 'off');
|
928 |
+
}
|
929 |
+
|
930 |
+
// styleElement
|
931 |
+
if(styleElement) {
|
932 |
+
styleElement.jscStyle = {
|
933 |
+
backgroundImage : styleElement.style.backgroundImage,
|
934 |
+
backgroundColor : styleElement.style.backgroundColor,
|
935 |
+
color : styleElement.style.color
|
936 |
+
};
|
937 |
+
}
|
938 |
+
|
939 |
+
// require images
|
940 |
+
switch(modeID) {
|
941 |
+
case 0: jscolor.requireImage('hs.png'); break;
|
942 |
+
case 1: jscolor.requireImage('hv.png'); break;
|
943 |
+
}
|
944 |
+
jscolor.requireImage('cross.gif');
|
945 |
+
jscolor.requireImage('arrow.gif');
|
946 |
+
|
947 |
+
this.importColor();
|
948 |
+
}
|
949 |
+
|
950 |
+
};
|
951 |
+
|
952 |
+
|
953 |
+
jscolor.install();
|
license.txt
ADDED
@@ -0,0 +1,339 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
GNU GENERAL PUBLIC LICENSE
|
2 |
+
Version 2, June 1991
|
3 |
+
|
4 |
+
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
5 |
+
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
6 |
+
Everyone is permitted to copy and distribute verbatim copies
|
7 |
+
of this license document, but changing it is not allowed.
|
8 |
+
|
9 |
+
Preamble
|
10 |
+
|
11 |
+
The licenses for most software are designed to take away your
|
12 |
+
freedom to share and change it. By contrast, the GNU General Public
|
13 |
+
License is intended to guarantee your freedom to share and change free
|
14 |
+
software--to make sure the software is free for all its users. This
|
15 |
+
General Public License applies to most of the Free Software
|
16 |
+
Foundation's software and to any other program whose authors commit to
|
17 |
+
using it. (Some other Free Software Foundation software is covered by
|
18 |
+
the GNU Lesser General Public License instead.) You can apply it to
|
19 |
+
your programs, too.
|
20 |
+
|
21 |
+
When we speak of free software, we are referring to freedom, not
|
22 |
+
price. Our General Public Licenses are designed to make sure that you
|
23 |
+
have the freedom to distribute copies of free software (and charge for
|
24 |
+
this service if you wish), that you receive source code or can get it
|
25 |
+
if you want it, that you can change the software or use pieces of it
|
26 |
+
in new free programs; and that you know you can do these things.
|
27 |
+
|
28 |
+
To protect your rights, we need to make restrictions that forbid
|
29 |
+
anyone to deny you these rights or to ask you to surrender the rights.
|
30 |
+
These restrictions translate to certain responsibilities for you if you
|
31 |
+
distribute copies of the software, or if you modify it.
|
32 |
+
|
33 |
+
For example, if you distribute copies of such a program, whether
|
34 |
+
gratis or for a fee, you must give the recipients all the rights that
|
35 |
+
you have. You must make sure that they, too, receive or can get the
|
36 |
+
source code. And you must show them these terms so they know their
|
37 |
+
rights.
|
38 |
+
|
39 |
+
We protect your rights with two steps: (1) copyright the software, and
|
40 |
+
(2) offer you this license which gives you legal permission to copy,
|
41 |
+
distribute and/or modify the software.
|
42 |
+
|
43 |
+
Also, for each author's protection and ours, we want to make certain
|
44 |
+
that everyone understands that there is no warranty for this free
|
45 |
+
software. If the software is modified by someone else and passed on, we
|
46 |
+
want its recipients to know that what they have is not the original, so
|
47 |
+
that any problems introduced by others will not reflect on the original
|
48 |
+
authors' reputations.
|
49 |
+
|
50 |
+
Finally, any free program is threatened constantly by software
|
51 |
+
patents. We wish to avoid the danger that redistributors of a free
|
52 |
+
program will individually obtain patent licenses, in effect making the
|
53 |
+
program proprietary. To prevent this, we have made it clear that any
|
54 |
+
patent must be licensed for everyone's free use or not licensed at all.
|
55 |
+
|
56 |
+
The precise terms and conditions for copying, distribution and
|
57 |
+
modification follow.
|
58 |
+
|
59 |
+
GNU GENERAL PUBLIC LICENSE
|
60 |
+
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
61 |
+
|
62 |
+
0. This License applies to any program or other work which contains
|
63 |
+
a notice placed by the copyright holder saying it may be distributed
|
64 |
+
under the terms of this General Public License. The "Program", below,
|
65 |
+
refers to any such program or work, and a "work based on the Program"
|
66 |
+
means either the Program or any derivative work under copyright law:
|
67 |
+
that is to say, a work containing the Program or a portion of it,
|
68 |
+
either verbatim or with modifications and/or translated into another
|
69 |
+
language. (Hereinafter, translation is included without limitation in
|
70 |
+
the term "modification".) Each licensee is addressed as "you".
|
71 |
+
|
72 |
+
Activities other than copying, distribution and modification are not
|
73 |
+
covered by this License; they are outside its scope. The act of
|
74 |
+
running the Program is not restricted, and the output from the Program
|
75 |
+
is covered only if its contents constitute a work based on the
|
76 |
+
Program (independent of having been made by running the Program).
|
77 |
+
Whether that is true depends on what the Program does.
|
78 |
+
|
79 |
+
1. You may copy and distribute verbatim copies of the Program's
|
80 |
+
source code as you receive it, in any medium, provided that you
|
81 |
+
conspicuously and appropriately publish on each copy an appropriate
|
82 |
+
copyright notice and disclaimer of warranty; keep intact all the
|
83 |
+
notices that refer to this License and to the absence of any warranty;
|
84 |
+
and give any other recipients of the Program a copy of this License
|
85 |
+
along with the Program.
|
86 |
+
|
87 |
+
You may charge a fee for the physical act of transferring a copy, and
|
88 |
+
you may at your option offer warranty protection in exchange for a fee.
|
89 |
+
|
90 |
+
2. You may modify your copy or copies of the Program or any portion
|
91 |
+
of it, thus forming a work based on the Program, and copy and
|
92 |
+
distribute such modifications or work under the terms of Section 1
|
93 |
+
above, provided that you also meet all of these conditions:
|
94 |
+
|
95 |
+
a) You must cause the modified files to carry prominent notices
|
96 |
+
stating that you changed the files and the date of any change.
|
97 |
+
|
98 |
+
b) You must cause any work that you distribute or publish, that in
|
99 |
+
whole or in part contains or is derived from the Program or any
|
100 |
+
part thereof, to be licensed as a whole at no charge to all third
|
101 |
+
parties under the terms of this License.
|
102 |
+
|
103 |
+
c) If the modified program normally reads commands interactively
|
104 |
+
when run, you must cause it, when started running for such
|
105 |
+
interactive use in the most ordinary way, to print or display an
|
106 |
+
announcement including an appropriate copyright notice and a
|
107 |
+
notice that there is no warranty (or else, saying that you provide
|
108 |
+
a warranty) and that users may redistribute the program under
|
109 |
+
these conditions, and telling the user how to view a copy of this
|
110 |
+
License. (Exception: if the Program itself is interactive but
|
111 |
+
does not normally print such an announcement, your work based on
|
112 |
+
the Program is not required to print an announcement.)
|
113 |
+
|
114 |
+
These requirements apply to the modified work as a whole. If
|
115 |
+
identifiable sections of that work are not derived from the Program,
|
116 |
+
and can be reasonably considered independent and separate works in
|
117 |
+
themselves, then this License, and its terms, do not apply to those
|
118 |
+
sections when you distribute them as separate works. But when you
|
119 |
+
distribute the same sections as part of a whole which is a work based
|
120 |
+
on the Program, the distribution of the whole must be on the terms of
|
121 |
+
this License, whose permissions for other licensees extend to the
|
122 |
+
entire whole, and thus to each and every part regardless of who wrote it.
|
123 |
+
|
124 |
+
Thus, it is not the intent of this section to claim rights or contest
|
125 |
+
your rights to work written entirely by you; rather, the intent is to
|
126 |
+
exercise the right to control the distribution of derivative or
|
127 |
+
collective works based on the Program.
|
128 |
+
|
129 |
+
In addition, mere aggregation of another work not based on the Program
|
130 |
+
with the Program (or with a work based on the Program) on a volume of
|
131 |
+
a storage or distribution medium does not bring the other work under
|
132 |
+
the scope of this License.
|
133 |
+
|
134 |
+
3. You may copy and distribute the Program (or a work based on it,
|
135 |
+
under Section 2) in object code or executable form under the terms of
|
136 |
+
Sections 1 and 2 above provided that you also do one of the following:
|
137 |
+
|
138 |
+
a) Accompany it with the complete corresponding machine-readable
|
139 |
+
source code, which must be distributed under the terms of Sections
|
140 |
+
1 and 2 above on a medium customarily used for software interchange; or,
|
141 |
+
|
142 |
+
b) Accompany it with a written offer, valid for at least three
|
143 |
+
years, to give any third party, for a charge no more than your
|
144 |
+
cost of physically performing source distribution, a complete
|
145 |
+
machine-readable copy of the corresponding source code, to be
|
146 |
+
distributed under the terms of Sections 1 and 2 above on a medium
|
147 |
+
customarily used for software interchange; or,
|
148 |
+
|
149 |
+
c) Accompany it with the information you received as to the offer
|
150 |
+
to distribute corresponding source code. (This alternative is
|
151 |
+
allowed only for noncommercial distribution and only if you
|
152 |
+
received the program in object code or executable form with such
|
153 |
+
an offer, in accord with Subsection b above.)
|
154 |
+
|
155 |
+
The source code for a work means the preferred form of the work for
|
156 |
+
making modifications to it. For an executable work, complete source
|
157 |
+
code means all the source code for all modules it contains, plus any
|
158 |
+
associated interface definition files, plus the scripts used to
|
159 |
+
control compilation and installation of the executable. However, as a
|
160 |
+
special exception, the source code distributed need not include
|
161 |
+
anything that is normally distributed (in either source or binary
|
162 |
+
form) with the major components (compiler, kernel, and so on) of the
|
163 |
+
operating system on which the executable runs, unless that component
|
164 |
+
itself accompanies the executable.
|
165 |
+
|
166 |
+
If distribution of executable or object code is made by offering
|
167 |
+
access to copy from a designated place, then offering equivalent
|
168 |
+
access to copy the source code from the same place counts as
|
169 |
+
distribution of the source code, even though third parties are not
|
170 |
+
compelled to copy the source along with the object code.
|
171 |
+
|
172 |
+
4. You may not copy, modify, sublicense, or distribute the Program
|
173 |
+
except as expressly provided under this License. Any attempt
|
174 |
+
otherwise to copy, modify, sublicense or distribute the Program is
|
175 |
+
void, and will automatically terminate your rights under this License.
|
176 |
+
However, parties who have received copies, or rights, from you under
|
177 |
+
this License will not have their licenses terminated so long as such
|
178 |
+
parties remain in full compliance.
|
179 |
+
|
180 |
+
5. You are not required to accept this License, since you have not
|
181 |
+
signed it. However, nothing else grants you permission to modify or
|
182 |
+
distribute the Program or its derivative works. These actions are
|
183 |
+
prohibited by law if you do not accept this License. Therefore, by
|
184 |
+
modifying or distributing the Program (or any work based on the
|
185 |
+
Program), you indicate your acceptance of this License to do so, and
|
186 |
+
all its terms and conditions for copying, distributing or modifying
|
187 |
+
the Program or works based on it.
|
188 |
+
|
189 |
+
6. Each time you redistribute the Program (or any work based on the
|
190 |
+
Program), the recipient automatically receives a license from the
|
191 |
+
original licensor to copy, distribute or modify the Program subject to
|
192 |
+
these terms and conditions. You may not impose any further
|
193 |
+
restrictions on the recipients' exercise of the rights granted herein.
|
194 |
+
You are not responsible for enforcing compliance by third parties to
|
195 |
+
this License.
|
196 |
+
|
197 |
+
7. If, as a consequence of a court judgment or allegation of patent
|
198 |
+
infringement or for any other reason (not limited to patent issues),
|
199 |
+
conditions are imposed on you (whether by court order, agreement or
|
200 |
+
otherwise) that contradict the conditions of this License, they do not
|
201 |
+
excuse you from the conditions of this License. If you cannot
|
202 |
+
distribute so as to satisfy simultaneously your obligations under this
|
203 |
+
License and any other pertinent obligations, then as a consequence you
|
204 |
+
may not distribute the Program at all. For example, if a patent
|
205 |
+
license would not permit royalty-free redistribution of the Program by
|
206 |
+
all those who receive copies directly or indirectly through you, then
|
207 |
+
the only way you could satisfy both it and this License would be to
|
208 |
+
refrain entirely from distribution of the Program.
|
209 |
+
|
210 |
+
If any portion of this section is held invalid or unenforceable under
|
211 |
+
any particular circumstance, the balance of the section is intended to
|
212 |
+
apply and the section as a whole is intended to apply in other
|
213 |
+
circumstances.
|
214 |
+
|
215 |
+
It is not the purpose of this section to induce you to infringe any
|
216 |
+
patents or other property right claims or to contest validity of any
|
217 |
+
such claims; this section has the sole purpose of protecting the
|
218 |
+
integrity of the free software distribution system, which is
|
219 |
+
implemented by public license practices. Many people have made
|
220 |
+
generous contributions to the wide range of software distributed
|
221 |
+
through that system in reliance on consistent application of that
|
222 |
+
system; it is up to the author/donor to decide if he or she is willing
|
223 |
+
to distribute software through any other system and a licensee cannot
|
224 |
+
impose that choice.
|
225 |
+
|
226 |
+
This section is intended to make thoroughly clear what is believed to
|
227 |
+
be a consequence of the rest of this License.
|
228 |
+
|
229 |
+
8. If the distribution and/or use of the Program is restricted in
|
230 |
+
certain countries either by patents or by copyrighted interfaces, the
|
231 |
+
original copyright holder who places the Program under this License
|
232 |
+
may add an explicit geographical distribution limitation excluding
|
233 |
+
those countries, so that distribution is permitted only in or among
|
234 |
+
countries not thus excluded. In such case, this License incorporates
|
235 |
+
the limitation as if written in the body of this License.
|
236 |
+
|
237 |
+
9. The Free Software Foundation may publish revised and/or new versions
|
238 |
+
of the General Public License from time to time. Such new versions will
|
239 |
+
be similar in spirit to the present version, but may differ in detail to
|
240 |
+
address new problems or concerns.
|
241 |
+
|
242 |
+
Each version is given a distinguishing version number. If the Program
|
243 |
+
specifies a version number of this License which applies to it and "any
|
244 |
+
later version", you have the option of following the terms and conditions
|
245 |
+
either of that version or of any later version published by the Free
|
246 |
+
Software Foundation. If the Program does not specify a version number of
|
247 |
+
this License, you may choose any version ever published by the Free Software
|
248 |
+
Foundation.
|
249 |
+
|
250 |
+
10. If you wish to incorporate parts of the Program into other free
|
251 |
+
programs whose distribution conditions are different, write to the author
|
252 |
+
to ask for permission. For software which is copyrighted by the Free
|
253 |
+
Software Foundation, write to the Free Software Foundation; we sometimes
|
254 |
+
make exceptions for this. Our decision will be guided by the two goals
|
255 |
+
of preserving the free status of all derivatives of our free software and
|
256 |
+
of promoting the sharing and reuse of software generally.
|
257 |
+
|
258 |
+
NO WARRANTY
|
259 |
+
|
260 |
+
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
261 |
+
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
262 |
+
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
263 |
+
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
264 |
+
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
265 |
+
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
266 |
+
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
267 |
+
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
268 |
+
REPAIR OR CORRECTION.
|
269 |
+
|
270 |
+
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
271 |
+
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
272 |
+
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
273 |
+
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
274 |
+
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
275 |
+
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
276 |
+
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
277 |
+
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
278 |
+
POSSIBILITY OF SUCH DAMAGES.
|
279 |
+
|
280 |
+
END OF TERMS AND CONDITIONS
|
281 |
+
|
282 |
+
How to Apply These Terms to Your New Programs
|
283 |
+
|
284 |
+
If you develop a new program, and you want it to be of the greatest
|
285 |
+
possible use to the public, the best way to achieve this is to make it
|
286 |
+
free software which everyone can redistribute and change under these terms.
|
287 |
+
|
288 |
+
To do so, attach the following notices to the program. It is safest
|
289 |
+
to attach them to the start of each source file to most effectively
|
290 |
+
convey the exclusion of warranty; and each file should have at least
|
291 |
+
the "copyright" line and a pointer to where the full notice is found.
|
292 |
+
|
293 |
+
<one line to give the program's name and a brief idea of what it does.>
|
294 |
+
Copyright (C) <year> <name of author>
|
295 |
+
|
296 |
+
This program is free software; you can redistribute it and/or modify
|
297 |
+
it under the terms of the GNU General Public License as published by
|
298 |
+
the Free Software Foundation; either version 2 of the License, or
|
299 |
+
(at your option) any later version.
|
300 |
+
|
301 |
+
This program is distributed in the hope that it will be useful,
|
302 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
303 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
304 |
+
GNU General Public License for more details.
|
305 |
+
|
306 |
+
You should have received a copy of the GNU General Public License along
|
307 |
+
with this program; if not, write to the Free Software Foundation, Inc.,
|
308 |
+
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
309 |
+
|
310 |
+
Also add information on how to contact you by electronic and paper mail.
|
311 |
+
|
312 |
+
If the program is interactive, make it output a short notice like this
|
313 |
+
when it starts in an interactive mode:
|
314 |
+
|
315 |
+
Gnomovision version 69, Copyright (C) year name of author
|
316 |
+
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
317 |
+
This is free software, and you are welcome to redistribute it
|
318 |
+
under certain conditions; type `show c' for details.
|
319 |
+
|
320 |
+
The hypothetical commands `show w' and `show c' should show the appropriate
|
321 |
+
parts of the General Public License. Of course, the commands you use may
|
322 |
+
be called something other than `show w' and `show c'; they could even be
|
323 |
+
mouse-clicks or menu items--whatever suits your program.
|
324 |
+
|
325 |
+
You should also get your employer (if you work as a programmer) or your
|
326 |
+
school, if any, to sign a "copyright disclaimer" for the program, if
|
327 |
+
necessary. Here is a sample; alter the names:
|
328 |
+
|
329 |
+
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
330 |
+
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
331 |
+
|
332 |
+
<signature of Ty Coon>, 1 April 1989
|
333 |
+
Ty Coon, President of Vice
|
334 |
+
|
335 |
+
This General Public License does not permit incorporating your program into
|
336 |
+
proprietary programs. If your program is a subroutine library, you may
|
337 |
+
consider it more useful to permit linking proprietary applications with the
|
338 |
+
library. If this is what you want to do, use the GNU Lesser General
|
339 |
+
Public License instead of this License.
|
readme.html
ADDED
@@ -0,0 +1,118 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
2 |
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
3 |
+
<head>
|
4 |
+
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
|
5 |
+
<title>A guide to the Custom Login lite plugin</title>
|
6 |
+
|
7 |
+
<style type="text/css" media="screen">
|
8 |
+
/* Reset values */
|
9 |
+
html,body,div,span,object,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;vertical-align:baseline;outline:none;font-size:100%;background:transparent;border:none;text-decoration:none}b,i,hr,u,center,menu,layer,s,strike,font,xmp{margin:0;padding:0;vertical-align:baseline;outline:none;font-size:100%;font-weight:normal;font-style:normal;background:transparent;border:none;text-decoration:none}font{color:#333}center{text-align:left}body{line-height:25px;font-family:Cambria,Georgia,Times,"Times New Roman",serif;color:#333;background:#fff}h1,h2,h3,h4,h5,h6{font-style:normal;font-weight:normal;margin:0 0 25px 0}h1{font-size:1.8em}h2{font-size:1.7em}h3{font-size:1.55em;}h4{font-size:1.4em}h5{font-size:1.25em}h6{font-size:1.1em}p{margin:0 0 25px 0}ol,ul{list-style:none}ul{list-style:disc;margin:0 0 25px 2.5em}ol{list-style-type:decimal;margin:0 0 25px 3em}ol ol{list-style:upper-roman}ol ol ol{list-style:lower-roman}ol ol ol ol{list-style:upper-alpha}ol ol ol ol ol{list-style:lower-alpha}ul ul,ol ol,ul ol,ol ul{margin-bottom:0}dl{margin:0 0 25px 5px}dl dt{font-weight:bold;margin:10px 0 0 0}dl dd{margin:5px 0 0 1.5em}strong{font-weight:bold}strong strong{font-weight:normal}em,cite{font-style:italic}em em,cite cite{font-style:normal}abbr{cursor:help}acronym{text-transform:uppercase;border-bottom:1px dashed #666;cursor:help}big{font-size:120%}small,sup,sub{font-size:80%}sup{vertical-align:baseline;position:relative;bottom:0.3em}sub{vertical-align:baseline;position:relative;top:0.3em}address{font-style:italic;margin:0 0 25px 0}li address,dd address{margin:0}blockquote{margin:0 25px;font-style:normal}blockquote em,blockquote cite{font-style:italic}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}a{cursor:pointer}a img{border:none}pre{overflow:auto;font:.9em Monaco,monospace,Courier,"Courier New";line-height:25px;margin-bottom:25px;padding:10px}code{font:.9em Monaco,monospace,Courier,"Courier New"}pre code{font-size:1em}ins,dfn{font-style:italic;text-decoration:none;border-bottom:1px solid #666}del{text-decoration:line-through}object{margin-bottom:25px}input,textarea{font-size:1em;font-family:Cambria,Georgia,Times,"Times New Roman",serif;padding:3px}:focus{outline:none}form label{cursor:pointer}option{padding:1px 2px}table{border-collapse:collapse;border-spacing:0;margin-bottom:25px}th,td{text-align:left}hr{margin-bottom:25px}img.wp-smiley{max-height:12px;margin:0;padding:0;border:none}.gallery{display:block;text-align:center;margin-bottom:25px !important}.alignleft,.left{float:left;margin-right:20px}.alignright,.right{float:right;margin-left:20px}.aligncenter,.center{display:block;margin:0 auto 25px auto}.alignnone,.block{clear:both;margin:0 0 25px 0}.clear{clear:both}img.alignleft,img.alignright{display:inline}
|
10 |
+
|
11 |
+
body {
|
12 |
+
width: 750px;
|
13 |
+
margin: 36px auto 60px auto;
|
14 |
+
font: 15px/21px Arial, 'Helvetica Neue', Helvetica, sans-serif;
|
15 |
+
font: 16px/25px Georgia, Times, 'Times New Roman', serif;
|
16 |
+
}
|
17 |
+
/* Links */
|
18 |
+
a:link, a:visited {
|
19 |
+
color: #2f6eb9;
|
20 |
+
text-decoration: none;
|
21 |
+
}
|
22 |
+
a:hover, a:active {
|
23 |
+
text-decoration: underline;
|
24 |
+
}
|
25 |
+
/* Headers */
|
26 |
+
h1, h2, h3, h4, h5, h6 {
|
27 |
+
margin: 40px 0 30px 0;
|
28 |
+
color: #000;
|
29 |
+
font-weight: bold;
|
30 |
+
font-family: Arial, sans-serif;
|
31 |
+
}
|
32 |
+
h1 {
|
33 |
+
margin-top: 80px;
|
34 |
+
font-size: 2.2em;
|
35 |
+
}
|
36 |
+
code {
|
37 |
+
padding: 0 3px;
|
38 |
+
background: #eee;
|
39 |
+
}
|
40 |
+
pre code {
|
41 |
+
padding: 0;
|
42 |
+
}
|
43 |
+
pre {
|
44 |
+
padding: 9px;
|
45 |
+
background: #eee;
|
46 |
+
border: 1px solid #ccc;
|
47 |
+
}
|
48 |
+
ul {
|
49 |
+
list-style: square;
|
50 |
+
}
|
51 |
+
p.first {
|
52 |
+
font-size: 21px;
|
53 |
+
}
|
54 |
+
p.second {
|
55 |
+
font-size: 15px;
|
56 |
+
}
|
57 |
+
ul.space li {
|
58 |
+
margin-bottom: 10px;
|
59 |
+
}
|
60 |
+
.section {
|
61 |
+
overflow: hidden;
|
62 |
+
}
|
63 |
+
|
64 |
+
.columns-2 {
|
65 |
+
float: left;
|
66 |
+
width: 350px;
|
67 |
+
margin: 0 0 21px 25px;
|
68 |
+
}
|
69 |
+
.columns-3 {
|
70 |
+
float: left;
|
71 |
+
width: 230px;
|
72 |
+
margin: 0 0 21px 20px;
|
73 |
+
}
|
74 |
+
</style>
|
75 |
+
|
76 |
+
</head>
|
77 |
+
<body>
|
78 |
+
|
79 |
+
<h1>A guide to Custom Login lite</h1>
|
80 |
+
|
81 |
+
<p><em>Custom Login</em> was written to take care of the defualt WordPress login page.</p>
|
82 |
+
|
83 |
+
<p>It's been overhauled in version 0.8. Now featuring cleaner code, Draggable and movable meta boxes, a color picker and an uploader built in.</p>
|
84 |
+
|
85 |
+
<h2>How to install the plugin</h2>
|
86 |
+
|
87 |
+
<ol>
|
88 |
+
<li>Uzip the <code>custom-login.zip</code> folder.</li>
|
89 |
+
<li>Upload the<code>custom-login</code> folder to your <code>/wp-content/plugins</code> directory.</li>
|
90 |
+
<li>In your WordPress dashboard, head over to the <em>Plugins</em> section.</li>
|
91 |
+
<li>Activate <em>Custom Login</em>.</li>
|
92 |
+
</ol>
|
93 |
+
|
94 |
+
<h2>How to use the plugin</h2>
|
95 |
+
|
96 |
+
<p>Once you've activated the plugin, you'll have to activate the plugin in the setting page to allow for customizations of the CSS and HTML. By default, when activated via the plugins page it will use the default style sheet, which you may or may not like.</p>
|
97 |
+
<h2>Settings</h2>
|
98 |
+
|
99 |
+
<p>Once on the setting page, you can simply click each option. Color options show the awesome javascript color picker and for URL's, there is a new uploader. Make sure to click send to post to send you current upload to the input field.</p>
|
100 |
+
<p>More to come soon..</p>
|
101 |
+
<h2>Plugin support</h2>
|
102 |
+
|
103 |
+
<p>As of right now, there is no support. But I freaquent the WordPress <a href="http://wordpress.org/support/plugin/custom-login">forums</a>. So please post any questions there.</p>
|
104 |
+
|
105 |
+
<h2>Upgrades</h2>
|
106 |
+
|
107 |
+
<p>I've got a Pro version of Custom Login which you can purchase over at <a href="http://extendd.com/plugin/custom-login-pro/">extendd.com</a>.</p>
|
108 |
+
|
109 |
+
<h2>Copyright & license</h2>
|
110 |
+
|
111 |
+
<p><em>Custom Login</em> is licensed under the <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" title="GNU GPL">GNU General Public License</a>, version 2 (<acronym title="GNU General Public License">GPL</acronym>).</p>
|
112 |
+
|
113 |
+
<p>This plugin is copyrighted to <a href="http://austinpassy.com" title="Austin Passy">Austin Passy</a> of <a href="http://frostywebdesigns.com" title="Austin Passy">Frosty Web Designs</a>.</p>
|
114 |
+
|
115 |
+
<p>2008 – 2013 © Austin Passy. All rights reserved.</p>
|
116 |
+
|
117 |
+
</body>
|
118 |
+
</html>
|
readme.txt
ADDED
@@ -0,0 +1,440 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== Custom Login ===
|
2 |
+
Contributors: austyfrosty
|
3 |
+
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7431290
|
4 |
+
Tags: admin, branding, customization, custom login, login, logo, error, login error, custom login pro
|
5 |
+
Requires at least: 3.4
|
6 |
+
Tested up to: 3.5
|
7 |
+
Stable tag: trunk
|
8 |
+
|
9 |
+
Use this plugin to customize your login screen, great for client sites!
|
10 |
+
|
11 |
+
== Description ==
|
12 |
+
|
13 |
+
Join in on the [conversation](http://austinpassy.com/wordpress-plugins/custom-login) on my personal blog. I've also just released a [PRO](http://extendd.com/plugin/custom-login-pro/) version on [Extendd.com](http://extendd.com): A plugin marketplace. New features include faster login loading (no database access), Custom Post Types (for multiple designs) and four default CSS designs.
|
14 |
+
|
15 |
+
Activate this plugin and customize your WordPress login screen. Use the built-in and easy to use settings page to do the work for you. Theres no need to understand CSS at all!
|
16 |
+
Now featureing a HTML & CSS box for advanced users to up the customization!
|
17 |
+
|
18 |
+
1. Works great for client site installs.
|
19 |
+
2. Comes with a Photoshop template included in the library files (default theme).
|
20 |
+
3. Read more about the [Custom Login Plugin](http://austinpassy.com/wordpress-plugins/custom-login/) & [most recent blog post](http://austinpassy.com/2010/09/custom-login-version-0-8/).
|
21 |
+
|
22 |
+
**For those looking to showoff your login screen, check out the [Flickr group](http://flickr.com/groups/custom-login/)! Share you designs with the community!**
|
23 |
+
|
24 |
+
= links =
|
25 |
+
|
26 |
+
* My portfolio: [http:/frostywebdesigns.com/](http://frostywebdesigns.com/)
|
27 |
+
* My Blog: [http:/austinpassy.com/](http://austinpassy.com/)
|
28 |
+
* Twitter: @[TheFrosty](https:/twitter.com/TheFrosty)
|
29 |
+
* Twitter: @[Extendd](https:/twitter.com/WPExtendd)
|
30 |
+
* **Contribute on [GitHub](https://github.com/thefrosty/custom-login)**
|
31 |
+
|
32 |
+
== Installation ==
|
33 |
+
|
34 |
+
Follow the steps below to install the plugin.
|
35 |
+
|
36 |
+
1. Upload the `custom-login` directory to the /wp-content/plugins/ directory.
|
37 |
+
2. Activate the plugin through the 'Plugins' menu in WordPress.
|
38 |
+
3. Go to Settings/custom-login to edit your settings.
|
39 |
+
4. **Be sure to *check* activate** on the settings page to remove the *default* login design.
|
40 |
+
5. Design away.
|
41 |
+
|
42 |
+
|
43 |
+
== Frequently Asked Questions ==
|
44 |
+
|
45 |
+
= Is there a PRO version? =
|
46 |
+
Why yes there is, you can purchase the [PRO](http://extendd.com/plugin/custom-login-pro/) version on [http://extendd.com](http://extendd.com).
|
47 |
+
|
48 |
+
= Why create this plugin? =
|
49 |
+
I created this plugin to allow for custom login of any WordPress login screen. See working example on: [Extendd.com](http://extendd.com/wp-login.php?action=login).
|
50 |
+
|
51 |
+
= Where can I upload and share my cool login screen? =
|
52 |
+
Check out the newly created [Flickr group](http://flickr.com/groups/custom-login/)! Upload and add it to our pool!
|
53 |
+
|
54 |
+
= I don't like the default login =
|
55 |
+
Well you should check the first box "`Use your own CSS`" and customize **your** login screen!
|
56 |
+
|
57 |
+
= I think i want to uninstall =
|
58 |
+
Just de-active.
|
59 |
+
|
60 |
+
== Screenshots ==
|
61 |
+
|
62 |
+
Screenshots of working example in our [Flickr group](http://flickr.com/groups/custom-login/)
|
63 |
+
|
64 |
+
1. Custom Login Settings page (as of v 0.8).
|
65 |
+
|
66 |
+
2. Example of a custom login page, [see more](http://flickr.com/groups/custom-login/).
|
67 |
+
|
68 |
+
== Changelog ==
|
69 |
+
|
70 |
+
= Version 1.1.4 (1/12/13) =
|
71 |
+
|
72 |
+
* Fixed fatal error `Fatal error: Call to undefined function wp_enqueue_styles() in /home/[site path]/plugins/custom-login/custom-login.php on line 168`. No trailing "s".
|
73 |
+
* Updated Turkish translation.
|
74 |
+
|
75 |
+
|
76 |
+
= Version 1.1.3 (1/10/13) =
|
77 |
+
|
78 |
+
* Add option for no `background-size`.
|
79 |
+
* Changed upgrade buttong style from primary to secondary.
|
80 |
+
|
81 |
+
= Version 1.1.2 (1/10/13) =
|
82 |
+
|
83 |
+
* Added login scripts to `login_enqueue_scripts`.
|
84 |
+
* Added background size to form. Please update settings.
|
85 |
+
* Added custom jQuery output.
|
86 |
+
* Moved all jQuery calls to the footer.
|
87 |
+
|
88 |
+
= Version 1.1.1 (1/9/13) =
|
89 |
+
|
90 |
+
* Fixed: html background image css missing definition. [issue](http://wordpress.org/support/topic/error-with-version-110?replies=2)
|
91 |
+
* Fixed: CSS images need not be escaped. Removed `esc_attr` from `trailingsemicolonit()`.
|
92 |
+
* Fixed: CSS form background image.
|
93 |
+
|
94 |
+
= Version 1.1.0 (1/8/13) =
|
95 |
+
|
96 |
+
* Minimun required WordPress version is now *3.4*!
|
97 |
+
* Updated: `jscolor.js` to version `1.4.0`.
|
98 |
+
* Updated: Added new textarea autosize script. See [https://github.com/jackmoore/autosize](https://github.com/jackmoore/autosize)
|
99 |
+
* Changed: HTML background repeat is now a dropdown
|
100 |
+
* Added: Background size option. [request](http://wordpress.org/support/topic/plugin-custom-login-resize-background-image?replies=2), [request](http://wordpress.org/support/topic/plugin-custom-login-love-the-plugin-and-a-small-wish-list?replies=1)
|
101 |
+
* Removed registered CSS and added inline style to remove WordPress double loading. Should increase speed by 2X.
|
102 |
+
* Change: Modify user role from `edit_plugins` to `manage_options` to allow `define('DISALLOW_FILE_EDIT', true);` as per [issue](http://wordpress.org/support/topic/plugin-custom-login-disallow_file_edit-breaks-plugin?replies=3#post-3702957)
|
103 |
+
* Removed: CHMOD issue. See [issue](http://wordpress.org/support/topic/errors-15?replies=2#post-3702984). Replaces with `site_transient`.
|
104 |
+
* Removed upgrade to [Pro](http://extendd.com/plugin/custom-login-pro/) script and pages.
|
105 |
+
* Fixed: possbile PHP > 5.4 object warning [issue](http://wordpress.org/support/topic/custom-login-and-php-54?replies=3), [issue](http://wordpress.org/support/topic/plugin-custom-login-problem-after-installation?replies=2#post-3702975). Let me know if you still get errors.
|
106 |
+
|
107 |
+
|
108 |
+
= Version 1.0.4.1 (12/3/12) =
|
109 |
+
|
110 |
+
* Updated links.
|
111 |
+
* Updated dashboard.
|
112 |
+
|
113 |
+
|
114 |
+
= Version 1.0.4 (09/10/12) =
|
115 |
+
|
116 |
+
* Added presstrends.io
|
117 |
+
|
118 |
+
= Version 1.0.3 (08/16/12) =
|
119 |
+
|
120 |
+
* Updated the default CSS.
|
121 |
+
* Updated admin feeds.
|
122 |
+
|
123 |
+
= Version 1.0.2 (04/01/12) =
|
124 |
+
|
125 |
+
* Updated `pot` file.
|
126 |
+
* Updated Turkish launguage file.
|
127 |
+
* If cache folder isn't writable chmod `666`.
|
128 |
+
|
129 |
+
= Version 1.0.1 (04/01/12) =
|
130 |
+
|
131 |
+
* Fixed error saving settings in some cases.
|
132 |
+
* Moved upgrade script to a new page.
|
133 |
+
|
134 |
+
= Version 1.0.0 (03/29/12) =
|
135 |
+
|
136 |
+
* New default login page (if you've not *activated* the custom `CSS`).
|
137 |
+
* Added update box to settings page. (If you've already purchased the [PRO](http://thefrosty.com/custom-login-pro) upgrade, login and retreive the download link)
|
138 |
+
* Cleaned up the dashboard.
|
139 |
+
* Escaping thefrosty_network_feed().
|
140 |
+
* Updated Sprite.
|
141 |
+
* Added Spanish translation. (props Alejandro Arcos)
|
142 |
+
|
143 |
+
= Version 0.9.8.2 (03/04/12) =
|
144 |
+
|
145 |
+
* Added Turkish translation.
|
146 |
+
|
147 |
+
= Version 0.9.8.1 (02/17/12) =
|
148 |
+
|
149 |
+
* readme.txt links updated.
|
150 |
+
|
151 |
+
= Version 0.9.8 (02/02/12) =
|
152 |
+
|
153 |
+
* readme.txt update.
|
154 |
+
* Description text update.
|
155 |
+
* Admin bug fix.
|
156 |
+
|
157 |
+
= Version 0.9.7 (12/18/11) =
|
158 |
+
|
159 |
+
* Updated save settings HTML.
|
160 |
+
|
161 |
+
= Version 0.9.6.1 (12/14/11) =
|
162 |
+
|
163 |
+
* forgot "()", sorry.
|
164 |
+
|
165 |
+
= Version 0.9.6 (12/14/11) =
|
166 |
+
|
167 |
+
* Updated minor CSS changes to WordPress 3.3.
|
168 |
+
* Updated some spelling mistakes.
|
169 |
+
|
170 |
+
= Version 0.9.5 (11/8/11) =
|
171 |
+
|
172 |
+
* Feeds updated.
|
173 |
+
* WordPress 3.3 check.
|
174 |
+
|
175 |
+
= Version 0.9.3 (9/8/11) =
|
176 |
+
|
177 |
+
* Small bug in dashboard.
|
178 |
+
* jQuery not loading in login head on some rare occasions.
|
179 |
+
|
180 |
+
= Version 0.9.3 (7/30/11) =
|
181 |
+
|
182 |
+
* Updated `wp_enqueue_style` to `wp_register_style` for the custom CSS that causes issues in WordPress 3.3
|
183 |
+
|
184 |
+
= Version 0.9.2 (7/6/11) =
|
185 |
+
|
186 |
+
* Added `!important` to the `html` CSS attribute for background because of new CSS rule in WordPress 3.2.
|
187 |
+
|
188 |
+
= Version 0.9.1 (6/23/11) =
|
189 |
+
|
190 |
+
* Fixed admin jQuery and upload buttons (backwards compatible with jQuery < 1.6)
|
191 |
+
|
192 |
+
= Version 0.9.0 (6/23/11) =
|
193 |
+
|
194 |
+
* [BUG FIX] An error in the dashboard widget is casuing some large images. Sorry. Always escape.
|
195 |
+
|
196 |
+
= Version 0.8.9.2 (5/18/11) =
|
197 |
+
|
198 |
+
* Bug Fix: Missing $domain index.
|
199 |
+
|
200 |
+
= Version 0.8.9.1 (5/9/11) =
|
201 |
+
|
202 |
+
* Not disabling the gravatar feature if registration was disabled. Missing `!`.
|
203 |
+
|
204 |
+
= Version 0.8.9 (5/8/11) =
|
205 |
+
|
206 |
+
* Added checkbox to turn off dashboard.
|
207 |
+
* Added `disabled` to gravatar to remove idex error.
|
208 |
+
* Trying to localize as much of the admin text as possible for translation.
|
209 |
+
|
210 |
+
= Version 0.8.8 (3/30/11) =
|
211 |
+
|
212 |
+
* Updated out of order tabs.
|
213 |
+
* Fixed missing index variables that may cause error when runner in debug mode.
|
214 |
+
* Fixed header output error.
|
215 |
+
* Updated dashboard widget.
|
216 |
+
|
217 |
+
= Version 0.8.7 (2/24/11) =
|
218 |
+
|
219 |
+
* Removed javascript that was causing hangups.
|
220 |
+
|
221 |
+
= Version 0.8.6 (2/9/11) =
|
222 |
+
|
223 |
+
* Updated the feed parser to comply with deprecated `rss.php` and use `class-simplepie.php`.
|
224 |
+
|
225 |
+
= Version 0.8.5 =
|
226 |
+
|
227 |
+
* array_slice error fixed.
|
228 |
+
|
229 |
+
= Version 0.8.4.1 =
|
230 |
+
|
231 |
+
* Moved priority on Setting page.
|
232 |
+
* Updated `POT` file.
|
233 |
+
|
234 |
+
= Version 0.8.4 =
|
235 |
+
|
236 |
+
* Don't add `gravatar.js` if it's not needed.
|
237 |
+
* fixed bug where multiple installs in a single server of different WP installs exist.
|
238 |
+
* Set role for settings page from `6` to `edit_plugins` to comply with new Roles and Capabilities.
|
239 |
+
*
|
240 |
+
|
241 |
+
= Version 0.8.3 =
|
242 |
+
|
243 |
+
* Added missing `gravatar.js` file.
|
244 |
+
|
245 |
+
= Version 0.8.2 =
|
246 |
+
|
247 |
+
* Fixed CSS code on the login page.
|
248 |
+
|
249 |
+
= Version 0.8.1 =
|
250 |
+
|
251 |
+
* Fixed CSS code that was converting single and double quotes to HTML entities.
|
252 |
+
|
253 |
+
= Version 0.8 =
|
254 |
+
|
255 |
+
* Important! Users will have to re-save their settings after updating to version 0.8.
|
256 |
+
* Completely recoded the plugin from the ground up for a much needed code overhaul.
|
257 |
+
* Removed unistall script.
|
258 |
+
* Removed [wpads.net](http://wpads.net).
|
259 |
+
* Cleaned up options.
|
260 |
+
* Removed easing.js, farbtastic.js, dock.js
|
261 |
+
* Removed unused images.
|
262 |
+
* Added `license.txt`, `readme.html`.
|
263 |
+
|
264 |
+
= Version 0.7.2 =
|
265 |
+
|
266 |
+
* Fixed bug where plugin isn't allowed to be *deleted*(removed) when using WordPress 3.0+.
|
267 |
+
|
268 |
+
= Version 0.7.1 =
|
269 |
+
|
270 |
+
* Dashboard widget bug, upgrade mandatory.
|
271 |
+
|
272 |
+
= Version 0.7 =
|
273 |
+
|
274 |
+
* Updated `array_slice` error
|
275 |
+
* Added `wp_wb_version` check for WordPress 3+
|
276 |
+
* Added new option for WordPress 3+, *body background*.
|
277 |
+
* Added check for version in animated error.
|
278 |
+
** WP3 now includes the jQuery error
|
279 |
+
* Now 100% compatible with WordPress 3.x
|
280 |
+
|
281 |
+
= Version 0.6.1 =
|
282 |
+
|
283 |
+
* Turned off the animated Autoresizer for expanding textareas, as it was buggy.
|
284 |
+
|
285 |
+
= Version 0.6 =
|
286 |
+
|
287 |
+
* Addded custom javascript error animation *turned on by default*
|
288 |
+
* Cleaned up settings page
|
289 |
+
|
290 |
+
= Version 0.5.2 =
|
291 |
+
|
292 |
+
* Added dashboard widget.
|
293 |
+
* Moved preview link higher.
|
294 |
+
* Bug fix.
|
295 |
+
|
296 |
+
= Version 0.5.1 =
|
297 |
+
|
298 |
+
* Changes a function name.
|
299 |
+
* Max character fix in `border-top-color`.
|
300 |
+
|
301 |
+
= Version 0.5 =
|
302 |
+
|
303 |
+
* **NEW** Javascript color picker [jscolor](http://jscolor.com)
|
304 |
+
* **NEW** New field allows for colorization of the *body* `border-top` color
|
305 |
+
* More options added
|
306 |
+
* Cleaned up code
|
307 |
+
* Testing new inline ad feature from [wpAds](http://bit.ly/wpadsnet) *Please leave [feedback/comments](http://austinpassy.com/2010/02/custom-login-version-0-5/) on this feature*
|
308 |
+
|
309 |
+
= Version 0.4.8 =
|
310 |
+
|
311 |
+
* Thickbox preview link :) *Let me know if you like the placement of it [in these comments](http://austinpassy.com/2010/02/custom-login-version-0-4-8/)*
|
312 |
+
|
313 |
+
= Version 0.4.7 =
|
314 |
+
|
315 |
+
* Added ability to use RGB/A colors to all color selectors. Max characters is now `21` instead of `7`
|
316 |
+
* Cleaned up options page.
|
317 |
+
* Added expanding textarea's for better coding space.
|
318 |
+
* Allow for expanding help section per item basses.
|
319 |
+
* Added an uninstaller (remove options from the database) *use the uninstall.php script*
|
320 |
+
* **NEW** default style.
|
321 |
+
|
322 |
+
= Version 0.4.6.1 =
|
323 |
+
|
324 |
+
* CSS Bug.
|
325 |
+
|
326 |
+
= Version 0.4.6 =
|
327 |
+
|
328 |
+
* Added custom html coded box. Will only be in use if the box is checked.
|
329 |
+
* New html box used jQuery to write to the page.
|
330 |
+
|
331 |
+
= Version 0.4.5 =
|
332 |
+
|
333 |
+
* Removed: #dock scroller (position fixed)
|
334 |
+
* Added collapsing/expanding boxes on left to allow for visibility of color wheel.
|
335 |
+
|
336 |
+
= Version 0.4.4.1 =
|
337 |
+
|
338 |
+
* Error: Missed a period, caused fatal error.
|
339 |
+
* Noticed issue with color picker error, try to reload page while I troubleshoot.
|
340 |
+
* Fixed missing `div` tag on settings page.
|
341 |
+
* Added two screenshots, one of settings page, one example.
|
342 |
+
|
343 |
+
= Version 0.4.4 =
|
344 |
+
|
345 |
+
* Added custom field box to add in your own CSS
|
346 |
+
* Added in new toggle (hide the color box when you click on the `h3` title so as not to interfere when it auto scrolls)
|
347 |
+
|
348 |
+
= Version 0.4.3 =
|
349 |
+
|
350 |
+
* Bug: When first installed, color fields need the `#` before the HEX numbers shows.
|
351 |
+
|
352 |
+
= Version 0.4.2 =
|
353 |
+
|
354 |
+
* Added an additional save button under the scrolling window dock when the window height is causing the window to jump.
|
355 |
+
|
356 |
+
= Version 0.4.1.1 =
|
357 |
+
|
358 |
+
* Bug fix: `Dock` is in the wrong div
|
359 |
+
|
360 |
+
= Version 0.4.1 =
|
361 |
+
|
362 |
+
* Added a `position:fixed` style to the color picker if the window scrolls below the view of the *Color picker*
|
363 |
+
|
364 |
+
= Version 0.4 =
|
365 |
+
|
366 |
+
* Added jQuery javascript color picker
|
367 |
+
* Remeber to use the new color selections with **#** before the six `hex` keys!
|
368 |
+
|
369 |
+
= Version 0.3.3 =
|
370 |
+
|
371 |
+
* Added ability to have transparent background image for `html`
|
372 |
+
* Added `html > background-repeat`
|
373 |
+
|
374 |
+
= Version 0.3.2.1 =
|
375 |
+
|
376 |
+
* Style: "Addded css style to `Delete/Reset` button"
|
377 |
+
|
378 |
+
= Version 0.3.2 =
|
379 |
+
|
380 |
+
* Bug: "if login form background color was empty, image wouldn't show"
|
381 |
+
|
382 |
+
= Version 0.3.1 =
|
383 |
+
|
384 |
+
* Bug: "login form backgound url" overwrote "login form backgound color"
|
385 |
+
* Auto install into double directory
|
386 |
+
|
387 |
+
= Version 0.3 =
|
388 |
+
|
389 |
+
* Admin panel added
|
390 |
+
* Additional CSS / user options
|
391 |
+
* Custom login
|
392 |
+
* WordPress 2.9 ready
|
393 |
+
|
394 |
+
= Version 0.2 =
|
395 |
+
|
396 |
+
* 2.7 CSS update.
|
397 |
+
* readme.txt link updated.
|
398 |
+
|
399 |
+
= Version 0.1 =
|
400 |
+
|
401 |
+
* Initial release.
|
402 |
+
|
403 |
+
|
404 |
+
== Upgrade Notice ==
|
405 |
+
|
406 |
+
= 1.1.4 =
|
407 |
+
Fixed Fatal error!
|
408 |
+
|
409 |
+
= 1.1.2 =
|
410 |
+
Added background-size to form, please visit and update settings page.
|
411 |
+
|
412 |
+
= 1.1.0 =
|
413 |
+
Fixes a lot of issues reported on the WP forums. Fixes issues with PHP 5.4 object error.
|
414 |
+
|
415 |
+
= 1.0.1 =
|
416 |
+
Fixed save settings and moved upgrade script to new page.
|
417 |
+
|
418 |
+
= 1.0 =
|
419 |
+
Added download script for Custom Login Pro users.
|
420 |
+
|
421 |
+
= 0.9.6 =
|
422 |
+
WordPress 3.3 style registration compatible. Some changes may effect your design, please update accordingly.
|
423 |
+
|
424 |
+
= 0.9.3 =
|
425 |
+
WordPress 3.3 style registration compatible.
|
426 |
+
|
427 |
+
= 0.8.10 =
|
428 |
+
Important! Unescaping characters in the dashboard widget/
|
429 |
+
|
430 |
+
= 0.8.8 =
|
431 |
+
Miscellaneous errors fixed, bugs squashed.
|
432 |
+
|
433 |
+
= 0.8 =
|
434 |
+
Complete rewrite, you will have to re-save your settings!
|
435 |
+
|
436 |
+
= 0.7.2 =
|
437 |
+
Uninstall script no longer valid for WordPress 3.0+
|
438 |
+
|
439 |
+
= 0.7.1 =
|
440 |
+
Compatiblity issue with my other plugin [@Anywhere](http://austinpassy.com/anywhere-plugin) fixed.
|
screenshot-1.png
ADDED
Binary file
|
screenshot-2.png
ADDED
Binary file
|