77c5f9481c
colours from the theme. This approach removes data that was previously available in HTML. It was only necessary if the user wanted to know the site's default values.
129 lines
4.2 KiB
JavaScript
129 lines
4.2 KiB
JavaScript
/** Init for Farbtastic library and page setup
|
|
*
|
|
* @package Laconica
|
|
* @author Sarven Capadisli <csarven@controlyourself.ca>
|
|
* @copyright 2009 Control Yourself, Inc.
|
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
|
* @link http://laconi.ca/
|
|
*/
|
|
$(document).ready(function() {
|
|
function InitColors(i, E) {
|
|
switch (parseInt(E.id.slice(-1))) {
|
|
case 1: default:
|
|
$(E).val(rgb2hex($('body').css('background-color')));
|
|
break;
|
|
case 2:
|
|
$(E).val(rgb2hex($('#content').css('background-color')));
|
|
break;
|
|
case 3:
|
|
$(E).val(rgb2hex($('#aside_primary').css('background-color')));
|
|
break;
|
|
case 4:
|
|
$(E).val(rgb2hex($('html body').css('color')));
|
|
break;
|
|
case 5:
|
|
$(E).val(rgb2hex($('a').css('color')));
|
|
break;
|
|
}
|
|
}
|
|
|
|
function rgb2hex(rgb) {
|
|
rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
|
|
function hex(x) {
|
|
hexDigits = new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");
|
|
return isNaN(x) ? "00" : hexDigits[(x - x % 16) / 16] + hexDigits[x % 16];
|
|
}
|
|
return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);
|
|
}
|
|
|
|
function UpdateColors(S) {
|
|
C = $(S).val();
|
|
switch (parseInt(S.id.slice(-1))) {
|
|
case 1: default:
|
|
$('body').css({'background-color':C});
|
|
break;
|
|
case 2:
|
|
$('#content, #site_nav_local_views .current a').css({'background-color':C});
|
|
break;
|
|
case 3:
|
|
$('#aside_primary').css({'background-color':C});
|
|
break;
|
|
case 4:
|
|
$('html body').css({'color':C});
|
|
break;
|
|
case 5:
|
|
$('a').css({'color':C});
|
|
break;
|
|
}
|
|
}
|
|
|
|
function UpdateFarbtastic(e) {
|
|
f.linked = e;
|
|
f.setColor(e.value);
|
|
}
|
|
|
|
function UpdateSwatch(e) {
|
|
$(e).css({"background-color": e.value,
|
|
"color": f.hsl[2] > 0.5 ? "#000": "#fff"});
|
|
}
|
|
|
|
function SynchColors(e) {
|
|
var S = f.linked;
|
|
var C = f.color;
|
|
|
|
if (S && S.value && S.value != C) {
|
|
S.value = C;
|
|
UpdateSwatch(S);
|
|
UpdateColors(S);
|
|
}
|
|
}
|
|
|
|
function InitFarbtastic() {
|
|
$('#settings_design_color').append('<div id="color-picker"></div>');
|
|
$('#color-picker').hide();
|
|
|
|
f = $.farbtastic('#color-picker', SynchColors);
|
|
swatches = $('#settings_design_color .swatch');
|
|
swatches.each(InitColors);
|
|
swatches
|
|
.each(SynchColors)
|
|
.blur(function() {
|
|
tv = $(this).val();
|
|
$(this).val(tv.toUpperCase());
|
|
(tv.length == 4) ? ((tv[0] == '#') ? $(this).val('#'+tv[1]+tv[1]+tv[2]+tv[2]+tv[3]+tv[3]) : '') : '';
|
|
})
|
|
.focus(function() {
|
|
$('#color-picker').show();
|
|
UpdateFarbtastic(this);
|
|
})
|
|
.change(function() {
|
|
UpdateFarbtastic(this);
|
|
UpdateSwatch(this);
|
|
UpdateColors(this);
|
|
}).change();
|
|
}
|
|
|
|
var f, swatches;
|
|
InitFarbtastic();
|
|
$('#form_settings_design').bind('reset', function(){
|
|
setTimeout(function(){
|
|
swatches.each(function(){UpdateColors(this);});
|
|
$('#color-picker').remove();
|
|
swatches.unbind();
|
|
InitFarbtastic();
|
|
},10);
|
|
});
|
|
|
|
$('#design_background-image_off').focus(function() {
|
|
$('body').css({'background-image':'none'});
|
|
});
|
|
$('#design_background-image_on').focus(function() {
|
|
$('body').css({'background-image':'url('+$('#design_background-image_onoff img')[0].src+')'});
|
|
$('body').css({'background-attachment': 'fixed'});
|
|
});
|
|
|
|
$('#design_background-image_repeat').click(function() {
|
|
($(this)[0].checked) ? $('body').css({'background-repeat':'repeat'}) : $('body').css({'background-repeat':'no-repeat'});
|
|
});
|
|
});
|