From: Carsten K. <car...@us...> - 2003-01-03 02:43:30
|
Update of /cvsroot/phpwiki/phpwiki/lib In directory sc8-pr-cvs1:/tmp/cvs-serv13829 Modified Files: editpage.php Log Message: New class LoadFileConflictPageEditor, for merging / comparing a loaded pgsrc file with an existing page. Index: editpage.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/editpage.php,v retrieving revision 1.50 retrieving revision 1.51 diff -u -2 -b -p -d -r1.50 -r1.51 --- editpage.php 29 Dec 2002 02:51:31 -0000 1.50 +++ editpage.php 3 Jan 2003 02:43:26 -0000 1.51 @@ -403,4 +403,87 @@ class PageEditor } +class LoadFileConflictPageEditor +extends PageEditor +{ + function editPage ($saveFailed = true) { + $tokens = array(); + + if ($this->canEdit()) { + if ($this->isInitialEdit()) + return $this->viewSource(); + $tokens['PAGE_LOCKED_MESSAGE'] = $this->getLockedMessage(); + } + elseif ($this->editaction == 'save') { + if ($this->savePage()) + return true; // Page saved. + $saveFailed = true; + } + + if ($saveFailed || $this->isConcurrentUpdate()) + { + // Get the text of the original page, and the two conflicting edits + // The diff class takes arrays as input. So retrieve content as + // an array, or convert it as necesary. + $orig = $this->page->getRevision($this->_currentVersion); + $this_content = explode("\n", $this->_content); + $other_content = $this->current->getContent(); + include_once("lib/diff.php"); + $diff2 = new Diff($other_content, $this_content); + $context_lines = max(4, count($other_content) + 1, + count($this_content) + 1); + $fmt = new BlockDiffFormatter($context_lines); + $this->_content = $fmt->format($diff2); + $this->_currentVersion = $this->current->getVersion(); + $this->version = $this->_currentVersion; + $tokens['CONCURRENT_UPDATE_MESSAGE'] = $this->getConflictMessage(); + } + + if ($this->editaction == 'preview') + $tokens['PREVIEW_CONTENT'] = $this->getPreview(); // FIXME: convert to _MESSAGE? + + // FIXME: NOT_CURRENT_MESSAGE? + + $tokens = array_merge($tokens, $this->getFormElements()); + + return $this->output('editpage', _("Merge and Edit: %s"), $tokens); // FIXME: this doesn't display + } + + function output ($template, $title_fs, $tokens) { + $selected = &$this->selected; + $current = &$this->current; + + if ($selected && $selected->getVersion() != $current->getVersion()) { + $rev = $selected; + $pagelink = WikiLink($selected); + } + else { + $rev = $current; + $pagelink = WikiLink($this->page); + } + + $title = new FormattedText ($title_fs, $pagelink); + $template = Template($template, $tokens); + + //GeneratePage($template, $title, $rev); + PrintXML($template); + return true; + } + function getConflictMessage () { + $message = HTML(HTML::p(fmt("Some of the changes could not automatically be combined. Please look for sections beginning with '%s', and ending with '%s'. You will need to edit those sections by hand before you click Save.", + "<<<<<<<", + "======="), + HTML::p(_("Please check it through before saving.")))); + return $message; + } +} + +/** + $Log$ + Revision 1.51 2003/01/03 02:43:26 carstenklapp + New class LoadFileConflictPageEditor, for merging / comparing a loaded + pgsrc file with an existing page. + + */ + // Local Variables: // mode: php |