Ticket #1106: rename_web_ui.diff
| File rename_web_ui.diff, 10.5 KB (added by shookie@…, 2 years ago) |
|---|
-
trac/admin/tests/console-tests.txt
diff --git a/trac/admin/tests/console-tests.txt b/trac/admin/tests/console-tests.txt index 270c699..099efd8 100644
a b Available actions: 114 114 SEARCH_VIEW, TICKET_ADMIN, TICKET_APPEND, TICKET_CHGPROP, TICKET_CREATE, 115 115 TICKET_EDIT_CC, TICKET_EDIT_COMMENT, TICKET_EDIT_DESCRIPTION, 116 116 TICKET_MODIFY, TICKET_VIEW, TIMELINE_VIEW, TRAC_ADMIN, WIKI_ADMIN, 117 WIKI_CREATE, WIKI_DELETE, WIKI_MODIFY, WIKI_ VIEW117 WIKI_CREATE, WIKI_DELETE, WIKI_MODIFY, WIKI_RENAME, WIKI_VIEW 118 118 119 119 ===== test_permission_add_one_action_ok ===== 120 120 … … Available actions: 148 148 SEARCH_VIEW, TICKET_ADMIN, TICKET_APPEND, TICKET_CHGPROP, TICKET_CREATE, 149 149 TICKET_EDIT_CC, TICKET_EDIT_COMMENT, TICKET_EDIT_DESCRIPTION, 150 150 TICKET_MODIFY, TICKET_VIEW, TIMELINE_VIEW, TRAC_ADMIN, WIKI_ADMIN, 151 WIKI_CREATE, WIKI_DELETE, WIKI_MODIFY, WIKI_ VIEW151 WIKI_CREATE, WIKI_DELETE, WIKI_MODIFY, WIKI_RENAME, WIKI_VIEW 152 152 153 153 ===== test_permission_add_multiple_actions_ok ===== 154 154 … … Available actions: 183 183 SEARCH_VIEW, TICKET_ADMIN, TICKET_APPEND, TICKET_CHGPROP, TICKET_CREATE, 184 184 TICKET_EDIT_CC, TICKET_EDIT_COMMENT, TICKET_EDIT_DESCRIPTION, 185 185 TICKET_MODIFY, TICKET_VIEW, TIMELINE_VIEW, TRAC_ADMIN, WIKI_ADMIN, 186 WIKI_CREATE, WIKI_DELETE, WIKI_MODIFY, WIKI_ VIEW186 WIKI_CREATE, WIKI_DELETE, WIKI_MODIFY, WIKI_RENAME, WIKI_VIEW 187 187 188 188 ===== test_permission_remove_one_action_ok ===== 189 189 … … Available actions: 216 216 SEARCH_VIEW, TICKET_ADMIN, TICKET_APPEND, TICKET_CHGPROP, TICKET_CREATE, 217 217 TICKET_EDIT_CC, TICKET_EDIT_COMMENT, TICKET_EDIT_DESCRIPTION, 218 218 TICKET_MODIFY, TICKET_VIEW, TIMELINE_VIEW, TRAC_ADMIN, WIKI_ADMIN, 219 WIKI_CREATE, WIKI_DELETE, WIKI_MODIFY, WIKI_ VIEW219 WIKI_CREATE, WIKI_DELETE, WIKI_MODIFY, WIKI_RENAME, WIKI_VIEW 220 220 221 221 ===== test_permission_remove_multiple_actions_ok ===== 222 222 … … Available actions: 249 249 SEARCH_VIEW, TICKET_ADMIN, TICKET_APPEND, TICKET_CHGPROP, TICKET_CREATE, 250 250 TICKET_EDIT_CC, TICKET_EDIT_COMMENT, TICKET_EDIT_DESCRIPTION, 251 251 TICKET_MODIFY, TICKET_VIEW, TIMELINE_VIEW, TRAC_ADMIN, WIKI_ADMIN, 252 WIKI_CREATE, WIKI_DELETE, WIKI_MODIFY, WIKI_ VIEW252 WIKI_CREATE, WIKI_DELETE, WIKI_MODIFY, WIKI_RENAME, WIKI_VIEW 253 253 254 254 ===== test_component_list_ok ===== 255 255 -
trac/htdocs/css/wiki.css
diff --git a/trac/htdocs/css/wiki.css b/trac/htdocs/css/wiki.css index 091f2f6..f109783 100644
a b 42 42 #changeinfo br { clear: left } 43 43 #changeinfo .options { padding: 0 0 1em 1em } 44 44 #changeinfo .options, #changeinfo .buttons { clear: left } 45 #delete, # save { margin-left: 6em }45 #delete, #rename, #save { margin-left: 6em } 46 46 #preview { 47 47 background: #f4f4f4 url(../draft.png); 48 48 margin: 1em 0 2em; -
new file trac/wiki/templates/wiki_rename.html
diff --git a/trac/wiki/templates/wiki_rename.html b/trac/wiki/templates/wiki_rename.html new file mode 100644 index 0000000..5c5d6dc
- + 1 <!DOCTYPE html 2 PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 4 <html xmlns="http://www.w3.org/1999/xhtml" 5 xmlns:py="http://genshi.edgewall.org/" 6 xmlns:xi="http://www.w3.org/2001/XInclude"> 7 <xi:include href="layout.html" /> 8 <head> 9 <title>$title</title> 10 </head> 11 12 <body> 13 <div id="content" class="wiki" 14 py:with=" 15 current_href = href.wiki(page.name); 16 "> 17 <h1>${_('Rename')} <a href="$current_href">$page.name</a></h1> 18 <form action="$current_href" method="post"> 19 <p> 20 <input type="hidden" name="action" value="rename" /> 21 <strong>Renaming the page will rename all existing versions 22 of the page in place. <br /> 23 The history of the renamed page will be exactly the same as the one 24 of the original page.</strong> 25 <br /> 26 <p> 27 <label for="new_name">New name:</label> 28 <input type="text" id="new_name" name="new_name" size="40" value="$page.name" /> 29 </p> 30 <br /> 31 <fieldset id="rename_options" class="group"> 32 <legend>${_('Rename')} ${_('Options')}</legend> 33 <input type="checkbox" id="leave_redirection" name="leave_redirection"/> 34 <label for="leave_redirection">Leave a redirection to the new page.</label> 35 <br /> 36 <strong>If you choose to leave a redirection, this will 37 re-create the $page.name page with a link pointing to the new 38 page.</strong> 39 </fieldset> 40 </p> 41 <div class="buttons"> 42 <input type="submit" name="cancel" value="${_('Cancel')}" /> 43 <input type="submit" value="${_('Rename')} $page.name" /> 44 </div> 45 </form> 46 </div> 47 </body> 48 </html> -
trac/wiki/templates/wiki_view.html
diff --git a/trac/wiki/templates/wiki_view.html b/trac/wiki/templates/wiki_view.html index 0715fbe..17880bd 100644
a b 71 71 72 72 <py:with vars="modify_perm = 'WIKI_MODIFY' in perm(page.resource); 73 73 delete_perm = 'WIKI_DELETE' in perm(page.resource); 74 admin_perm = 'WIKI_ADMIN' in perm(page.resource)"> 74 admin_perm = 'WIKI_ADMIN' in perm(page.resource); 75 rename_perm = 'WIKI_RENAME' in perm(page.resource)"> 75 76 <py:if test="admin_perm or (not page.readonly and (modify_perm or delete_perm))"> 76 77 <div class="buttons"> 77 78 <py:if test="modify_perm"> … … 101 102 ${attach_file_form(attachments)} 102 103 </py:if> 103 104 </py:if> 105 <py:if test="page.exists and rename_perm"> 106 <form method="get" action="${href.wiki(page.name)}" id="rename"> 107 <div> 108 <input type="hidden" name="action" value="rename" /> 109 <input type="submit" value="${_('Rename page')}" /> 110 </div> 111 </form> 112 </py:if> 104 113 <py:if test="page.exists and delete_perm"> 105 114 <form method="get" action="${href.wiki(page.name)}"> 106 115 <div id="delete"> -
trac/wiki/web_ui.py
diff --git a/trac/wiki/web_ui.py b/trac/wiki/web_ui.py index d8a69fe..677ddec 100644
a b class WikiModule(Component): 94 94 # IPermissionRequestor methods 95 95 96 96 def get_permission_actions(self): 97 actions = ['WIKI_CREATE', 'WIKI_DELETE', 'WIKI_MODIFY', 'WIKI_ VIEW']97 actions = ['WIKI_CREATE', 'WIKI_DELETE', 'WIKI_MODIFY', 'WIKI_RENAME', 'WIKI_VIEW'] 98 98 return actions + [('WIKI_ADMIN', actions)] 99 99 100 100 # IRequestHandler methods … … class WikiModule(Component): 146 146 return self._render_editor(req, page, action, has_collision) 147 147 elif action == 'delete': 148 148 self._do_delete(req, versioned_page) 149 elif action == 'rename': 150 return self._do_rename(req, page) 149 151 elif action == 'diff': 150 152 get_diff_options(req) 151 153 req.redirect(req.href.wiki(versioned_page.name, action='diff', 152 154 old_version=old_version)) 153 155 elif action == 'delete': 154 return self._render_confirm(req, versioned_page) 156 return self._render_confirm_delete(req, versioned_page) 157 elif action == 'rename': 158 return self._render_confirm_rename(req, page) 155 159 elif action == 'edit': 156 160 return self._render_editor(req, versioned_page) 157 161 elif action == 'diff': … … class WikiModule(Component): 270 274 version=version, name=page.name)) 271 275 req.redirect(req.href.wiki(page.name)) 272 276 277 def _do_rename(self, req, page): 278 if page.readonly: 279 req.perm(page.resource).require('WIKI_ADMIN') 280 else: 281 req.perm(page.resource).require('WIKI_RENAME') 282 283 if 'cancel' in req.args: 284 req.redirect(get_resource_url(self.env, page.resource, req.href)) 285 286 new_name = req.args.get('new_name', '').rstrip('/') 287 old_name = page.name 288 old_version = page.version 289 leave_redirection = req.args.get('leave_redirection') 290 291 # verify input parameters 292 warn = None 293 if not new_name: 294 warn = _("New name is mandatory for a rename.") 295 elif new_name == old_name: 296 warn = _("New name must be different from old name.") 297 if warn: 298 add_warning(req, warn) 299 return self._render_rename_form(req, page) 300 301 302 @with_transaction(self.env) 303 def do_rename(db): 304 page.rename(new_name, db) 305 if leave_redirection: 306 redirection_page = WikiPage(self.env, old_name) 307 redirection_page.text = _("See [wiki:%(page)s].", 308 page=new_name) 309 author = get_reporter_id(req) 310 comment = _("[wiki:'%(new_name)s@%(old_version)d' " 311 "%(old_name)s] was renamed to %(new_name)s", 312 old_name=old_name, old_version=old_version, 313 new_name=new_name) 314 redirection_page.save(author, comment, req.remote_addr, 315 None, db) 316 317 req.redirect(req.href.wiki(leave_redirection and old_name or new_name)) 318 319 320 273 321 def _do_save(self, req, page): 274 322 if page.readonly: 275 323 req.perm(page.resource).require('WIKI_ADMIN') … … class WikiModule(Component): 294 342 add_warning(req, _("Page not modified, showing latest version.")) 295 343 return self._render_view(req, page) 296 344 297 def _render_confirm (self, req, page):345 def _render_confirm_delete(self, req, page): 298 346 if page.readonly: 299 347 req.perm(page.resource).require('WIKI_ADMIN') 300 348 else: … … class WikiModule(Component): 319 367 self._wiki_ctxtnav(req, page) 320 368 return 'wiki_delete.html', data, None 321 369 370 def _render_confirm_rename(self, req, page): 371 if page.readonly: 372 req.perm(page.resource).require('WIKI_ADMIN') 373 else: 374 req.perm(page.resource).require('WIKI_RENAME') 375 376 data = self._page_data(req, page, 'rename') 377 self._wiki_ctxtnav(req, page) 378 return 'wiki_rename.html', data, None 379 380 322 381 def _render_diff(self, req, page): 323 382 if not page.exists: 324 383 raise TracError(_('Version %(num)s of page "%(name)s" does not '
