PageRenderTime 63ms CodeModel.GetById 29ms RepoModel.GetById 0ms app.codeStats 0ms

/wp-content/themes/default/functions.php

https://github.com/Mercedes/ratonesytortillas
PHP | 416 lines | 376 code | 22 blank | 18 comment | 71 complexity | 5c375367e41e10e417b1fdb39f2311d0 MD5 | raw file
  1. <?php
  2. if ( function_exists('register_sidebar') )
  3. register_sidebar(array(
  4. 'before_widget' => '<li id="%1$s" class="widget %2$s">',
  5. 'after_widget' => '</li>',
  6. 'before_title' => '<h2 class="widgettitle">',
  7. 'after_title' => '</h2>',
  8. ));
  9. function kubrick_head() {
  10. $head = "<style type='text/css'>\n<!--";
  11. $output = '';
  12. if ( kubrick_header_image() ) {
  13. $url = kubrick_header_image_url() ;
  14. $output .= "#header { background: url('$url') no-repeat bottom center; }\n";
  15. }
  16. if ( false !== ( $color = kubrick_header_color() ) ) {
  17. $output .= "#headerimg h1 a, #headerimg h1 a:visited, #headerimg .description { color: $color; }\n";
  18. }
  19. if ( false !== ( $display = kubrick_header_display() ) ) {
  20. $output .= "#headerimg { display: $display }\n";
  21. }
  22. $foot = "--></style>\n";
  23. if ( '' != $output )
  24. echo $head . $output . $foot;
  25. }
  26. add_action('wp_head', 'kubrick_head');
  27. function kubrick_header_image() {
  28. return apply_filters('kubrick_header_image', get_option('kubrick_header_image'));
  29. }
  30. function kubrick_upper_color() {
  31. if (strpos($url = kubrick_header_image_url(), 'header-img.php?') !== false) {
  32. parse_str(substr($url, strpos($url, '?') + 1), $q);
  33. return $q['upper'];
  34. } else
  35. return '69aee7';
  36. }
  37. function kubrick_lower_color() {
  38. if (strpos($url = kubrick_header_image_url(), 'header-img.php?') !== false) {
  39. parse_str(substr($url, strpos($url, '?') + 1), $q);
  40. return $q['lower'];
  41. } else
  42. return '4180b6';
  43. }
  44. function kubrick_header_image_url() {
  45. if ( $image = kubrick_header_image() )
  46. $url = get_template_directory_uri() . '/images/' . $image;
  47. else
  48. $url = get_template_directory_uri() . '/images/kubrickheader.jpg';
  49. return $url;
  50. }
  51. function kubrick_header_color() {
  52. return apply_filters('kubrick_header_color', get_option('kubrick_header_color'));
  53. }
  54. function kubrick_header_color_string() {
  55. $color = kubrick_header_color();
  56. if ( false === $color )
  57. return 'white';
  58. return $color;
  59. }
  60. function kubrick_header_display() {
  61. return apply_filters('kubrick_header_display', get_option('kubrick_header_display'));
  62. }
  63. function kubrick_header_display_string() {
  64. $display = kubrick_header_display();
  65. return $display ? $display : 'inline';
  66. }
  67. add_action('admin_menu', 'kubrick_add_theme_page');
  68. function kubrick_add_theme_page() {
  69. if ( isset( $_GET['page'] ) && $_GET['page'] == basename(__FILE__) ) {
  70. if ( isset( $_REQUEST['action'] ) && 'save' == $_REQUEST['action'] ) {
  71. check_admin_referer('kubrick-header');
  72. if ( isset($_REQUEST['njform']) ) {
  73. if ( isset($_REQUEST['defaults']) ) {
  74. delete_option('kubrick_header_image');
  75. delete_option('kubrick_header_color');
  76. delete_option('kubrick_header_display');
  77. } else {
  78. if ( '' == $_REQUEST['njfontcolor'] )
  79. delete_option('kubrick_header_color');
  80. else {
  81. $fontcolor = preg_replace('/^.*(#[0-9a-fA-F]{6})?.*$/', '$1', $_REQUEST['njfontcolor']);
  82. update_option('kubrick_header_color', $fontcolor);
  83. }
  84. if ( preg_match('/[0-9A-F]{6}|[0-9A-F]{3}/i', $_REQUEST['njuppercolor'], $uc) && preg_match('/[0-9A-F]{6}|[0-9A-F]{3}/i', $_REQUEST['njlowercolor'], $lc) ) {
  85. $uc = ( strlen($uc[0]) == 3 ) ? $uc[0]{0}.$uc[0]{0}.$uc[0]{1}.$uc[0]{1}.$uc[0]{2}.$uc[0]{2} : $uc[0];
  86. $lc = ( strlen($lc[0]) == 3 ) ? $lc[0]{0}.$lc[0]{0}.$lc[0]{1}.$lc[0]{1}.$lc[0]{2}.$lc[0]{2} : $lc[0];
  87. update_option('kubrick_header_image', "header-img.php?upper=$uc&lower=$lc");
  88. }
  89. if ( isset($_REQUEST['toggledisplay']) ) {
  90. if ( false === get_option('kubrick_header_display') )
  91. update_option('kubrick_header_display', 'none');
  92. else
  93. delete_option('kubrick_header_display');
  94. }
  95. }
  96. } else {
  97. if ( isset($_REQUEST['headerimage']) ) {
  98. check_admin_referer('kubrick-header');
  99. if ( '' == $_REQUEST['headerimage'] )
  100. delete_option('kubrick_header_image');
  101. else {
  102. $headerimage = preg_replace('/^.*?(header-img.php\?upper=[0-9a-fA-F]{6}&lower=[0-9a-fA-F]{6})?.*$/', '$1', $_REQUEST['headerimage']);
  103. update_option('kubrick_header_image', $headerimage);
  104. }
  105. }
  106. if ( isset($_REQUEST['fontcolor']) ) {
  107. check_admin_referer('kubrick-header');
  108. if ( '' == $_REQUEST['fontcolor'] )
  109. delete_option('kubrick_header_color');
  110. else {
  111. $fontcolor = preg_replace('/^.*?(#[0-9a-fA-F]{6})?.*$/', '$1', $_REQUEST['fontcolor']);
  112. update_option('kubrick_header_color', $fontcolor);
  113. }
  114. }
  115. if ( isset($_REQUEST['fontdisplay']) ) {
  116. check_admin_referer('kubrick-header');
  117. if ( '' == $_REQUEST['fontdisplay'] || 'inline' == $_REQUEST['fontdisplay'] )
  118. delete_option('kubrick_header_display');
  119. else
  120. update_option('kubrick_header_display', 'none');
  121. }
  122. }
  123. //print_r($_REQUEST);
  124. wp_redirect("themes.php?page=functions.php&saved=true");
  125. die;
  126. }
  127. add_action('admin_head', 'kubrick_theme_page_head');
  128. }
  129. add_theme_page(__('Customize Header'), __('Header Image and Color'), 'edit_themes', basename(__FILE__), 'kubrick_theme_page');
  130. }
  131. function kubrick_theme_page_head() {
  132. ?>
  133. <script type="text/javascript" src="../wp-includes/js/colorpicker.js"></script>
  134. <script type='text/javascript'>
  135. // <![CDATA[
  136. function pickColor(color) {
  137. ColorPicker_targetInput.value = color;
  138. kUpdate(ColorPicker_targetInput.id);
  139. }
  140. function PopupWindow_populate(contents) {
  141. contents += '<br /><p style="text-align:center;margin-top:0px;"><input type="button" class="button-secondary" value="<?php echo attribute_escape(__('Close Color Picker')); ?>" onclick="cp.hidePopup(\'prettyplease\')"></input></p>';
  142. this.contents = contents;
  143. this.populated = false;
  144. }
  145. function PopupWindow_hidePopup(magicword) {
  146. if ( magicword != 'prettyplease' )
  147. return false;
  148. if (this.divName != null) {
  149. if (this.use_gebi) {
  150. document.getElementById(this.divName).style.visibility = "hidden";
  151. }
  152. else if (this.use_css) {
  153. document.all[this.divName].style.visibility = "hidden";
  154. }
  155. else if (this.use_layers) {
  156. document.layers[this.divName].visibility = "hidden";
  157. }
  158. }
  159. else {
  160. if (this.popupWindow && !this.popupWindow.closed) {
  161. this.popupWindow.close();
  162. this.popupWindow = null;
  163. }
  164. }
  165. return false;
  166. }
  167. function colorSelect(t,p) {
  168. if ( cp.p == p && document.getElementById(cp.divName).style.visibility != "hidden" )
  169. cp.hidePopup('prettyplease');
  170. else {
  171. cp.p = p;
  172. cp.select(t,p);
  173. }
  174. }
  175. function PopupWindow_setSize(width,height) {
  176. this.width = 162;
  177. this.height = 210;
  178. }
  179. var cp = new ColorPicker();
  180. function advUpdate(val, obj) {
  181. document.getElementById(obj).value = val;
  182. kUpdate(obj);
  183. }
  184. function kUpdate(oid) {
  185. if ( 'uppercolor' == oid || 'lowercolor' == oid ) {
  186. uc = document.getElementById('uppercolor').value.replace('#', '');
  187. lc = document.getElementById('lowercolor').value.replace('#', '');
  188. hi = document.getElementById('headerimage');
  189. hi.value = 'header-img.php?upper='+uc+'&lower='+lc;
  190. document.getElementById('header').style.background = 'url("<?php echo get_template_directory_uri(); ?>/images/'+hi.value+'") center no-repeat';
  191. document.getElementById('advuppercolor').value = '#'+uc;
  192. document.getElementById('advlowercolor').value = '#'+lc;
  193. }
  194. if ( 'fontcolor' == oid ) {
  195. document.getElementById('header').style.color = document.getElementById('fontcolor').value;
  196. document.getElementById('advfontcolor').value = document.getElementById('fontcolor').value;
  197. }
  198. if ( 'fontdisplay' == oid ) {
  199. document.getElementById('headerimg').style.display = document.getElementById('fontdisplay').value;
  200. }
  201. }
  202. function toggleDisplay() {
  203. td = document.getElementById('fontdisplay');
  204. td.value = ( td.value == 'none' ) ? 'inline' : 'none';
  205. kUpdate('fontdisplay');
  206. }
  207. function toggleAdvanced() {
  208. a = document.getElementById('jsAdvanced');
  209. if ( a.style.display == 'none' )
  210. a.style.display = 'block';
  211. else
  212. a.style.display = 'none';
  213. }
  214. function kDefaults() {
  215. document.getElementById('headerimage').value = '';
  216. document.getElementById('advuppercolor').value = document.getElementById('uppercolor').value = '#69aee7';
  217. document.getElementById('advlowercolor').value = document.getElementById('lowercolor').value = '#4180b6';
  218. document.getElementById('header').style.background = 'url("<?php echo get_template_directory_uri(); ?>/images/kubrickheader.jpg") center no-repeat';
  219. document.getElementById('header').style.color = '#FFFFFF';
  220. document.getElementById('advfontcolor').value = document.getElementById('fontcolor').value = '';
  221. document.getElementById('fontdisplay').value = 'inline';
  222. document.getElementById('headerimg').style.display = document.getElementById('fontdisplay').value;
  223. }
  224. function kRevert() {
  225. document.getElementById('headerimage').value = '<?php echo js_escape(kubrick_header_image()); ?>';
  226. document.getElementById('advuppercolor').value = document.getElementById('uppercolor').value = '#<?php echo js_escape(kubrick_upper_color()); ?>';
  227. document.getElementById('advlowercolor').value = document.getElementById('lowercolor').value = '#<?php echo js_escape(kubrick_lower_color()); ?>';
  228. document.getElementById('header').style.background = 'url("<?php echo js_escape(kubrick_header_image_url()); ?>") center no-repeat';
  229. document.getElementById('header').style.color = '';
  230. document.getElementById('advfontcolor').value = document.getElementById('fontcolor').value = '<?php echo js_escape(kubrick_header_color_string()); ?>';
  231. document.getElementById('fontdisplay').value = '<?php echo js_escape(kubrick_header_display_string()); ?>';
  232. document.getElementById('headerimg').style.display = document.getElementById('fontdisplay').value;
  233. }
  234. function kInit() {
  235. document.getElementById('jsForm').style.display = 'block';
  236. document.getElementById('nonJsForm').style.display = 'none';
  237. }
  238. addLoadEvent(kInit);
  239. // ]]>
  240. </script>
  241. <style type='text/css'>
  242. #headwrap {
  243. text-align: center;
  244. }
  245. #kubrick-header {
  246. font-size: 80%;
  247. }
  248. #kubrick-header .hibrowser {
  249. width: 780px;
  250. height: 260px;
  251. overflow: scroll;
  252. }
  253. #kubrick-header #hitarget {
  254. display: none;
  255. }
  256. #kubrick-header #header h1 {
  257. font-family: 'Trebuchet MS', 'Lucida Grande', Verdana, Arial, Sans-Serif;
  258. font-weight: bold;
  259. font-size: 4em;
  260. text-align: center;
  261. padding-top: 70px;
  262. margin: 0;
  263. }
  264. #kubrick-header #header .description {
  265. font-family: 'Lucida Grande', Verdana, Arial, Sans-Serif;
  266. font-size: 1.2em;
  267. text-align: center;
  268. }
  269. #kubrick-header #header {
  270. text-decoration: none;
  271. color: <?php echo kubrick_header_color_string(); ?>;
  272. padding: 0;
  273. margin: 0;
  274. height: 200px;
  275. text-align: center;
  276. background: url('<?php echo kubrick_header_image_url(); ?>') center no-repeat;
  277. }
  278. #kubrick-header #headerimg {
  279. margin: 0;
  280. height: 200px;
  281. width: 100%;
  282. display: <?php echo kubrick_header_display_string(); ?>;
  283. }
  284. #jsForm {
  285. display: none;
  286. text-align: center;
  287. }
  288. #jsForm input.submit, #jsForm input.button, #jsAdvanced input.button {
  289. padding: 0px;
  290. margin: 0px;
  291. }
  292. #advanced {
  293. text-align: center;
  294. width: 620px;
  295. }
  296. html>body #advanced {
  297. text-align: center;
  298. position: relative;
  299. left: 50%;
  300. margin-left: -380px;
  301. }
  302. #jsAdvanced {
  303. text-align: right;
  304. }
  305. #nonJsForm {
  306. position: relative;
  307. text-align: left;
  308. margin-left: -370px;
  309. left: 50%;
  310. }
  311. #nonJsForm label {
  312. padding-top: 6px;
  313. padding-right: 5px;
  314. float: left;
  315. width: 100px;
  316. text-align: right;
  317. }
  318. .defbutton {
  319. font-weight: bold;
  320. }
  321. .zerosize {
  322. width: 0px;
  323. height: 0px;
  324. overflow: hidden;
  325. }
  326. #colorPickerDiv a, #colorPickerDiv a:hover {
  327. padding: 1px;
  328. text-decoration: none;
  329. border-bottom: 0px;
  330. }
  331. </style>
  332. <?php
  333. }
  334. function kubrick_theme_page() {
  335. if ( isset( $_REQUEST['saved'] ) ) echo '<div id="message" class="updated fade"><p><strong>'.__('Options saved.').'</strong></p></div>';
  336. ?>
  337. <div class='wrap'>
  338. <div id="kubrick-header">
  339. <h2><?php _e('Header Image and Color'); ?></h2>
  340. <div id="headwrap">
  341. <div id="header">
  342. <div id="headerimg">
  343. <h1><?php bloginfo('name'); ?></h1>
  344. <div class="description"><?php bloginfo('description'); ?></div>
  345. </div>
  346. </div>
  347. </div>
  348. <br />
  349. <div id="nonJsForm">
  350. <form method="post" action="">
  351. <?php wp_nonce_field('kubrick-header'); ?>
  352. <div class="zerosize"><input type="submit" name="defaultsubmit" value="<?php echo attribute_escape(__('Save')); ?>" /></div>
  353. <label for="njfontcolor"><?php _e('Font Color:'); ?></label><input type="text" name="njfontcolor" id="njfontcolor" value="<?php echo attribute_escape(kubrick_header_color()); ?>" /> <?php printf(__('Any CSS color (%s or %s or %s)'), '<code>red</code>', '<code>#FF0000</code>', '<code>rgb(255, 0, 0)</code>'); ?><br />
  354. <label for="njuppercolor"><?php _e('Upper Color:'); ?></label><input type="text" name="njuppercolor" id="njuppercolor" value="#<?php echo attribute_escape(kubrick_upper_color()); ?>" /> <?php printf(__('HEX only (%s or %s)'), '<code>#FF0000</code>', '<code>#F00</code>'); ?><br />
  355. <label for="njlowercolor"><?php _e('Lower Color:'); ?></label><input type="text" name="njlowercolor" id="njlowercolor" value="#<?php echo attribute_escape(kubrick_lower_color()); ?>" /> <?php printf(__('HEX only (%s or %s)'), '<code>#FF0000</code>', '<code>#F00</code>'); ?><br />
  356. <input type="hidden" name="hi" id="hi" value="<?php echo attribute_escape(kubrick_header_image()); ?>" />
  357. <input type="submit" name="toggledisplay" id="toggledisplay" value="<?php echo attribute_escape(__('Toggle Text')); ?>" />
  358. <input type="submit" name="defaults" value="<?php echo attribute_escape(__('Use Defaults')); ?>" />
  359. <input type="submit" class="defbutton" name="submitform" value="&nbsp;&nbsp;<?php _e('Save'); ?>&nbsp;&nbsp;" />
  360. <input type="hidden" name="action" value="save" />
  361. <input type="hidden" name="njform" value="true" />
  362. </form>
  363. </div>
  364. <div id="jsForm">
  365. <form style="display:inline;" method="post" name="hicolor" id="hicolor" action="<?php echo attribute_escape($_SERVER['REQUEST_URI']); ?>">
  366. <?php wp_nonce_field('kubrick-header'); ?>
  367. <input type="button" class="button-secondary" onclick="tgt=document.getElementById('fontcolor');colorSelect(tgt,'pick1');return false;" name="pick1" id="pick1" value="<?php echo attribute_escape(__('Font Color')); ?>"></input>
  368. <input type="button" class="button-secondary" onclick="tgt=document.getElementById('uppercolor');colorSelect(tgt,'pick2');return false;" name="pick2" id="pick2" value="<?php echo attribute_escape(__('Upper Color')); ?>"></input>
  369. <input type="button" class="button-secondary" onclick="tgt=document.getElementById('lowercolor');colorSelect(tgt,'pick3');return false;" name="pick3" id="pick3" value="<?php echo attribute_escape(__('Lower Color')); ?>"></input>
  370. <input type="button" class="button-secondary" name="revert" value="<?php echo attribute_escape(__('Revert')); ?>" onclick="kRevert()" />
  371. <input type="button" class="button-secondary" value="<?php echo attribute_escape(__('Advanced')); ?>" onclick="toggleAdvanced()" />
  372. <input type="hidden" name="action" value="save" />
  373. <input type="hidden" name="fontdisplay" id="fontdisplay" value="<?php echo attribute_escape(kubrick_header_display()); ?>" />
  374. <input type="hidden" name="fontcolor" id="fontcolor" value="<?php echo attribute_escape(kubrick_header_color()); ?>" />
  375. <input type="hidden" name="uppercolor" id="uppercolor" value="<?php echo attribute_escape(kubrick_upper_color()); ?>" />
  376. <input type="hidden" name="lowercolor" id="lowercolor" value="<?php echo attribute_escape(kubrick_lower_color()); ?>" />
  377. <input type="hidden" name="headerimage" id="headerimage" value="<?php echo attribute_escape(kubrick_header_image()); ?>" />
  378. <p class="submit"><input type="submit" name="submitform" class="defbutton" value="<?php echo attribute_escape(__('Update Header')); ?>" onclick="cp.hidePopup('prettyplease')" /></p>
  379. </form>
  380. <div id="colorPickerDiv" style="z-index: 100;background:#eee;border:1px solid #ccc;position:absolute;visibility:hidden;"> </div>
  381. <div id="advanced">
  382. <form id="jsAdvanced" style="display:none;" action="">
  383. <?php wp_nonce_field('kubrick-header'); ?>
  384. <label for="advfontcolor"><?php _e('Font Color (CSS):'); ?> </label><input type="text" id="advfontcolor" onchange="advUpdate(this.value, 'fontcolor')" value="<?php echo attribute_escape(kubrick_header_color()); ?>" /><br />
  385. <label for="advuppercolor"><?php _e('Upper Color (HEX):');?> </label><input type="text" id="advuppercolor" onchange="advUpdate(this.value, 'uppercolor')" value="#<?php echo attribute_escape(kubrick_upper_color()); ?>" /><br />
  386. <label for="advlowercolor"><?php _e('Lower Color (HEX):'); ?> </label><input type="text" id="advlowercolor" onchange="advUpdate(this.value, 'lowercolor')" value="#<?php echo attribute_escape(kubrick_lower_color()); ?>" /><br />
  387. <input type="button" class="button-secondary" name="default" value="<?php echo attribute_escape(__('Select Default Colors')); ?>" onclick="kDefaults()" /><br />
  388. <input type="button" class="button-secondary" onclick="toggleDisplay();return false;" name="pick" id="pick" value="<?php echo attribute_escape(__('Toggle Text Display')); ?>"></input><br />
  389. </form>
  390. </div>
  391. </div>
  392. </div>
  393. </div>
  394. <?php } ?>