[gatewiki-commits] SF.net SVN: gatewiki:[1782] trunk/cow/grails-app

View: New views
1 Messages — Rating Filter:   Alert me  

[gatewiki-commits] SF.net SVN: gatewiki:[1782] trunk/cow/grails-app

by ian_roberts :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Revision: 1782
          http://gatewiki.svn.sourceforge.net/gatewiki/?rev=1782&view=rev
Author:   ian_roberts
Date:     2009-10-30 13:45:47 +0000 (Fri, 30 Oct 2009)

Log Message:
-----------
Report YAM parsing errors to the user when they try and preview or save a
malformed YAM file.  We currently don't allow save when there are parse errors,
maybe it would be better to add an "are you sure" state and let a user save the
file anyway?

Parse errors are reported just as the message from the ParsingProblem object,
which is ugly and full of JavaCC stuff ("expected one of <EOF> ...  <tableEnd>
...") but better than nothing.  Can be made prettier later.

Modified Paths:
--------------
    trunk/cow/grails-app/controllers/PageController.groovy
    trunk/cow/grails-app/services/PageService.groovy
    trunk/cow/grails-app/views/page/edit/edit.gsp
    trunk/cow/grails-app/views/page/edit/preview.gsp

Modified: trunk/cow/grails-app/controllers/PageController.groovy
===================================================================
--- trunk/cow/grails-app/controllers/PageController.groovy 2009-10-30 13:43:12 UTC (rev 1781)
+++ trunk/cow/grails-app/controllers/PageController.groovy 2009-10-30 13:45:47 UTC (rev 1782)
@@ -518,9 +518,13 @@
       action {
         log.debug("editFlow: doing save")
         pageService.saveEdit(flow.asMap())
-        if(flow.editedFileUpdated)
+        if(flow.editedFileUpdated) {
           return updates()
+        }
 
+        if(flow.parseErrors) {
+          return parseErrors()
+        }
 
         // only if user has set it to true
         if(conf.thirdparty && conf.solr.run) {
@@ -546,6 +550,9 @@
       on("updates") {
         log.debug("save -> edit")
       }.to "edit"
+      on("parseErrors") {
+        log.debug("YAM parse errors: save -> edit")
+      }.to "edit"
       on(Exception).to "errorExit"
     } // save
 

Modified: trunk/cow/grails-app/services/PageService.groovy
===================================================================
--- trunk/cow/grails-app/services/PageService.groovy 2009-10-30 13:43:12 UTC (rev 1781)
+++ trunk/cow/grails-app/services/PageService.groovy 2009-10-30 13:45:47 UTC (rev 1782)
@@ -348,6 +348,11 @@
       overwrite(flow.editYamFile, flow.editOutput, !(flow.rich))
       yamService.generate(flow.editYamFile, true, flow)
       flow.pageBody = FileUtils.getBody(flow.editYamFile.htmlFile.text)
+      flow.parseErrors = flow.editYamFile.parseTree?.errors?.collect { it.message }
+      flow.parseWarnings = flow.editYamFile.parseTree?.warnings?.collect { it.message }
+      if(flow.parseErrors) {
+        log.error("Parse errors detected: ${flow.parseErrors}")
+      }
     } else {                    // non-yam html or plain text
       overwrite(flow, flow.editFile, flow.editOutput) // overwrite edit file
       flow.pageBody = flow.editOutput           // set up body for show
@@ -364,6 +369,12 @@
       // overwrite the edit file and regenerate
       overwrite(flow.editYamFile, flow.editOutput, (flow.rich) ? false : true)
       yamService.generate(flow.editYamFile, true, flow)
+      flow.parseErrors = flow.editYamFile.parseTree?.errors?.collect { it.message }
+      flow.parseWarnings = flow.editYamFile.parseTree?.warnings?.collect { it.message }
+      // stop if parse errors
+      if(flow.parseErrors) {
+        return
+      }
     // non-yam html or plain text
     } else {
       overwrite(flow, flow.editFile, flow.editOutput) // overwrite edit file

Modified: trunk/cow/grails-app/views/page/edit/edit.gsp
===================================================================
--- trunk/cow/grails-app/views/page/edit/edit.gsp 2009-10-30 13:43:12 UTC (rev 1781)
+++ trunk/cow/grails-app/views/page/edit/edit.gsp 2009-10-30 13:45:47 UTC (rev 1782)
@@ -13,6 +13,17 @@
 
       <g:render template="/messages" model="${pageScope.variables}" />
 
+      <g:if test="${parseErrors}">
+        <!-- YAM parse errors -->
+        <div class="errors">
+          <ul>
+            <g:each in="${parseErrors}">
+              <li><pre>${it.encodeAsHTML()}</pre></li>
+            </g:each>
+          </ul>
+        </div>
+      </g:if>
+
       <g:if test="${rich}">
         <form action="${pageURI(action:'edit', id:id, linkPath:pagePath, query:'rich=1')}"
             method="post">

Modified: trunk/cow/grails-app/views/page/edit/preview.gsp
===================================================================
--- trunk/cow/grails-app/views/page/edit/preview.gsp 2009-10-30 13:43:12 UTC (rev 1781)
+++ trunk/cow/grails-app/views/page/edit/preview.gsp 2009-10-30 13:45:47 UTC (rev 1782)
@@ -7,6 +7,17 @@
   <body>
       <g:render template="/messages" model="${pageScope.variables}" />
 
+      <g:if test="${parseErrors}">
+        <!-- YAM parse errors -->
+        <div class="errors">
+          <ul>
+            <g:each in="${parseErrors}">
+              <li><pre>${it.encodeAsHTML()}</pre></li>
+            </g:each>
+          </ul>
+        </div>
+      </g:if>
+
       <form action="${pageURI(action:'edit', id:id, linkPath:pagePath)}" method="post">
         <input type="hidden" name="execution" value="${request['flowExecutionKey']}" id="execution" />
       


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
gatewiki-commits mailing list
gatewiki-commits@...
https://lists.sourceforge.net/lists/listinfo/gatewiki-commits