Wordpress 2.7.1-scripts
[autoinstalls/wordpress.git] / wp-admin / options-permalink.php
1 <?php
2 /**
3  * Permalink settings administration panel.
4  *
5  * @package WordPress
6  * @subpackage Administration
7  */
8
9 /** WordPress Administration Bootstrap */
10 require_once('admin.php');
11
12 $title = __('Permalink Settings');
13 $parent_file = 'options-general.php';
14
15 /**
16  * Display JavaScript on the page.
17  *
18  * @package WordPress
19  * @subpackage Permalink_Settings_Panel
20  */
21 function add_js() {
22 ?>
23 <script type="text/javascript">
24 //<![CDATA[
25 function GetElementsWithClassName(elementName, className) {
26 var allElements = document.getElementsByTagName(elementName);
27 var elemColl = new Array();
28 for (i = 0; i < allElements.length; i++) {
29 if (allElements[i].className == className) {
30 elemColl[elemColl.length] = allElements[i];
31 }
32 }
33 return elemColl;
34 }
35
36 function upit() {
37 var inputColl = GetElementsWithClassName('input', 'tog');
38 var structure = document.getElementById('permalink_structure');
39 var inputs = '';
40 for (i = 0; i < inputColl.length; i++) {
41 if ( inputColl[i].checked && inputColl[i].value != '') {
42 inputs += inputColl[i].value + ' ';
43 }
44 }
45 inputs = inputs.substr(0,inputs.length - 1);
46 if ( 'custom' != inputs )
47 structure.value = inputs;
48 }
49
50 function blurry() {
51 if (!document.getElementById) return;
52
53 var structure = document.getElementById('permalink_structure');
54 structure.onfocus = function () { document.getElementById('custom_selection').checked = 'checked'; }
55
56 var aInputs = document.getElementsByTagName('input');
57
58 for (var i = 0; i < aInputs.length; i++) {
59 aInputs[i].onclick = aInputs[i].onkeyup = upit;
60 }
61 }
62
63 window.onload = blurry;
64 //]]>
65 </script>
66 <?php
67 }
68 add_filter('admin_head', 'add_js');
69
70 include('admin-header.php');
71
72 $home_path = get_home_path();
73
74 if ( isset($_POST['permalink_structure']) || isset($_POST['category_base']) ) {
75         check_admin_referer('update-permalink');
76
77         if ( isset($_POST['permalink_structure']) ) {
78                 $permalink_structure = $_POST['permalink_structure'];
79                 if (! empty($permalink_structure) )
80                         $permalink_structure = preg_replace('#/+#', '/', '/' . $_POST['permalink_structure']);
81                 $wp_rewrite->set_permalink_structure($permalink_structure);
82         }
83
84         if ( isset($_POST['category_base']) ) {
85                 $category_base = $_POST['category_base'];
86                 if (! empty($category_base) )
87                         $category_base = preg_replace('#/+#', '/', '/' . $_POST['category_base']);
88                 $wp_rewrite->set_category_base($category_base);
89         }
90
91         if ( isset($_POST['tag_base']) ) {
92                 $tag_base = $_POST['tag_base'];
93                 if (! empty($tag_base) )
94                         $tag_base = preg_replace('#/+#', '/', '/' . $_POST['tag_base']);
95                 $wp_rewrite->set_tag_base($tag_base);
96         }
97 }
98
99 $permalink_structure = get_option('permalink_structure');
100 $category_base = get_option('category_base');
101 $tag_base = get_option( 'tag_base' );
102
103 if ( (!file_exists($home_path.'.htaccess') && is_writable($home_path)) || is_writable($home_path.'.htaccess') )
104         $writable = true;
105 else
106         $writable = false;
107
108 if ($wp_rewrite->using_index_permalinks())
109         $usingpi = true;
110 else
111         $usingpi = false;
112
113 $wp_rewrite->flush_rules();
114 ?>
115
116 <?php if (isset($_POST['submit'])) : ?>
117 <div id="message" class="updated fade"><p><?php
118 if ( $permalink_structure && !$usingpi && !$writable )
119         _e('You should update your .htaccess now.');
120 else
121         _e('Permalink structure updated.');
122 ?></p></div>
123 <?php endif; ?>
124
125 <div class="wrap">
126 <?php screen_icon(); ?>
127 <h2><?php echo wp_specialchars( $title ); ?></h2>
128
129 <form name="form" action="options-permalink.php" method="post">
130 <?php wp_nonce_field('update-permalink') ?>
131
132   <p><?php _e('By default WordPress uses web <abbr title="Universal Resource Locator">URL</abbr>s which have question marks and lots of numbers in them, however WordPress offers you the ability to create a custom URL structure for your permalinks and archives. This can improve the aesthetics, usability, and forward-compatibility of your links. A <a href="http://codex.wordpress.org/Using_Permalinks">number of tags are available</a>, and here are some examples to get you started.'); ?></p>
133
134 <?php
135 $prefix = '';
136
137 if ( ! got_mod_rewrite() )
138         $prefix = '/index.php';
139
140 $structures = array(
141         '',
142         $prefix . '/%year%/%monthnum%/%day%/%postname%/',
143         $prefix . '/%year%/%monthnum%/%postname%/',
144         $prefix . '/archives/%post_id%'
145         );
146 ?>
147 <h3><?php _e('Common settings'); ?></h3>
148 <table class="form-table">
149         <tr>
150                 <th><label><input name="selection" type="radio" value="" class="tog" <?php checked('', $permalink_structure); ?> /> <?php _e('Default'); ?></label></th>
151                 <td><code><?php echo get_option('home'); ?>/?p=123</code></td>
152         </tr>
153         <tr>
154                 <th><label><input name="selection" type="radio" value="<?php echo $structures[1]; ?>" class="tog" <?php checked($structures[1], $permalink_structure); ?> /> <?php _e('Day and name'); ?></label></th>
155                 <td><code><?php echo get_option('home') . $prefix . '/' . date('Y') . '/' . date('m') . '/' . date('d') . '/sample-post/'; ?></code></td>
156         </tr>
157         <tr>
158                 <th><label><input name="selection" type="radio" value="<?php echo $structures[2]; ?>" class="tog" <?php checked($structures[2], $permalink_structure); ?> /> <?php _e('Month and name'); ?></label></th>
159                 <td><code><?php echo get_option('home') . $prefix . '/' . date('Y') . '/' . date('m') . '/sample-post/'; ?></code></td>
160         </tr>
161         <tr>
162                 <th><label><input name="selection" type="radio" value="<?php echo $structures[3]; ?>" class="tog" <?php checked($structures[3], $permalink_structure); ?> /> <?php _e('Numeric'); ?></label></th>
163                 <td><code><?php echo get_option('home') . $prefix  ; ?>/archives/123</code></td>
164         </tr>
165         <tr>
166                 <th>
167                         <label><input name="selection" id="custom_selection" type="radio" value="custom" class="tog"
168                         <?php if ( !in_array($permalink_structure, $structures) ) { ?>
169                         checked="checked"
170                         <?php } ?>
171                          />
172                         <?php _e('Custom Structure'); ?>
173                         </label>
174                 </th>
175                 <td>
176                         <input name="permalink_structure" id="permalink_structure" type="text" value="<?php echo attribute_escape($permalink_structure); ?>" class="regular-text code" />
177                 </td>
178         </tr>
179 </table>
180
181 <h3><?php _e('Optional'); ?></h3>
182 <?php if ($is_apache) : ?>
183         <p><?php _e('If you like, you may enter custom structures for your category and tag <abbr title="Universal Resource Locator">URL</abbr>s here. For example, using <kbd>topics</kbd> as your category base would make your category links like <code>http://example.org/topics/uncategorized/</code>. If you leave these blank the defaults will be used.') ?></p>
184 <?php else : ?>
185         <p><?php _e('If you like, you may enter custom structures for your category and tag <abbr title="Universal Resource Locator">URL</abbr>s here. For example, using <code>topics</code> as your category base would make your category links like <code>http://example.org/index.php/topics/uncategorized/</code>. If you leave these blank the defaults will be used.') ?></p>
186 <?php endif; ?>
187
188 <table class="form-table">
189         <tr>
190                 <th><label for="category_base"><?php _e('Category base'); ?></label></th>
191                 <td><input name="category_base" id="category_base" type="text" value="<?php echo attribute_escape($category_base); ?>" class="regular-text code" /></td>
192         </tr>
193         <tr>
194                 <th><label for="tag_base"><?php _e('Tag base'); ?></label></th>
195                 <td><input name="tag_base" id="tag_base" type="text" value="<?php echo attribute_escape($tag_base); ?>" class="regular-text code" /></td>
196         </tr>
197         <?php do_settings_fields('permalink', 'optional'); ?>
198 </table>
199
200 <?php do_settings_sections('permalink'); ?>
201
202 <p class="submit">
203         <input type="submit" name="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
204 </p>
205   </form>
206 <?php if ( $permalink_structure && !$usingpi && !$writable ) : ?>
207   <p><?php _e('If your <code>.htaccess</code> file were <a href="http://codex.wordpress.org/Changing_File_Permissions">writable</a>, we could do this automatically, but it isn&#8217;t so these are the mod_rewrite rules you should have in your <code>.htaccess</code> file. Click in the field and press <kbd>CTRL + a</kbd> to select all.') ?></p>
208 <form action="options-permalink.php" method="post">
209 <?php wp_nonce_field('update-permalink') ?>
210         <p><textarea rows="6" class="large-text readonly" name="rules" id="rules" readonly="readonly"><?php echo wp_specialchars($wp_rewrite->mod_rewrite_rules()); ?></textarea></p>
211 </form>
212 <?php endif; ?>
213
214 </div>
215
216 <?php require('./admin-footer.php'); ?>