src/main/java/com/gitblit/utils/JGitUtils.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/gitblit/wicket/GitBlitWebApp.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/gitblit/wicket/GitBlitWebApp.properties | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/gitblit/wicket/pages/EditFilePage.html | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/gitblit/wicket/pages/EditFilePage.java | ●●●●● patch | view | raw | blame | history |
src/main/java/com/gitblit/utils/JGitUtils.java
@@ -2727,5 +2727,22 @@ } return success; } /** * Returns true if the commit identified by commitId is at the tip of it's branch. * * @param repository * @param commitId * @return true if the given commit is the tip */ public static boolean isTip(Repository repository, String commitId) { try { RefModel tip = getBranch(repository, commitId); return (tip != null); } catch (Exception e) { LOGGER.error("Failed to determine isTip", e); } return false; } } src/main/java/com/gitblit/wicket/GitBlitWebApp.java
@@ -59,6 +59,7 @@ import com.gitblit.wicket.pages.ComparePage; import com.gitblit.wicket.pages.DocPage; import com.gitblit.wicket.pages.DocsPage; import com.gitblit.wicket.pages.EditFilePage; import com.gitblit.wicket.pages.EditMilestonePage; import com.gitblit.wicket.pages.EditRepositoryPage; import com.gitblit.wicket.pages.EditTicketPage; @@ -230,6 +231,7 @@ // setup the markup document urls mount("/docs", DocsPage.class, "r", "h"); mount("/doc", DocPage.class, "r", "h", "f"); mount("/editfile", EditFilePage.class, "r", "h", "f"); // federation urls mount("/proposal", ReviewProposalPage.class, "t"); src/main/java/com/gitblit/wicket/GitBlitWebApp.properties
@@ -770,4 +770,9 @@ gb.filestoreStats = Filestore contains {0} files with a total size of {1}. ({2} remaining) gb.statusChangedOn = status changed on gb.statusChangedBy = status changed by gb.filestoreHelp = How to use the Filestore? gb.filestoreHelp = How to use the Filestore? gb.editFile = edit file gb.continueEditing = Continue Editing gb.commitChanges = Commit Changes gb.fileNotMergeable = Unable to commit {0}. This file can not be automatically merged. gb.fileCommitted = Successfully committed {0}. src/main/java/com/gitblit/wicket/pages/EditFilePage.html
@@ -34,8 +34,8 @@ <textarea style="width:100%; resize:none" wicket:id="commitMessage"></textarea> </div> <div class="modal-footer"> <a href="#" data-dismiss="modal" class="btn">Continue editing</a> <a href="#" onclick="commitChanges()" class="btn btn-primary">Commit changes</a> <a href="#" data-dismiss="modal" class="btn"><wicket:message key="gb.continueEditing"></wicket:message></a> <a href="#" onclick="commitChanges()" class="btn btn-primary"><wicket:message key="gb.commitChanges"></wicket:message></a> </div> </div> </form> src/main/java/com/gitblit/wicket/pages/EditFilePage.java
@@ -17,6 +17,7 @@ import java.io.IOException; import java.text.MessageFormat; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -51,7 +52,7 @@ import com.gitblit.wicket.MarkupProcessor.MarkupDocument; import com.gitblit.wicket.WicketUtils; @CacheControl(LastModified.BOOT) @CacheControl(LastModified.REPOSITORY) public class EditFilePage extends RepositoryPage { public EditFilePage(final PageParameters params) { @@ -96,9 +97,9 @@ Fragment fragment; String displayedCommitId = commit.getId().getName(); MarkupDocument markupDoc = processor.parse(repositoryName, displayedCommitId, documentPath, markupText); logger.info("Loading Edit File page: " + displayedCommitId); logger.trace("Loading Edit File page: " + displayedCommitId); if (currentUser.canEdit(getRepositoryModel())) { if (currentUser.canEdit(getRepositoryModel()) && JGitUtils.isTip(getRepository(), objectId.toString())) { final Model<String> documentContent = new Model<String>(markupDoc.markup); final Model<String> commitMessage = new Model<String>("Document update"); @@ -112,7 +113,6 @@ @Override protected void onSubmit() { final Repository repository = getRepository(); final String document = documentContent.getObject(); final String message = commitMessage.getObject(); @@ -125,7 +125,7 @@ try { ObjectId docAtLoad = getRepository().resolve(commitIdAtLoad.getObject()); logger.info("Commiting Edit File page: " + commitIdAtLoad.getObject()); logger.trace("Commiting Edit File page: " + commitIdAtLoad.getObject()); DirCache index = DirCache.newInCore(); DirCacheBuilder builder = index.builder(); @@ -156,12 +156,12 @@ } if (success == false) { EditFilePage.this.error("Unable to commit document " + path, false); getSession().error(MessageFormat.format(getString("gb.fileNotMergeable"),path)); return; } getSession().info(MessageFormat.format(getString("gb.fileCommitted"),path)); setResponsePage(EditFilePage.class, params); return; } }; @@ -197,12 +197,12 @@ fragment.add(new ExternalLink("rawLink", rawUrl)); add(fragment); } @Override protected String getPageName() { return getString("gb.docs"); return getString("gb.editFile"); } @Override @@ -212,7 +212,7 @@ @Override protected Class<? extends BasePage> getRepoNavPageClass() { return DocsPage.class; return EditFilePage.class; }