[ Index ]
 

Code source de WordPress 2.1.2

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/wp-admin/ -> custom-header.php (source)

   1  <?php
   2  
   3  class Custom_Image_Header {
   4      var $admin_header_callback;
   5  
   6  	function Custom_Image_Header($admin_header_callback) {
   7          $this->admin_header_callback = $admin_header_callback;
   8      }
   9  
  10  	function init() {
  11          $page = add_theme_page(__('Custom Image Header'), __('Custom Image Header'), 'edit_themes', 'custom-header', array(&$this, 'admin_page'));
  12  
  13          add_action("admin_print_scripts-$page", array(&$this, 'js_includes'));
  14          add_action("admin_head-$page", array(&$this, 'js'), 50);
  15          add_action("admin_head-$page", $this->admin_header_callback, 51);
  16      }
  17  
  18  	function js_includes() {
  19          wp_enqueue_script('cropper');
  20          wp_enqueue_script('colorpicker');    
  21      }
  22  
  23      function js() {
  24  
  25          if ( isset( $_POST['textcolor'] ) ) {
  26              if ( 'blank' == $_POST['textcolor'] ) {
  27                  set_theme_mod('header_textcolor', 'blank');
  28              } else {
  29                  $color = preg_replace('/[^0-9a-fA-F]/', '', $_POST['textcolor']);
  30                  if ( strlen($color) == 6 || strlen($color) == 3 )
  31                      set_theme_mod('header_textcolor', $color);
  32              }
  33          }
  34          if ( isset($_POST['resetheader']) )
  35              remove_theme_mods();
  36      ?>
  37  <script type="text/javascript">
  38  
  39  	function onEndCrop( coords, dimensions ) {
  40          $( 'x1' ).value = coords.x1;
  41          $( 'y1' ).value = coords.y1;
  42          $( 'x2' ).value = coords.x2;
  43          $( 'y2' ).value = coords.y2;
  44          $( 'width' ).value = dimensions.width;
  45          $( 'height' ).value = dimensions.height;
  46      }
  47  
  48      // with a supplied ratio
  49      Event.observe(
  50          window,
  51          'load',
  52          function() {
  53              var xinit = <?php echo HEADER_IMAGE_WIDTH; ?>;
  54              var yinit = <?php echo HEADER_IMAGE_HEIGHT; ?>;
  55              var ratio = xinit / yinit;
  56              var ximg = $('upload').width;
  57              var yimg = $('upload').height;
  58              if ( yimg < yinit || ximg < xinit ) {
  59                  if ( ximg / yimg > ratio ) {
  60                      yinit = yimg;
  61                      xinit = yinit * ratio;
  62                  } else {
  63                      xinit = ximg;
  64                      yinit = xinit / ratio;
  65                  }
  66              }
  67              new Cropper.Img(
  68                  'upload',
  69                  {
  70                      ratioDim: { x: xinit, y: yinit },
  71                      displayOnInit: true,
  72                      onEndCrop: onEndCrop
  73                  }
  74              )
  75          }
  76      );
  77  
  78      var cp = new ColorPicker();
  79  
  80  	function pickColor(color) {
  81          $('name').style.color = color;
  82          $('desc').style.color = color;
  83          $('textcolor').value = color;
  84      }
  85  	function PopupWindow_hidePopup(magicword) {
  86          if ( magicword != 'prettyplease' )
  87              return false;
  88          if (this.divName != null) {
  89              if (this.use_gebi) {
  90                  document.getElementById(this.divName).style.visibility = "hidden";
  91              }
  92              else if (this.use_css) {
  93                  document.all[this.divName].style.visibility = "hidden";
  94              }
  95              else if (this.use_layers) {
  96                  document.layers[this.divName].visibility = "hidden";
  97              }
  98          }
  99          else {
 100              if (this.popupWindow && !this.popupWindow.closed) {
 101                  this.popupWindow.close();
 102                  this.popupWindow = null;
 103              }
 104          }
 105          return false;
 106      }
 107  	function colorSelect(t,p) {
 108          if ( cp.p == p && document.getElementById(cp.divName).style.visibility != "hidden" ) {
 109              cp.hidePopup('prettyplease');
 110          } else {
 111              cp.p = p;
 112              cp.select(t,p);
 113          }
 114      }
 115  	function colorDefault() {
 116          pickColor('<?php echo HEADER_TEXTCOLOR; ?>');
 117      }
 118      
 119  	function hide_text() {
 120          $('name').style.display = 'none';
 121          $('desc').style.display = 'none';
 122          $('pickcolor').style.display = 'none';
 123          $('defaultcolor').style.display = 'none';
 124          $('textcolor').value = 'blank';
 125          $('hidetext').value = '<?php _e('Show Text'); ?>';
 126  //        $('hidetext').onclick = 'show_text()';
 127          Event.observe( $('hidetext'), 'click', show_text );
 128      }
 129      
 130  	function show_text() {
 131          $('name').style.display = 'block';
 132          $('desc').style.display = 'block';
 133          $('pickcolor').style.display = 'inline';
 134          $('defaultcolor').style.display = 'inline';
 135          $('textcolor').value = '<?php echo HEADER_TEXTCOLOR; ?>';
 136          $('hidetext').value = '<?php _e('Hide Text'); ?>';
 137          Event.stopObserving( $('hidetext'), 'click', show_text );    
 138          Event.observe( $('hidetext'), 'click', hide_text );
 139      }
 140  
 141      <?php if ( 'blank' == get_theme_mod('header_textcolor', HEADER_TEXTCOLOR) ) { ?>
 142  Event.observe( window, 'load', hide_text );
 143      <?php } ?>
 144  
 145  </script>
 146  <?php
 147      }
 148  
 149  	function step_1() {
 150          if ( $_GET['updated'] ) { ?>
 151  <div id="message" class="updated fade">
 152  <p><?php _e('Header updated.') ?></p>
 153  </div>
 154          <?php } ?>
 155  
 156  <div class="wrap">
 157  <h2><?php _e('Your Header Image'); ?></h2>
 158  <p><?php _e('This is your header image. You can change the text color or upload and crop a new image.'); ?></p>
 159  
 160  <div id="headimg" style="background: url(<?php header_image() ?>) no-repeat;">
 161  <h1><a onclick="return false;" href="<?php bloginfo('url'); ?>" title="<?php bloginfo('name'); ?>" id="name"><?php bloginfo('name'); ?></a></h1>
 162  <div id="desc"><?php bloginfo('description');?></div>
 163  </div>
 164  <?php if ( !defined( 'NO_HEADER_TEXT' ) ) { ?>
 165  <form method="post" action="<?php echo get_option('siteurl') ?>/wp-admin/themes.php?page=custom-header&amp;updated=true">
 166  <input type="button" value="<?php _e('Hide Text'); ?>" onclick="hide_text()" id="hidetext" />
 167  <input type="button" value="<?php _e('Select a Text Color'); ?>" onclick="colorSelect($('textcolor'), 'pickcolor')" id="pickcolor" /><input type="button" value="<?php _e('Use Original Color'); ?>" onclick="colorDefault()" id="defaultcolor" />
 168  <input type="hidden" name="textcolor" id="textcolor" value="#<?php header_textcolor() ?>" /><input name="submit" type="submit" value="<?php _e('Save Changes'); ?> &raquo;" /></form>
 169  <?php } ?>
 170  
 171  <div id="colorPickerDiv" style="z-index: 100;background:#eee;border:1px solid #ccc;position:absolute;visibility:hidden;"> </div>
 172  </div>
 173  <div class="wrap">
 174  <h2><?php _e('Upload New Header Image'); ?></h2><p><?php _e('Here you can upload a custom header image to be shown at the top of your blog instead of the default one. On the next screen you will be able to crop the image.'); ?></p>
 175  <p><?php printf(__('Images of exactly <strong>%1$d x %2$d pixels</strong> will be used as-is.'), HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT); ?></p>
 176  
 177  <form enctype="multipart/form-data" id="uploadForm" method="POST" action="<?php echo add_query_arg('step', 2) ?>" style="margin: auto; width: 50%;">
 178  <label for="upload"><?php _e('Choose an image from your computer:'); ?></label><br /><input type="file" id="upload" name="import" />
 179  <input type="hidden" name="action" value="save" />
 180  <p class="submit">
 181  <input type="submit" value="<?php _e('Upload'); ?> &raquo;" />
 182  </p>
 183  </form>
 184  
 185  </div>
 186  
 187          <?php if ( get_theme_mod('header_image') || get_theme_mod('header_textcolor') ) : ?>
 188  <div class="wrap">
 189  <h2><?php _e('Reset Header Image and Color'); ?></h2>
 190  <p><?php _e('This will restore the original header image and color. You will not be able to retrieve any customizations.') ?></p>
 191  <form method="post" action="<?php echo add_query_arg('step', 1) ?>">
 192  <input type="submit" name="resetheader" value="<?php _e('Restore Original Header'); ?>" />
 193  </form>
 194  </div>
 195          <?php endif;
 196  
 197      }
 198  
 199  	function step_2() {
 200          $overrides = array('test_form' => false);
 201          $file = wp_handle_upload($_FILES['import'], $overrides);
 202  
 203          if ( isset($file['error']) )
 204          die( $file['error'] );
 205  
 206          $url = $file['url'];
 207          $file = $file['file'];
 208          $filename = basename($file);
 209  
 210          // Construct the object array
 211          $object = array(
 212          'post_title' => $filename,
 213          'post_content' => $url,
 214          'post_mime_type' => 'import',
 215          'guid' => $url);
 216  
 217          // Save the data
 218          $id = wp_insert_attachment($object, $file);
 219  
 220          $upload = array('file' => $file, 'id' => $id);
 221  
 222          list($width, $height, $type, $attr) = getimagesize( $file );
 223  
 224          if ( $width == HEADER_IMAGE_WIDTH && $height == HEADER_IMAGE_HEIGHT ) {
 225              set_theme_mod('header_image', $url);
 226              $header = apply_filters('wp_create_file_in_uploads', $file, $id); // For replication
 227              return $this->finished();
 228          } elseif ( $width > HEADER_IMAGE_WIDTH ) {
 229              $oitar = $width / HEADER_IMAGE_WIDTH;
 230              $image = wp_crop_image($file, 0, 0, $width, $height, HEADER_IMAGE_WIDTH, $height / $oitar, false, str_replace(basename($file), 'midsize-'.basename($file), $file));
 231              $image = apply_filters('wp_create_file_in_uploads', $image, $id); // For replication
 232  
 233              $url = str_replace(basename($url), basename($image), $url);
 234              $width = $width / $oitar;
 235              $height = $height / $oitar;
 236          } else {
 237              $oitar = 1;
 238          }
 239          ?>
 240  
 241  <div class="wrap">
 242  
 243  <form method="POST" action="<?php echo add_query_arg('step', 3) ?>">
 244  
 245  <p><?php _e('Choose the part of the image you want to use as your header.'); ?></p>
 246  <div id="testWrap">
 247  <img src="<?php echo $url; ?>" id="upload" width="<?php echo $width; ?>" height="<?php echo $height; ?>" />
 248  </div>
 249  
 250  <p class="submit">
 251  <input type="hidden" name="x1" id="x1" />
 252  <input type="hidden" name="y1" id="y1" />
 253  <input type="hidden" name="x2" id="x2" />
 254  <input type="hidden" name="y2" id="y2" />
 255  <input type="hidden" name="width" id="width" />
 256  <input type="hidden" name="height" id="height" />
 257  <input type="hidden" name="attachment_id" id="attachment_id" value="<?php echo $id; ?>" />
 258  <input type="hidden" name="oitar" id="oitar" value="<?php echo $oitar; ?>" />
 259  <input type="submit" value="<?php _e('Crop Header &raquo;'); ?>" />
 260  </p>
 261  
 262  </form>
 263  </div>
 264          <?php
 265      }
 266  
 267  	function step_3() {
 268          if ( $_POST['oitar'] > 1 ) {
 269              $_POST['x1'] = $_POST['x1'] * $_POST['oitar'];
 270              $_POST['y1'] = $_POST['y1'] * $_POST['oitar'];
 271              $_POST['width'] = $_POST['width'] * $_POST['oitar'];
 272              $_POST['height'] = $_POST['height'] * $_POST['oitar'];
 273          }
 274  
 275          $header = wp_crop_image($_POST['attachment_id'], $_POST['x1'], $_POST['y1'], $_POST['width'], $_POST['height'], HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT);
 276          $header = apply_filters('wp_create_file_in_uploads', $header); // For replication
 277  
 278          $parent = get_post($_POST['attachment_id']);
 279  
 280          $parent_url = $parent->guid;
 281  
 282          $url = str_replace(basename($parent_url), basename($header), $parent_url);
 283  
 284          set_theme_mod('header_image', $url);
 285  
 286          // cleanup
 287          $file = get_attached_file( $_POST['attachment_id'] );
 288          $medium = str_replace(basename($file), 'midsize-'.basename($file), $file);
 289          @unlink( apply_filters( 'wp_delete_file', $medium ) );
 290          wp_delete_attachment( $_POST['attachment_id'] );
 291  
 292          return $this->finished();
 293      }
 294  
 295  	function finished() {
 296          ?>
 297  <div class="wrap">
 298  <h2><?php _e('Header complete!'); ?></h2>
 299  
 300  <p><?php _e('Visit your site and you should see the new header now.'); ?></p>
 301  
 302  </div>
 303          <?php
 304      }
 305  
 306  	function admin_page() {
 307          if ( !isset( $_GET['step'] ) )
 308              $step = 1;
 309          else
 310              $step = (int) $_GET['step'];
 311  
 312          if ( 1 == $step ) {
 313              $this->step_1();
 314          } elseif ( 2 == $step ) {
 315              $this->step_2();
 316          } elseif ( 3 == $step ) {
 317              $this->step_3();
 318          }
 319  
 320      }
 321  
 322  }
 323  ?>


Généré le : Fri Mar 30 19:41:27 2007 par Balluche grâce à PHPXref 0.7