Ticket #1106: rename_ui_redirect.diff
| File rename_ui_redirect.diff, 10.8 KB (added by shookie@…, 3 years ago) |
|---|
-
trac/htdocs/css/wiki.css
diff -Naur -x .svn trac-branch/trac/htdocs/css/wiki.css trac-branchA/trac/htdocs/css/wiki.css
old new 17 17 #changeinfo br { clear: left } 18 18 #changeinfo .options { padding: 0 0 1em 1em } 19 19 #changeinfo .options, #changeinfo .buttons { clear: left } 20 #delete, # save { margin-left: 6em }20 #delete, #rename, #save { margin-left: 6em } 21 21 #preview { 22 22 background: #f4f4f4 url(../draft.png); 23 23 margin: 1em 0 2em; -
trac/wiki/templates/wiki_rename.html
diff -Naur -x .svn trac-branch/trac/wiki/templates/wiki_rename.html trac-branchA/trac/wiki/templates/wiki_rename.html
old new 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 <h1>Rename <a href="${href.wiki(page.name)}">$page.name</a></h1> 15 <form id="rename" action="${href.wiki(page.name)}" method="post"> 16 <input type="hidden" name="action" value="rename" /> 17 <p> 18 <label for="new_name">New name:</label> 19 <input type="text" id="new_name" name="new_name" size="40" value="$page.name" /> 20 </p> 21 <fieldset id="inplace" class="group"> 22 <legend>Rename in-place</legend> 23 <p class="hint">Renaming the page will rename all existing versions 24 of the page in place. <br /> 25 The history of the renamed page will be exactly the same as the one 26 of the original page.</p> 27 <input type="checkbox" id="leave_redirection" name="leave_redirection"/> 28 <label for="leave_redirection">Leave a redirection to the new page.</label> 29 <p class="hint">If you choose to leave a redirection, this will 30 re-create the $page.name page with a content pointing to the new 31 page.</p> 32 <div class="buttons"> 33 <input type="submit" name="cancel" value="Cancel" /> 34 <input type="submit" name="rename" value="Rename" /> 35 </div> 36 </fieldset> 37 </form> 38 </div> 39 </body> 40 </html> -
trac/wiki/templates/wiki_view.html
diff -Naur -x .svn trac-branch/trac/wiki/templates/wiki_view.html trac-branchA/trac/wiki/templates/wiki_view.html
old new 62 62 63 63 <py:with vars="modify_perm = 'WIKI_MODIFY' in perm(page.resource); 64 64 delete_perm = 'WIKI_DELETE' in perm(page.resource); 65 admin_perm = 'WIKI_ADMIN' in perm(page.resource)"> 65 admin_perm = 'WIKI_ADMIN' in perm(page.resource); 66 rename_perm = 'WIKI_RENAME' in perm(page.resource)"> 66 67 <py:if test="admin_perm or (not page.readonly and (modify_perm or delete_perm))"> 67 68 <div class="buttons"> 68 69 <py:if test="modify_perm"> … … 92 93 ${attach_file_form(attachments)} 93 94 </py:if> 94 95 </py:if> 95 <py:if test="page.exists and delete_perm"> 96 <py:if test="page.exists and rename_perm"> 97 <form method="get" action="${href.wiki(page.name)}"> 98 <div id="rename"> 99 <input type="hidden" name="action" value="rename" /> 100 <input type="submit" value="${_('Rename page')}" /> 101 </div> 102 </form> 103 </py:if> 104 <py:if test="page.exists and delete_perm"> 96 105 <form method="get" action="${href.wiki(page.name)}"> 97 106 <div id="delete"> 98 107 <input type="hidden" name="action" value="delete" /> -
trac/wiki/web_ui.py
diff -Naur -x .svn trac-branch/trac/wiki/web_ui.py trac-branchA/trac/wiki/web_ui.py
old new 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 … … 149 149 get_diff_options(req) 150 150 req.redirect(req.href.wiki(versioned_page.name, action='diff', 151 151 old_version=old_version)) 152 elif action == 'rename': 153 return self._do_rename(req, page) 152 154 elif action == 'delete': 153 return self._render_confirm(req, versioned_page) 155 return self._render_confirm_delete(req, versioned_page) 156 elif action == 'rename': 157 return self._render_rename_form(req, page) 154 158 elif action == 'edit': 155 159 return self._render_editor(req, versioned_page) 156 160 elif action == 'diff': … … 269 273 version=version, name=page.name)) 270 274 req.redirect(req.href.wiki(page.name)) 271 275 276 def _do_rename(self, req, page): 277 if page.readonly: 278 req.perm(page.resource).require('WIKI_ADMIN') 279 else: 280 req.perm(page.resource).require('WIKI_RENAME') 281 282 if 'cancel' in req.args: 283 req.redirect(get_resource_url(self.env, page.resource, req.href)) 284 285 new_name = req.args.get('new_name', '').rstrip('/') 286 old_name = page.name 287 old_version = page.version 288 leave_redirection = req.args.get('leave_redirection') 289 290 # verify input parameters 291 warn = None 292 if not new_name: 293 warn = _("New name is mandatory for a rename") 294 elif new_name == old_name: 295 warn = _("New name must be different from old name.") 296 if warn: 297 add_warning(req, warn) 298 return self._render_confirm_rename(req, page) 299 300 db = self.env.get_db_cnx() 301 page.rename(new_name, db) 302 303 if leave_redirection: 304 redirection_page = WikiPage(self.env, old_name) 305 redirection_page.text = _("See [wiki:%(page)s].", page=new_name) 306 author = get_reporter_id(req) 307 comment = _("[wiki:'%(new_name)s@%(old_version)d' %(old_name)s] " 308 "was renamed to %(new_name)s", 309 old_name=old_name, old_version=old_version, 310 new_name=new_name) 311 redirection_page.save(author, comment, req.remote_addr, None, db) 312 313 db.commit() 314 315 req.redirect(req.href.wiki(leave_redirection and old_name or new_name)) 316 272 317 def _do_save(self, req, page): 273 318 if page.readonly: 274 319 req.perm(page.resource).require('WIKI_ADMIN') … … 294 339 add_warning(req, _("Page not modified, showing latest version.")) 295 340 return self._render_view(req, page) 296 341 297 def _render_confirm (self, req, page):342 def _render_confirm_delete(self, req, page): 298 343 if page.readonly: 299 344 req.perm(page.resource).require('WIKI_ADMIN') 300 345 else: … … 319 364 self._wiki_ctxtnav(req, page) 320 365 return 'wiki_delete.html', data, None 321 366 367 def _render_rename_form(self, req, page): 368 if page.readonly: 369 req.perm(page.resource).require('WIKI_ADMIN') 370 else: 371 req.perm(page.resource).require('WIKI_RENAME') 372 373 data = self._page_data(req, page, 'rename') 374 self._wiki_ctxtnav(req, page) 375 return 'wiki_rename.html', data, None 376 322 377 def _render_diff(self, req, page): 323 378 if not page.exists: 324 379 raise TracError(_('Version %(num)s of page "%(name)s" does not ' … … 384 439 _('Version %(num)s', num=next_version)) 385 440 386 441 data = self._page_data(req, page, 'diff') 387 data.update({ 442 data.update({ 388 443 'change': {'date': date, 'author': author, 'ipnr': ipnr, 389 444 'comment': comment}, 390 445 'new_version': new_version, 'old_version': old_version, … … 424 479 author = get_reporter_id(req, 'author') 425 480 comment = req.args.get('comment', '') 426 481 editrows = req.args.get('editrows') 427 482 428 483 if editrows: 429 484 pref = req.session.get('wiki_editrows', '20') 430 485 if editrows != pref: … … 448 503 data.update({'diff': diff_data, 'changes': changes, 449 504 'action': 'preview', 'merge': action == 'merge', 450 505 'longcol': 'Version', 'shortcol': 'v'}) 451 506 452 507 self._wiki_ctxtnav(req, page) 453 508 return 'wiki_edit.html', data, None 454 509 … … 518 573 next_version = v 519 574 except ValueError: 520 575 version = None 521 576 522 577 prefix = self.PAGE_TEMPLATES_PREFIX 523 578 templates = [template[len(prefix):] for template in 524 579 WikiSystem(self.env).get_pages(prefix) if … … 538 593 parent = page.name[:page.name.rindex('/')] 539 594 add_link(req, 'up', req.href.wiki(parent, version=None), 540 595 _("View parent page")) 541 596 542 597 if next_version: 543 598 add_link(req, 'next', 544 599 req.href.wiki(page.name, version=next_version), … … 565 620 'version': version 566 621 }) 567 622 return 'wiki_view.html', data, None 568 623 569 624 def _wiki_ctxtnav(self, req, page): 570 625 """Add the normal wiki ctxtnav entries.""" 571 626 add_ctxtnav(req, _('Start Page'), req.href.wiki('WikiStart')) 572 627 add_ctxtnav(req, _('Index'), req.href.wiki('TitleIndex')) 573 628 if page.exists: 574 add_ctxtnav(req, _('History'), req.href.wiki(page.name, 629 add_ctxtnav(req, _('History'), req.href.wiki(page.name, 575 630 action='history')) 576 631 add_ctxtnav(req, _('Last Change'), 577 632 req.href.wiki(page.name, action='diff', … … 648 703 '%s: %s' % (name, shorten_line(text)), 649 704 datetime.fromtimestamp(ts, utc), author, 650 705 shorten_result(text, terms)) 651 706 652 707 # Attachments 653 708 for result in AttachmentModule(self.env).get_search_results( 654 709 req, wiki_realm, terms):
