Browse Source

use case show-task 'implemented' for prototype, some renaming.

tj 8 years ago
parent
commit
153bd5502d

+ 29 - 2
controller/bugpile-controller.el

@@ -27,11 +27,12 @@
 (defun bugpile-controller-dispatcher-handler (httpcon)
   "Dispatch requests to the Bugpile application."
   (elnode-log-access "bugpile-controller" httpcon)
+  (message "dispatcher-handler httpcon: %s" httpcon)
   (elnode-dispatcher httpcon
                      (iorg-projects-get-project-urls "bugpile")))
 
 (defun bugpile-controller-index-handler (httpcon)
-  "Serves the start-page of the Bugpile application"
+  "Serve the start-page of the Bugpile application"
   (elnode-log-access "bugpile-controller" httpcon)
   (elnode-send-file httpcon
                     (iorg-controller--org-to-html
@@ -52,6 +53,32 @@
   ;;                      "bugpile-index.org"))))
 )
 
+(defun bugpile-controller-show-task-handler (httpcon)
+  "Serve a page with edit button that shows an existing task."
+  (elnode-log-access "bugpile-controller" httpcon)
+  (message "show-task-handler httpcon: %s" httpcon)
+  (elnode-send-file httpcon
+                    (iorg-controller--org-to-html
+                     (concat
+                      (iorg-projects-get-project-info
+                       "bugpile" :view)
+                       "bugpile-view-show-task.org"))))
+
+
+
+(defun bugpile-controller-edit-task-handler (httpcon)
+  "Serve a form page for editing the data of an existing task,
+process user edits, and present the modified task to the user."
+  (elnode-log-access "bugpile-controller" httpcon)  
+  (elnode-send-file httpcon
+                    (iorg-controller--org-to-html
+                     (concat
+                      (iorg-projects-get-project-info
+                       "bugpile" :view)
+                       "bugpile-view-edit-task.org"))))
+
+
+
 (defun bugpile-controller-search-tasklist-handler (httpcon)
   "Serve a form page for query composition, process the user
 query and present the result list."
@@ -61,7 +88,7 @@ query and present the result list."
                      (concat
                       (iorg-projects-get-project-info
                        "bugpile" :view)
-                       "bugpile-view-search-task-list.org"))))
+                       "bugpile-view-search-tasklist.org"))))
 
 
 (defun bugpile-controller-take-action-on-selected-tasks-handler (httpcon)

+ 41 - 5
doc/gsoc/midterm-eval.org

@@ -107,7 +107,8 @@ evaluate
    '(:task-priority . "low"))
 #+end_src
 
-find the class in /bugpile/objects/classes/, it should look like this:
+find the class in /bugpile/objects/classes/, it should look similar to
+this:
 
 #+begin_src org
 #+Title: The class definition for 'feature'
@@ -303,13 +304,48 @@ after re-launch (and most likely restart of Emacs), try the following:
 create a new one on you machine with org-id-get-create
 
 3. use this new ID in the header of the dynamic block in file
-bugpile-view-take-action-on-selected-tasks.org in the
-/bugpile/view/take-action-on-selected-tasks/ directory.
+bugpile-view-take-action-on-selected-tasks.org in the /bugpile/view/
+directory.
 4. update the dblock with org-dblock-update
-5. open http://localhost:8008 in a browser again and follow the
-   'search tasklist' and then 'result list' links. 
+5. open http://localhost:8008 in a browser again and follow first the
+   'search tasklist' and then 'result list' links.
 *** edit task (more or less)
+1. From the index page or from the take-action-on-selected-task
+   follow link 'show-task'. 
+2. copy this example bug into your /bugpile/objects/bug-obj.org file.
+   again, you might need to re-produce the ID and copy and paste the
+   new one into the :id header argument of the dblocks in
+   /bugpile/view/bugpile-view-show-task.org and
+   /bugpile/view/bugpile-view-edit-task.org.
+
+
+#+begin_src org
+* TODO bug                                                          :foo:bar:
+  :PROPERTIES:
+  :COLUMNS:  %40ITEM(Task) %TODO %task-author %task-opened %task-project %bug-need-skills %TAGS
+  :object-foo: bug task html obj
+  :html-form: iorg-controller-edit-handler
+  :html-button-value: submit
+  :task-author: tj
+  :task-closed: nil
+  :task-opened: 09-07-2012
+  :task-reopened: nil
+  :task-assigned-to: nil
+  :task-project: org-agenda
+  :bug-is-upstream: no
+  :bug-need-skills: intermediate
+  :ID:       2f822a1e-4bb4-43be-bec4-b0c5caaa42a5
+  :END:
+
+Trying to change the agenda-file-list leads to problems. First, there
+is an error message like 'file list can't be a single directory', but
+it can. Second, the old directory and the new directory for the
+agenda-files are concatenated to an unvalid directory (instead of the
+new replacing the old).
 
+But this may not be a bug, because there might be some undetected
+configuration conflict somewhere that causes the misbehaviour.  
+#+end_src
 
 
 

+ 25 - 12
iorg/lisp/iorg-controller.el

@@ -261,25 +261,38 @@ servers."
 
 ;;; Public Functions (non-interactive)              
 
-(defun iorg-controller-edit-handler (httpcon)
-  "Generic handler for http requests to edit the View page.
 
-This functions uses the information in HTTPCON to return the page
-from which the request was sent in editable form.")
+;;; Functions for Dynamic Blocks
 
-(defun iorg-controller-send-handler (httpcon)
-  "Generic handler for http requests that send edited page data.
+(defun org-dblock-write:bugpile-view-show-task (params)
+  "Update dynamic block in file bugpile-view-show-task.org"
+  (let ((id (plist-get params :id)))
+    ;; (insert "\n#+begin_src org \n")
+    (save-excursion
+      (org-id-goto id)
+      (org-copy-subtree))
+    (yank)))
+    ;; (insert "#+end_src")))
 
-This functions uses the information in HTTPCON to store the
-edited data and return the page in actualisized form.")
 
-(defun iorg-controller-reset-handler (httpcon)
-  "Generic handler for http requests to reset the edited page.
+;;; Public Functions (obsolete?)              
 
-This functions uses the information in HTTPCON to reset the edited page to its original state before the editied information is send to the server.")
+;; (defun iorg-controller-edit-handler (httpcon)
+;;   "Generic handler for http requests to edit the View page.
 
+;; This functions uses the information in HTTPCON to return the page
+;; from which the request was sent in editable form.")
 
-;;; Public Functions (obsolete?)              
+;; (defun iorg-controller-send-handler (httpcon)
+;;   "Generic handler for http requests that send edited page data.
+
+;; This functions uses the information in HTTPCON to store the
+;; edited data and return the page in actualisized form.")
+
+;; (defun iorg-controller-reset-handler (httpcon)
+;;   "Generic handler for http requests to reset the edited page.
+
+;; This functions uses the information in HTTPCON to reset the edited page to its original state before the editied information is send to the server.")
 
 ;; (defun iorg-change-state-handler (httpcon)
 ;;   "Called by the elnode form handler to update task state."

+ 4 - 0
iorg/lisp/iorg-projects.el

@@ -120,6 +120,10 @@ as 'http://HOST:PORT', e.g. 'http://localhost:8008'"
                    bugpile-controller-open-new-task-handler)
                   ("^search-tasklist/$" .
                    bugpile-controller-search-tasklist-handler)
+                  ("^show-task/$" .
+                   bugpile-controller-show-task-handler)
+                  ("^edit-task/$" .
+                   bugpile-controller-edit-task-handler)
                   ("^take-action-on-selected-tasks/$" .
                    bugpile-controller-take-action-on-selected-tasks-handler)
                   ))

+ 30 - 2
objects/bug-obj.org

@@ -1,6 +1,6 @@
 #+Title: The objects file for class 'bug'
 
-* TODO bug                                                          :bug:iorg:
+* TODO bug                                                          :2bug:iorg:
   :PROPERTIES:
   :object-foo: bug task html obj
   :html-form: iorg-controller-edit-handler
@@ -34,8 +34,36 @@
   :END:
 
 
+* TODO bug                                                          :foo:bar:
+  :PROPERTIES:
+  :COLUMNS:  %40ITEM(Task) %TODO %task-author %task-opened %task-project %bug-need-skills %TAGS
+  :object-foo: bug task html obj
+  :html-form: iorg-controller-edit-handler
+  :html-button-value: submit
+  :task-author: tj
+  :task-closed: nil
+  :task-opened: 09-07-2012
+  :task-reopened: nil
+  :task-assigned-to: nil
+  :task-project: org-agenda
+  :bug-is-upstream: no
+  :bug-need-skills: intermediate
+  :ID:       2f822a1e-4bb4-43be-bec4-b0c5caaa42a5
+  :END:
+
+Trying to change the agenda-file-list leads to problems. First, there
+is an error message like 'file list can't be a single directory', but
+it can. Second, the old directory and the new directory for the
+agenda-files are concatenated to an unvalid directory (instead of the
+new replacing the old).
+
+But this may not be a bug, because there might be some undetected
+configuration conflict somewhere that causes the misbehaviour.  
+
+
+
+
 * File Local Variables (iOrg class properties)              :file_local_vars:
-  [2012-07-09 Mo 03:41]
 # Local Variables:
 # object-foo_ALL: "bug task html obj"
 # task-priority_ALL: "urgent high medium low"

+ 144 - 0
view/bugpile-view-edit-task.html

@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+	       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
+<head>
+<title>Bugpile - Edit Task</title>
+
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="title" content="Bugpile - Edit Task"/>
+<meta name="generator" content="Org-mode"/>
+<meta name="generated" content="2012-07-09 17:15:31 CEST"/>
+<meta name="author" content="nil"/>
+<meta name="description" content="nil"/>
+<meta name="keywords" content="nil"/>
+<style type="text/css">
+ <!--/*--><![CDATA[/*><!--*/
+  html { font-family: Times, serif; font-size: 12pt; }
+  .title  { text-align: center; }
+  .todo   { color: red; }
+  .done   { color: green; }
+  .tag    { background-color: #add8e6; font-weight:normal }
+  .target { }
+  .timestamp { color: #bebebe; }
+  .timestamp-kwd { color: #5f9ea0; }
+  .right  {margin-left:auto; margin-right:0px;  text-align:right;}
+  .left   {margin-left:0px;  margin-right:auto; text-align:left;}
+  .center {margin-left:auto; margin-right:auto; text-align:center;}
+  p.verse { margin-left: 3% }
+  pre {
+	border: 1pt solid #AEBDCC;
+	background-color: #F3F5F7;
+	padding: 5pt;
+	font-family: courier, monospace;
+        font-size: 90%;
+        overflow:auto;
+  }
+  table { border-collapse: collapse; }
+  td, th { vertical-align: top;  }
+  th.right  { text-align:center;  }
+  th.left   { text-align:center;   }
+  th.center { text-align:center; }
+  td.right  { text-align:right;  }
+  td.left   { text-align:left;   }
+  td.center { text-align:center; }
+  dt { font-weight: bold; }
+  div.figure { padding: 0.5em; }
+  div.figure p { text-align: center; }
+  div.inlinetask {
+    padding:10px;
+    border:2px solid gray;
+    margin:10px;
+    background: #ffffcc;
+  }
+  textarea { overflow-x: auto; }
+  .linenr { font-size:smaller }
+  .code-highlighted {background-color:#ffff00;}
+  .org-info-js_info-navigation { border-style:none; }
+  #org-info-js_console-label { font-size:10px; font-weight:bold;
+                               white-space:nowrap; }
+  .org-info-js_search-highlight {background-color:#ffff00; color:#000000;
+                                 font-weight:bold; }
+  /*]]>*/-->
+</style><style type="text/css">#outline-container-introduction{ clear:both; }</style>
+<script type="text/javascript">
+<!--/*--><![CDATA[/*><!--*/
+ function CodeHighlightOn(elem, id)
+ {
+   var target = document.getElementById(id);
+   if(null != target) {
+     elem.cacheClassElem = elem.className;
+     elem.cacheClassTarget = target.className;
+     target.className = "code-highlighted";
+     elem.className   = "code-highlighted";
+   }
+ }
+ function CodeHighlightOff(elem, id)
+ {
+   var target = document.getElementById(id);
+   if(elem.cacheClassElem)
+     elem.className = elem.cacheClassElem;
+   if(elem.cacheClassTarget)
+     target.className = elem.cacheClassTarget;
+ }
+/*]]>*///-->
+</script><script type="text/javascript" src="http://orgmode.org/mathjax/MathJax.js">
+<!--/*--><![CDATA[/*><!--*/
+    MathJax.Hub.Config({
+        // Only one of the two following lines, depending on user settings
+        // First allows browser-native MathML display, second forces HTML/CSS
+        //  config: ["MMLorHTML.js"], jax: ["input/TeX"],
+            jax: ["input/TeX", "output/HTML-CSS"],
+        extensions: ["tex2jax.js","TeX/AMSmath.js","TeX/AMSsymbols.js",
+                     "TeX/noUndefined.js"],
+        tex2jax: {
+            inlineMath: [ ["\\(","\\)"] ],
+            displayMath: [ ['$$','$$'], ["\\[","\\]"], ["\\begin{displaymath}","\\end{displaymath}"] ],
+            skipTags: ["script","noscript","style","textarea","pre","code"],
+            ignoreClass: "tex2jax_ignore",
+            processEscapes: false,
+            processEnvironments: true,
+            preview: "TeX"
+        },
+        showProcessingMessages: true,
+        displayAlign: "center",
+        displayIndent: "2em",
+
+        "HTML-CSS": {
+             scale: 100,
+             availableFonts: ["STIX","TeX"],
+             preferredFont: "TeX",
+             webFont: "TeX",
+             imageFont: "TeX",
+             showMathMenu: true,
+        },
+        MMLorHTML: {
+             prefer: {
+                 MSIE:    "MML",
+                 Firefox: "MML",
+                 Opera:   "HTML",
+                 other:   "HTML"
+             }
+        }
+    });
+/*]]>*///-->
+</script>
+</head>
+<body>
+<div id="content">
+<h1 class="title">Bugpile - Edit Task</h1>
+<p>
+<i>Edit an existing Task (Bug-Report or Feature-Request)</i></p>
+
+<div id="outline-container-3675e953-7f75-4319-a1e5-dfb09cadea1f" class="outline-2">
+<h2 id="3675e953-7f75-4319-a1e5-dfb09cadea1f"><a id="sec-1" name="sec-1"></a>Edit Task</h2>
+<div class="outline-text-2" id="text-3675e953-7f75-4319-a1e5-dfb09cadea1f">
+</div>
+</div>
+
+</div>
+<div id="postamble"><a href="http://validator.w3.org/check?uri=referer">Validate XHTML 1.0</a>
+
+</div>
+</body>
+</html>

view/edit-task/bugpile-edit-task-view.org → view/bugpile-view-edit-task.org


+ 188 - 0
view/bugpile-view-index.html

@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+	       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
+<head>
+<title>Bugpile - A Bugtracker for Org Mode</title>
+
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="title" content="Bugpile - A Bugtracker for Org Mode"/>
+<meta name="generator" content="Org-mode"/>
+<meta name="generated" content="2012-07-09 16:40:22 CEST"/>
+<meta name="author" content="nil"/>
+<meta name="description" content="nil"/>
+<meta name="keywords" content="nil"/>
+<style type="text/css">
+ <!--/*--><![CDATA[/*><!--*/
+  html { font-family: Times, serif; font-size: 12pt; }
+  .title  { text-align: center; }
+  .todo   { color: red; }
+  .done   { color: green; }
+  .tag    { background-color: #add8e6; font-weight:normal }
+  .target { }
+  .timestamp { color: #bebebe; }
+  .timestamp-kwd { color: #5f9ea0; }
+  .right  {margin-left:auto; margin-right:0px;  text-align:right;}
+  .left   {margin-left:0px;  margin-right:auto; text-align:left;}
+  .center {margin-left:auto; margin-right:auto; text-align:center;}
+  p.verse { margin-left: 3% }
+  pre {
+	border: 1pt solid #AEBDCC;
+	background-color: #F3F5F7;
+	padding: 5pt;
+	font-family: courier, monospace;
+        font-size: 90%;
+        overflow:auto;
+  }
+  table { border-collapse: collapse; }
+  td, th { vertical-align: top;  }
+  th.right  { text-align:center;  }
+  th.left   { text-align:center;   }
+  th.center { text-align:center; }
+  td.right  { text-align:right;  }
+  td.left   { text-align:left;   }
+  td.center { text-align:center; }
+  dt { font-weight: bold; }
+  div.figure { padding: 0.5em; }
+  div.figure p { text-align: center; }
+  div.inlinetask {
+    padding:10px;
+    border:2px solid gray;
+    margin:10px;
+    background: #ffffcc;
+  }
+  textarea { overflow-x: auto; }
+  .linenr { font-size:smaller }
+  .code-highlighted {background-color:#ffff00;}
+  .org-info-js_info-navigation { border-style:none; }
+  #org-info-js_console-label { font-size:10px; font-weight:bold;
+                               white-space:nowrap; }
+  .org-info-js_search-highlight {background-color:#ffff00; color:#000000;
+                                 font-weight:bold; }
+  /*]]>*/-->
+</style><style type="text/css">#outline-container-introduction{ clear:both; }</style>
+<script type="text/javascript">
+<!--/*--><![CDATA[/*><!--*/
+ function CodeHighlightOn(elem, id)
+ {
+   var target = document.getElementById(id);
+   if(null != target) {
+     elem.cacheClassElem = elem.className;
+     elem.cacheClassTarget = target.className;
+     target.className = "code-highlighted";
+     elem.className   = "code-highlighted";
+   }
+ }
+ function CodeHighlightOff(elem, id)
+ {
+   var target = document.getElementById(id);
+   if(elem.cacheClassElem)
+     elem.className = elem.cacheClassElem;
+   if(elem.cacheClassTarget)
+     target.className = elem.cacheClassTarget;
+ }
+/*]]>*///-->
+</script><script type="text/javascript" src="http://orgmode.org/mathjax/MathJax.js">
+<!--/*--><![CDATA[/*><!--*/
+    MathJax.Hub.Config({
+        // Only one of the two following lines, depending on user settings
+        // First allows browser-native MathML display, second forces HTML/CSS
+        //  config: ["MMLorHTML.js"], jax: ["input/TeX"],
+            jax: ["input/TeX", "output/HTML-CSS"],
+        extensions: ["tex2jax.js","TeX/AMSmath.js","TeX/AMSsymbols.js",
+                     "TeX/noUndefined.js"],
+        tex2jax: {
+            inlineMath: [ ["\\(","\\)"] ],
+            displayMath: [ ['$$','$$'], ["\\[","\\]"], ["\\begin{displaymath}","\\end{displaymath}"] ],
+            skipTags: ["script","noscript","style","textarea","pre","code"],
+            ignoreClass: "tex2jax_ignore",
+            processEscapes: false,
+            processEnvironments: true,
+            preview: "TeX"
+        },
+        showProcessingMessages: true,
+        displayAlign: "center",
+        displayIndent: "2em",
+
+        "HTML-CSS": {
+             scale: 100,
+             availableFonts: ["STIX","TeX"],
+             preferredFont: "TeX",
+             webFont: "TeX",
+             imageFont: "TeX",
+             showMathMenu: true,
+        },
+        MMLorHTML: {
+             prefer: {
+                 MSIE:    "MML",
+                 Firefox: "MML",
+                 Opera:   "HTML",
+                 other:   "HTML"
+             }
+        }
+    });
+/*]]>*///-->
+</script>
+</head>
+<body>
+<div id="content">
+<h1 class="title">Bugpile - A Bugtracker for Org Mode</h1>
+<p>
+<i>Bug-Reports and Feature-Requests for GNU Emacs Org Mode</i></p>
+
+<div id="outline-container-1" class="outline-2">
+<h2 id="sec-1">Tasks (Bugs and Features)</h2>
+<div id="outline-container-1-1" class="outline-3">
+<h3 id="sec-1-1"><a href="http://localhost:8008/open-new-task" >Open New Task</a></h3>
+<div class="outline-text-3" id="text-1-1">
+<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<caption></caption>
+
+<colgroup>
+<col class="left"/>
+
+<col class="left"/>
+</colgroup>
+<tbody>
+<tr>
+<td class="left">How to write a good bug report</td>
+<td class="left"><a href="http://localhost:8009/guidelines.html" >guidelines</a></td>
+</tr>
+
+<tr>
+<td class="left">Report a bug or request a feature</td>
+<td class="left"><a href="http://localhost:8008/open-new-task" >open new task</a></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+
+<div id="outline-container-1-2" class="outline-3">
+<h3 id="sec-1-2"><a href="http://localhost:8008/search-tasklist" >Search Tasklist</a></h3>
+<div class="outline-text-3" id="text-1-2">
+<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<caption></caption>
+
+<colgroup>
+<col class="left"/>
+
+<col class="left"/>
+</colgroup>
+<tbody>
+<tr>
+<td class="left">Search and edit bug reports and feature requests</td>
+<td class="left"><a href="http://localhost:8008/search-tasklist" > search tasklist</a></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
+
+</div>
+<div id="postamble"><a href="http://validator.w3.org/check?uri=referer">Validate XHTML 1.0</a>
+
+</div>
+</body>
+</html>

view/open-new-task/bugpile-view-open-new-task.org → view/bugpile-view-open-new-task.org


+ 190 - 0
view/bugpile-view-search-tasklist.html

@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+	       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
+<head>
+<title>Bugpile - Search Tasklist</title>
+
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="title" content="Bugpile - Search Tasklist"/>
+<meta name="generator" content="Org-mode"/>
+<meta name="generated" content="2012-07-09 16:40:43 CEST"/>
+<meta name="author" content="nil"/>
+<meta name="description" content="nil"/>
+<meta name="keywords" content="nil"/>
+<style type="text/css">
+ <!--/*--><![CDATA[/*><!--*/
+  html { font-family: Times, serif; font-size: 12pt; }
+  .title  { text-align: center; }
+  .todo   { color: red; }
+  .done   { color: green; }
+  .tag    { background-color: #add8e6; font-weight:normal }
+  .target { }
+  .timestamp { color: #bebebe; }
+  .timestamp-kwd { color: #5f9ea0; }
+  .right  {margin-left:auto; margin-right:0px;  text-align:right;}
+  .left   {margin-left:0px;  margin-right:auto; text-align:left;}
+  .center {margin-left:auto; margin-right:auto; text-align:center;}
+  p.verse { margin-left: 3% }
+  pre {
+	border: 1pt solid #AEBDCC;
+	background-color: #F3F5F7;
+	padding: 5pt;
+	font-family: courier, monospace;
+        font-size: 90%;
+        overflow:auto;
+  }
+  table { border-collapse: collapse; }
+  td, th { vertical-align: top;  }
+  th.right  { text-align:center;  }
+  th.left   { text-align:center;   }
+  th.center { text-align:center; }
+  td.right  { text-align:right;  }
+  td.left   { text-align:left;   }
+  td.center { text-align:center; }
+  dt { font-weight: bold; }
+  div.figure { padding: 0.5em; }
+  div.figure p { text-align: center; }
+  div.inlinetask {
+    padding:10px;
+    border:2px solid gray;
+    margin:10px;
+    background: #ffffcc;
+  }
+  textarea { overflow-x: auto; }
+  .linenr { font-size:smaller }
+  .code-highlighted {background-color:#ffff00;}
+  .org-info-js_info-navigation { border-style:none; }
+  #org-info-js_console-label { font-size:10px; font-weight:bold;
+                               white-space:nowrap; }
+  .org-info-js_search-highlight {background-color:#ffff00; color:#000000;
+                                 font-weight:bold; }
+  /*]]>*/-->
+</style><style type="text/css">#outline-container-introduction{ clear:both; }</style>
+<script type="text/javascript">
+<!--/*--><![CDATA[/*><!--*/
+ function CodeHighlightOn(elem, id)
+ {
+   var target = document.getElementById(id);
+   if(null != target) {
+     elem.cacheClassElem = elem.className;
+     elem.cacheClassTarget = target.className;
+     target.className = "code-highlighted";
+     elem.className   = "code-highlighted";
+   }
+ }
+ function CodeHighlightOff(elem, id)
+ {
+   var target = document.getElementById(id);
+   if(elem.cacheClassElem)
+     elem.className = elem.cacheClassElem;
+   if(elem.cacheClassTarget)
+     target.className = elem.cacheClassTarget;
+ }
+/*]]>*///-->
+</script><script type="text/javascript" src="http://orgmode.org/mathjax/MathJax.js">
+<!--/*--><![CDATA[/*><!--*/
+    MathJax.Hub.Config({
+        // Only one of the two following lines, depending on user settings
+        // First allows browser-native MathML display, second forces HTML/CSS
+        //  config: ["MMLorHTML.js"], jax: ["input/TeX"],
+            jax: ["input/TeX", "output/HTML-CSS"],
+        extensions: ["tex2jax.js","TeX/AMSmath.js","TeX/AMSsymbols.js",
+                     "TeX/noUndefined.js"],
+        tex2jax: {
+            inlineMath: [ ["\\(","\\)"] ],
+            displayMath: [ ['$$','$$'], ["\\[","\\]"], ["\\begin{displaymath}","\\end{displaymath}"] ],
+            skipTags: ["script","noscript","style","textarea","pre","code"],
+            ignoreClass: "tex2jax_ignore",
+            processEscapes: false,
+            processEnvironments: true,
+            preview: "TeX"
+        },
+        showProcessingMessages: true,
+        displayAlign: "center",
+        displayIndent: "2em",
+
+        "HTML-CSS": {
+             scale: 100,
+             availableFonts: ["STIX","TeX"],
+             preferredFont: "TeX",
+             webFont: "TeX",
+             imageFont: "TeX",
+             showMathMenu: true,
+        },
+        MMLorHTML: {
+             prefer: {
+                 MSIE:    "MML",
+                 Firefox: "MML",
+                 Opera:   "HTML",
+                 other:   "HTML"
+             }
+        }
+    });
+/*]]>*///-->
+</script>
+</head>
+<body>
+<div id="content">
+<h1 class="title">Bugpile - Search Tasklist</h1>
+<p>
+<i>Search the Tasks (Bug-Reports or Feature-Requests)</i>
+<i>stored in Bugpile</i></p>
+
+<div id="outline-container-c2ff8888-632d-4ecd-850d-af6f9c620098" class="outline-2">
+<h2 id="c2ff8888-632d-4ecd-850d-af6f9c620098"><a id="sec-1" name="sec-1"></a>Search Tasklist</h2>
+<div class="outline-text-2" id="text-c2ff8888-632d-4ecd-850d-af6f9c620098">
+<p>
+Lets assume that this is a page with a HTML form that allows the user
+to build a query based on <span style="text-decoration:underline;">tags</span> and <span style="text-decoration:underline;">property values</span> of tasks. There
+might be a textfield for free text input and one or more html select
+boxes that allow the user to choose from a list of allowed values. </p>
+
+<p>
+Matching tags and properties is functionality already available in Org
+mode (org-tags-view), as well as constructing sparse trees from regexp
+searches (with org-occur).</p>
+
+<p>
+Thus, making all the iOrg object files in <i>bugpile/objects</i> members of
+the Org agenda-file-list enables selection of objects (that are
+nothing else but Org outline trees) by tag or property value or by
+regular expression search in the objects content. </p>
+
+<p>
+Its all there, but unfortunately there are a few unconveniences:</p>
+
+<ol>
+<li>Both functions mentioned above do not return a list of sub-trees
+they match but are called for side-effects. A deeper look into the
+search and matching mechanism seems neccesary to get similar
+functions to org-tags-view and org-occur that return a list of
+matched subtrees (or their IDs). 
+</li>
+<li>On a server exclusively used for one iOrg application its ok to
+define the applications object files as only Org agenda files. On a
+private machine it is not, since then all the Org mode agenda
+functionality is gone. Mixing private agenda files and e.g.
+bugpile object files in the agenda-file-list doesn't seem to be a
+good idea either. And changing the agenda files on the fly can
+become a real hassle with preserved old state, strange error
+messages and required Emacs re-start. An alternative variable that
+holds e.g. the bugpile-object-files and exists in parallel to the
+org-agenda-files seems neccesary. 
+</li>
+</ol>
+
+<p>
+Since both features, match functions that return the matched subtrees
+and a separate list of application-object-files, are not yet
+incorporated in bugpile, we cannot make use of Org modes power here
+and simply link to an (imaginary) <a href="http://localhost:8008/take-action-on-selected-tasks" >result list</a>. </p>
+</div>
+</div>
+
+</div>
+<div id="postamble"><a href="http://validator.w3.org/check?uri=referer">Validate XHTML 1.0</a>
+
+</div>
+</body>
+</html>

view/search-tasklist/bugpile-view-search-tasklist.org → view/bugpile-view-search-tasklist.org


+ 210 - 0
view/bugpile-view-show-task.html

@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+	       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
+<head>
+<title>Bugpile - Show Task</title>
+
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="title" content="Bugpile - Show Task"/>
+<meta name="generator" content="Org-mode"/>
+<meta name="generated" content="2012-07-09 17:13:52 CEST"/>
+<meta name="author" content="nil"/>
+<meta name="description" content="nil"/>
+<meta name="keywords" content="nil"/>
+<style type="text/css">
+ <!--/*--><![CDATA[/*><!--*/
+  html { font-family: Times, serif; font-size: 12pt; }
+  .title  { text-align: center; }
+  .todo   { color: red; }
+  .done   { color: green; }
+  .tag    { background-color: #add8e6; font-weight:normal }
+  .target { }
+  .timestamp { color: #bebebe; }
+  .timestamp-kwd { color: #5f9ea0; }
+  .right  {margin-left:auto; margin-right:0px;  text-align:right;}
+  .left   {margin-left:0px;  margin-right:auto; text-align:left;}
+  .center {margin-left:auto; margin-right:auto; text-align:center;}
+  p.verse { margin-left: 3% }
+  pre {
+	border: 1pt solid #AEBDCC;
+	background-color: #F3F5F7;
+	padding: 5pt;
+	font-family: courier, monospace;
+        font-size: 90%;
+        overflow:auto;
+  }
+  table { border-collapse: collapse; }
+  td, th { vertical-align: top;  }
+  th.right  { text-align:center;  }
+  th.left   { text-align:center;   }
+  th.center { text-align:center; }
+  td.right  { text-align:right;  }
+  td.left   { text-align:left;   }
+  td.center { text-align:center; }
+  dt { font-weight: bold; }
+  div.figure { padding: 0.5em; }
+  div.figure p { text-align: center; }
+  div.inlinetask {
+    padding:10px;
+    border:2px solid gray;
+    margin:10px;
+    background: #ffffcc;
+  }
+  textarea { overflow-x: auto; }
+  .linenr { font-size:smaller }
+  .code-highlighted {background-color:#ffff00;}
+  .org-info-js_info-navigation { border-style:none; }
+  #org-info-js_console-label { font-size:10px; font-weight:bold;
+                               white-space:nowrap; }
+  .org-info-js_search-highlight {background-color:#ffff00; color:#000000;
+                                 font-weight:bold; }
+  /*]]>*/-->
+</style><style type="text/css">#outline-container-introduction{ clear:both; }</style>
+<script type="text/javascript">
+<!--/*--><![CDATA[/*><!--*/
+ function CodeHighlightOn(elem, id)
+ {
+   var target = document.getElementById(id);
+   if(null != target) {
+     elem.cacheClassElem = elem.className;
+     elem.cacheClassTarget = target.className;
+     target.className = "code-highlighted";
+     elem.className   = "code-highlighted";
+   }
+ }
+ function CodeHighlightOff(elem, id)
+ {
+   var target = document.getElementById(id);
+   if(elem.cacheClassElem)
+     elem.className = elem.cacheClassElem;
+   if(elem.cacheClassTarget)
+     target.className = elem.cacheClassTarget;
+ }
+/*]]>*///-->
+</script><script type="text/javascript" src="http://orgmode.org/mathjax/MathJax.js">
+<!--/*--><![CDATA[/*><!--*/
+    MathJax.Hub.Config({
+        // Only one of the two following lines, depending on user settings
+        // First allows browser-native MathML display, second forces HTML/CSS
+        //  config: ["MMLorHTML.js"], jax: ["input/TeX"],
+            jax: ["input/TeX", "output/HTML-CSS"],
+        extensions: ["tex2jax.js","TeX/AMSmath.js","TeX/AMSsymbols.js",
+                     "TeX/noUndefined.js"],
+        tex2jax: {
+            inlineMath: [ ["\\(","\\)"] ],
+            displayMath: [ ['$$','$$'], ["\\[","\\]"], ["\\begin{displaymath}","\\end{displaymath}"] ],
+            skipTags: ["script","noscript","style","textarea","pre","code"],
+            ignoreClass: "tex2jax_ignore",
+            processEscapes: false,
+            processEnvironments: true,
+            preview: "TeX"
+        },
+        showProcessingMessages: true,
+        displayAlign: "center",
+        displayIndent: "2em",
+
+        "HTML-CSS": {
+             scale: 100,
+             availableFonts: ["STIX","TeX"],
+             preferredFont: "TeX",
+             webFont: "TeX",
+             imageFont: "TeX",
+             showMathMenu: true,
+        },
+        MMLorHTML: {
+             prefer: {
+                 MSIE:    "MML",
+                 Firefox: "MML",
+                 Opera:   "HTML",
+                 other:   "HTML"
+             }
+        }
+    });
+/*]]>*///-->
+</script>
+</head>
+<body>
+<div id="content">
+<h1 class="title">Bugpile - Show Task</h1>
+<p>
+<i>Show Task (Bug-Report or Feature-Request)</i></p>
+
+<div id="outline-container-e704e837-62f8-485d-8532-9ca0b6a04ad0" class="outline-2">
+<h2 id="e704e837-62f8-485d-8532-9ca0b6a04ad0"><a id="sec-1" name="sec-1"></a>Task</h2>
+<div class="outline-text-2" id="text-e704e837-62f8-485d-8532-9ca0b6a04ad0">
+<p>
+The task in column view (is it possible to include the content text?):</p>
+
+<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<caption></caption>
+
+<colgroup>
+<col class="left"/>
+
+<col class="left"/>
+
+<col class="left"/>
+
+<col class="right"/>
+
+<col class="left"/>
+
+<col class="left"/>
+
+<col class="left"/>
+</colgroup>
+<thead>
+<tr>
+<th scope="col" class="left">Task</th>
+<th scope="col" class="left">TODO</th>
+<th scope="col" class="left">task-author</th>
+<th scope="col" class="right">task-opened</th>
+<th scope="col" class="left">task-project</th>
+<th scope="col" class="left">bug-need-skills</th>
+<th scope="col" class="left">TAGS</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="left">* bug</td>
+<td class="left">TODO</td>
+<td class="left">tj</td>
+<td class="right">09-07-2012</td>
+<td class="left">org-agenda</td>
+<td class="left">intermediate</td>
+<td class="left">:foo:bar:</td>
+</tr>
+</tbody>
+</table>
+
+
+<p>
+The task in outline view:</p>
+</div>
+</div>
+<div id="outline-container-2f822a1e-4bb4-43be-bec4-b0c5caaa42a5" class="outline-2">
+<h2 id="2f822a1e-4bb4-43be-bec4-b0c5caaa42a5"><a id="sec-2" name="sec-2"></a><span class="todo TODO">TODO</span> bug&nbsp;&nbsp;&nbsp;<span class="tag"><span class="foo">foo</span>&nbsp;<span class="bar">bar</span></span></h2>
+<div class="outline-text-2" id="text-2f822a1e-4bb4-43be-bec4-b0c5caaa42a5">
+<p>
+Trying to change the agenda-file-list leads to problems. First, there
+is an error message like 'file list can't be a single directory', but
+it can. Second, the old directory and the new directory for the
+agenda-files are concatenated to an unvalid directory (instead of the
+new replacing the old).</p>
+
+<p>
+But this may not be a bug, because there might be some undetected
+configuration conflict somewhere that causes the misbehaviour.  </p>
+
+<p>
+<a href="http://localhost:8008/edit-task" >Edit</a> this task.</p>
+</div>
+</div>
+
+</div>
+<div id="postamble"><a href="http://validator.w3.org/check?uri=referer">Validate XHTML 1.0</a>
+
+</div>
+</body>
+</html>

+ 81 - 0
view/bugpile-view-show-task.org

@@ -0,0 +1,81 @@
+#+OPTIONS:    H:nil num:nil toc:nil \n:nil @:t ::t |:t ^:{} -:t f:t *:t TeX:t LaTeX:t skip:nil d:(HIDE) tags:not-in-toc
+#+OPTIONS:    author:nil email:nil creator:nil timestamp:nil
+#+STARTUP:    align fold nodlcheck hidestars oddeven lognotestate hideblocks
+#+SEQ_TODO:   TODO(t) INPROGRESS(i) WAITING(w@) | DONE(d) CANCELED(c@)
+#+TAGS:       Write(w) Update(u) Fix(f) Check(c) noexport(n)
+#+TITLE:      Bugpile - Show Task
+#+AUTHOR:     Thorsten Jolitz
+#+EMAIL:      tj[at]data-driven[dot]de
+#+LANGUAGE:   en
+#+STYLE:      <style type="text/css">#outline-container-introduction{ clear:both; }</style>
+# #+LINK_UP:  http://orgmode.org/worg/org-faq.html
+#+LINK_HOME:  http://orgmode.org/worg/
+#+EXPORT_EXCLUDE_TAGS: noexport
+
+
+# #+name: banner
+# #+begin_html
+#   <div id="subtitle" style="float: center; text-align: center;">
+#   <p>
+#   Org Mode info-page for GNU's application to  <a href="http://www.google-melange.com/gsoc/homepage/google/gsoc2012">GSoC 2012</a>
+#   </p>
+#   <p>
+#   <a
+#   href="http://www.google-melange.com/gsoc/homepage/google/gsoc2012"/>
+# <img src="../../images/gsoc/2012/beach-books-beer-60pc.png"  alt="Beach, Books
+#   and Beer"/>
+#   </a>
+#   </p>
+#   </div>
+# #+end_html
+
+/Show Task (Bug-Report or Feature-Request)/
+
+* Task  
+  :PROPERTIES:
+  :ID:       e704e837-62f8-485d-8532-9ca0b6a04ad0
+  :END:
+
+The task in column view (is it possible to include the content text?):
+
+#+BEGIN: columnview :hlines 1 :id 2f822a1e-4bb4-43be-bec4-b0c5caaa42a5
+| Task  | TODO | task-author | task-opened | task-project | bug-need-skills | TAGS      |
+|-------+------+-------------+-------------+--------------+-----------------+-----------|
+| * bug | TODO | tj          |  09-07-2012 | org-agenda   | intermediate    | :foo:bar: |
+#+END:
+
+
+The task in outline view:
+
+#+BEGIN: bugpile-view-show-task :hlines 1 :id 2f822a1e-4bb4-43be-bec4-b0c5caaa42a5
+* TODO bug                                                          :foo:bar:
+  :PROPERTIES:
+  :COLUMNS:  %40ITEM(Task) %TODO %task-author %task-opened %task-project %bug-need-skills %TAGS
+  :object-foo: bug task html obj
+  :html-form: iorg-controller-edit-handler
+  :html-button-value: submit
+  :task-author: tj
+  :task-closed: nil
+  :task-opened: 09-07-2012
+  :task-reopened: nil
+  :task-assigned-to: nil
+  :task-project: org-agenda
+  :bug-is-upstream: no
+  :bug-need-skills: intermediate
+  :ID:       2f822a1e-4bb4-43be-bec4-b0c5caaa42a5
+  :EXPORT_OPTIONS: d:t
+  :END:
+
+Trying to change the agenda-file-list leads to problems. First, there
+is an error message like 'file list can't be a single directory', but
+it can. Second, the old directory and the new directory for the
+agenda-files are concatenated to an unvalid directory (instead of the
+new replacing the old).
+
+But this may not be a bug, because there might be some undetected
+configuration conflict somewhere that causes the misbehaviour.  
+
+#+END:
+
+[[http://localhost:8008/edit-task][Edit]] this task.
+

+ 265 - 0
view/bugpile-view-take-action-on-selected-tasks.html

@@ -0,0 +1,265 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+	       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
+<head>
+<title>Bugpile - Take Action on Selected Tasks</title>
+
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="title" content="Bugpile - Take Action on Selected Tasks"/>
+<meta name="generator" content="Org-mode"/>
+<meta name="generated" content="2012-07-09 16:41:24 CEST"/>
+<meta name="author" content="nil"/>
+<meta name="description" content="nil"/>
+<meta name="keywords" content="nil"/>
+<style type="text/css">
+ <!--/*--><![CDATA[/*><!--*/
+  html { font-family: Times, serif; font-size: 12pt; }
+  .title  { text-align: center; }
+  .todo   { color: red; }
+  .done   { color: green; }
+  .tag    { background-color: #add8e6; font-weight:normal }
+  .target { }
+  .timestamp { color: #bebebe; }
+  .timestamp-kwd { color: #5f9ea0; }
+  .right  {margin-left:auto; margin-right:0px;  text-align:right;}
+  .left   {margin-left:0px;  margin-right:auto; text-align:left;}
+  .center {margin-left:auto; margin-right:auto; text-align:center;}
+  p.verse { margin-left: 3% }
+  pre {
+	border: 1pt solid #AEBDCC;
+	background-color: #F3F5F7;
+	padding: 5pt;
+	font-family: courier, monospace;
+        font-size: 90%;
+        overflow:auto;
+  }
+  table { border-collapse: collapse; }
+  td, th { vertical-align: top;  }
+  th.right  { text-align:center;  }
+  th.left   { text-align:center;   }
+  th.center { text-align:center; }
+  td.right  { text-align:right;  }
+  td.left   { text-align:left;   }
+  td.center { text-align:center; }
+  dt { font-weight: bold; }
+  div.figure { padding: 0.5em; }
+  div.figure p { text-align: center; }
+  div.inlinetask {
+    padding:10px;
+    border:2px solid gray;
+    margin:10px;
+    background: #ffffcc;
+  }
+  textarea { overflow-x: auto; }
+  .linenr { font-size:smaller }
+  .code-highlighted {background-color:#ffff00;}
+  .org-info-js_info-navigation { border-style:none; }
+  #org-info-js_console-label { font-size:10px; font-weight:bold;
+                               white-space:nowrap; }
+  .org-info-js_search-highlight {background-color:#ffff00; color:#000000;
+                                 font-weight:bold; }
+  /*]]>*/-->
+</style><style type="text/css">#outline-container-introduction{ clear:both; }</style>
+<script type="text/javascript">
+<!--/*--><![CDATA[/*><!--*/
+ function CodeHighlightOn(elem, id)
+ {
+   var target = document.getElementById(id);
+   if(null != target) {
+     elem.cacheClassElem = elem.className;
+     elem.cacheClassTarget = target.className;
+     target.className = "code-highlighted";
+     elem.className   = "code-highlighted";
+   }
+ }
+ function CodeHighlightOff(elem, id)
+ {
+   var target = document.getElementById(id);
+   if(elem.cacheClassElem)
+     elem.className = elem.cacheClassElem;
+   if(elem.cacheClassTarget)
+     target.className = elem.cacheClassTarget;
+ }
+/*]]>*///-->
+</script><script type="text/javascript" src="http://orgmode.org/mathjax/MathJax.js">
+<!--/*--><![CDATA[/*><!--*/
+    MathJax.Hub.Config({
+        // Only one of the two following lines, depending on user settings
+        // First allows browser-native MathML display, second forces HTML/CSS
+        //  config: ["MMLorHTML.js"], jax: ["input/TeX"],
+            jax: ["input/TeX", "output/HTML-CSS"],
+        extensions: ["tex2jax.js","TeX/AMSmath.js","TeX/AMSsymbols.js",
+                     "TeX/noUndefined.js"],
+        tex2jax: {
+            inlineMath: [ ["\\(","\\)"] ],
+            displayMath: [ ['$$','$$'], ["\\[","\\]"], ["\\begin{displaymath}","\\end{displaymath}"] ],
+            skipTags: ["script","noscript","style","textarea","pre","code"],
+            ignoreClass: "tex2jax_ignore",
+            processEscapes: false,
+            processEnvironments: true,
+            preview: "TeX"
+        },
+        showProcessingMessages: true,
+        displayAlign: "center",
+        displayIndent: "2em",
+
+        "HTML-CSS": {
+             scale: 100,
+             availableFonts: ["STIX","TeX"],
+             preferredFont: "TeX",
+             webFont: "TeX",
+             imageFont: "TeX",
+             showMathMenu: true,
+        },
+        MMLorHTML: {
+             prefer: {
+                 MSIE:    "MML",
+                 Firefox: "MML",
+                 Opera:   "HTML",
+                 other:   "HTML"
+             }
+        }
+    });
+/*]]>*///-->
+</script>
+</head>
+<body>
+<div id="content">
+<h1 class="title">Bugpile - Take Action on Selected Tasks</h1>
+<p>
+<i>Select Tasks in the Result List</i>
+<i>and choose an Action to take on them</i></p>
+
+<div id="outline-container-2e4d1477-2ea2-400e-b937-14408d7e2285" class="outline-2">
+<h2 id="2e4d1477-2ea2-400e-b937-14408d7e2285"><a id="sec-1" name="sec-1"></a>Result List</h2>
+<div class="outline-text-2" id="text-2e4d1477-2ea2-400e-b937-14408d7e2285">
+<p>
+This is an imaginary result list of a user query. It shows all the
+tasks that were matched by the query either in tags, properties or
+free text (content). The result list is produced inside a dynamic
+block as a column view of a utility file 'iorg-dblock-collect.org'
+that is used to collect all matching subtrees as second level entries
+under a top-level entry with a global ID, that is used as attribute of
+the dynamic block.</p>
+
+<p>
+This is likely not portable to another machine yet, so you might have
+to delete the ID in /bugpile/objects/iorg-dblock-collect.org and
+create a new one on you machine with org-id-get-create, and then use
+this new ID in the header of the dynamic block in file
+bugpile-view-take-action-on-selected-tasks.org in the <i>bugpile/view</i> directory.</p>
+
+<p>
+For this page to be real</p>
+<ol>
+<li>the column view should present entries that were matched and
+collected due to a user query
+</li>
+<li>the iorg-html export-backend should put a html checkbox in front
+of each table row, put a html selectbox with possible actions at
+the bottom of the page, and wrap the whole thing in a html form.
+</li>
+</ol>
+
+<p>
+Assume you selected a task and want bugpile to <a href="http://localhost:8008/show-task" >show-task</a>. </p>
+
+<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<caption></caption>
+
+<colgroup>
+<col class="left"/>
+
+<col class="left"/>
+
+<col class="left"/>
+
+<col class="left"/>
+
+<col class="left"/>
+</colgroup>
+<thead>
+<tr>
+<th scope="col" class="left">Task</th>
+<th scope="col" class="left">TODO</th>
+<th scope="col" class="left">object-foo</th>
+<th scope="col" class="left">html-edit</th>
+<th scope="col" class="left">TAGS</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="left">*</td>
+<td class="left">&nbsp;</td>
+<td class="left">&nbsp;</td>
+<td class="left">&nbsp;</td>
+<td class="left">&nbsp;</td>
+</tr>
+
+<tr>
+<td class="left">** bug</td>
+<td class="left">TODO</td>
+<td class="left">bug</td>
+<td class="left">link</td>
+<td class="left">:foo:bar:</td>
+</tr>
+
+<tr>
+<td class="left">** bug</td>
+<td class="left">TODO</td>
+<td class="left">task</td>
+<td class="left">link</td>
+<td class="left">:feng:shui:</td>
+</tr>
+
+<tr>
+<td class="left">** bug</td>
+<td class="left">TODO</td>
+<td class="left">bug</td>
+<td class="left">button</td>
+<td class="left">:foo:bar:</td>
+</tr>
+
+<tr>
+<td class="left">** bug</td>
+<td class="left">TODO</td>
+<td class="left">html</td>
+<td class="left">button</td>
+<td class="left">:kung:fu:</td>
+</tr>
+
+<tr>
+<td class="left">** bug</td>
+<td class="left">TODO</td>
+<td class="left">obj</td>
+<td class="left">link</td>
+<td class="left">:foo:bar:</td>
+</tr>
+
+<tr>
+<td class="left">** bug</td>
+<td class="left">TODO</td>
+<td class="left">bug</td>
+<td class="left">link</td>
+<td class="left">:hello:world:</td>
+</tr>
+
+<tr>
+<td class="left">** bug</td>
+<td class="left">TODO</td>
+<td class="left">task</td>
+<td class="left">button</td>
+<td class="left">:foo:bar:</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+
+</div>
+<div id="postamble"><a href="http://validator.w3.org/check?uri=referer">Validate XHTML 1.0</a>
+
+</div>
+</body>
+</html>

+ 7 - 7
view/take-action-on-selected-tasks/bugpile-view-take-action-on-selected-tasks.org

@@ -40,16 +40,16 @@
 This is an imaginary result list of a user query. It shows all the
 tasks that were matched by the query either in tags, properties or
 free text (content). The result list is produced inside a dynamic
-block as a column view of a utility files that is used to collect all
-matching subtrees as second level entries under a top-level entry with
-a global ID, that is used as attribute of the dynamic block. 
+block as a column view of a utility file 'iorg-dblock-collect.org'
+that is used to collect all matching subtrees as second level entries
+under a top-level entry with a global ID, that is used as attribute of
+the dynamic block.
 
 This is likely not portable to another machine yet, so you might have
 to delete the ID in /bugpile/objects/iorg-dblock-collect.org and
 create a new one on you machine with org-id-get-create, and then use
 this new ID in the header of the dynamic block in file
-bugpile-view-take-action-on-selected-tasks.org in the
-/bugpile/view/take-action-on-selected-tasks/ directory.
+bugpile-view-take-action-on-selected-tasks.org in the /bugpile/view/ directory.
 
 For this page to be real
  1. the column view should present entries that were matched and
@@ -58,9 +58,9 @@ For this page to be real
     of each table row, put a html selectbox with possible actions at
     the bottom of the page, and wrap the whole thing in a html form.
 
- 
+Assume you selected a task and want bugpile to [[http://localhost:8008/show-task][show-task]]. 
 
-#+BEGIN: columnview :hlines 1 :id #("6f780841-1905-442e-b881-534f89b4d57e" 0 36 (fontified t face org-property-value))
+#+BEGIN: columnview :hlines 1 :id 6f780841-1905-442e-b881-534f89b4d57e
 | Task   | TODO | object-foo | html-edit | TAGS          |
 |--------+------+------------+-----------+---------------|
 | *      |      |            |           |               |