| rev | 
   line source | 
| 
bsw/jbe@0
 | 
     1 local issue
 | 
| 
bsw/jbe@0
 | 
     2 local area
 | 
| 
bsw/jbe@0
 | 
     3 
 | 
| 
bsw/jbe@0
 | 
     4 local issue_id = param.get("issue_id", atom.integer)
 | 
| 
bsw/jbe@0
 | 
     5 if issue_id then
 | 
| 
bsw/jbe@0
 | 
     6   issue = Issue:new_selector():add_where{"id=?",issue_id}:single_object_mode():exec()
 | 
| 
bsw/jbe@0
 | 
     7   area = issue.area
 | 
| 
bsw/jbe@0
 | 
     8 
 | 
| 
bsw/jbe@0
 | 
     9 else
 | 
| 
bsw/jbe@0
 | 
    10   local area_id = param.get("area_id", atom.integer)
 | 
| 
bsw/jbe@0
 | 
    11   area = Area:new_selector():add_where{"id=?",area_id}:single_object_mode():exec()
 | 
| 
bsw/jbe@0
 | 
    12 end
 | 
| 
bsw/jbe@0
 | 
    13 
 | 
| 
bsw/jbe@0
 | 
    14 if issue_id then
 | 
| 
bsw/jbe@19
 | 
    15   slot.put_into("title", _"Add alternative initiative to issue")
 | 
| 
bsw/jbe@0
 | 
    16 else
 | 
| 
bsw/jbe@0
 | 
    17   slot.put_into("title", _"Create new issue")
 | 
| 
bsw/jbe@0
 | 
    18 end
 | 
| 
bsw/jbe@0
 | 
    19 
 | 
| 
bsw/jbe@0
 | 
    20 ui.form{
 | 
| 
bsw/jbe@0
 | 
    21   module = "initiative",
 | 
| 
bsw/jbe@0
 | 
    22   action = "create",
 | 
| 
bsw/jbe@0
 | 
    23   params = {
 | 
| 
bsw/jbe@0
 | 
    24     area_id = area.id,
 | 
| 
bsw/jbe@0
 | 
    25     issue_id = issue and issue.id or nil
 | 
| 
bsw/jbe@0
 | 
    26   },
 | 
| 
bsw/jbe@0
 | 
    27   attr = { class = "vertical" },
 | 
| 
bsw/jbe@0
 | 
    28   content = function()
 | 
| 
bsw@278
 | 
    29     ui.field.text{ label = _"Unit",  value = area.unit.name }
 | 
| 
bsw/jbe@0
 | 
    30     ui.field.text{ label = _"Area",  value = area.name }
 | 
| 
bsw/jbe@52
 | 
    31     slot.put("<br />")
 | 
| 
bsw/jbe@0
 | 
    32     if issue_id then
 | 
| 
bsw/jbe@0
 | 
    33       ui.field.text{ label = _"Issue",  value = issue_id }
 | 
| 
bsw/jbe@0
 | 
    34     else
 | 
| 
bsw@10
 | 
    35       tmp = { { id = -1, name = _"Please choose a policy" } }
 | 
| 
bsw@10
 | 
    36       for i, allowed_policy in ipairs(area.allowed_policies) do
 | 
| 
bsw@10
 | 
    37         tmp[#tmp+1] = allowed_policy
 | 
| 
bsw@10
 | 
    38       end
 | 
| 
bsw/jbe@0
 | 
    39       ui.field.select{
 | 
| 
bsw/jbe@0
 | 
    40         label = _"Policy",
 | 
| 
bsw/jbe@0
 | 
    41         name = "policy_id",
 | 
| 
bsw@10
 | 
    42         foreign_records = tmp,
 | 
| 
bsw/jbe@0
 | 
    43         foreign_id = "id",
 | 
| 
bsw@7
 | 
    44         foreign_name = "name",
 | 
| 
bsw@95
 | 
    45         value = area.default_policy and area.default_policy.id or param.get("policy_id", atom.integer)
 | 
| 
bsw/jbe@0
 | 
    46       }
 | 
| 
bsw@64
 | 
    47       ui.tag{
 | 
| 
bsw@64
 | 
    48         tag = "div",
 | 
| 
bsw@64
 | 
    49         content = function()
 | 
| 
bsw@64
 | 
    50           ui.tag{
 | 
| 
bsw@64
 | 
    51             tag = "label",
 | 
| 
bsw@64
 | 
    52             attr = { class = "ui_field_label" },
 | 
| 
bsw@64
 | 
    53             content = function() slot.put(" ") end,
 | 
| 
bsw@64
 | 
    54           }
 | 
| 
bsw@64
 | 
    55           ui.tag{
 | 
| 
bsw@64
 | 
    56             content = function()
 | 
| 
bsw@64
 | 
    57               ui.link{
 | 
| 
bsw@64
 | 
    58                 text = _"Information about the available policies",
 | 
| 
bsw@64
 | 
    59                 module = "policy",
 | 
| 
bsw@64
 | 
    60                 view = "list"
 | 
| 
bsw@64
 | 
    61               }
 | 
| 
bsw@64
 | 
    62               slot.put(" ")
 | 
| 
bsw@64
 | 
    63               ui.link{
 | 
| 
bsw@64
 | 
    64                 attr = { target = "_blank" },
 | 
| 
bsw@64
 | 
    65                 text = _"(new window)",
 | 
| 
bsw@64
 | 
    66                 module = "policy",
 | 
| 
bsw@64
 | 
    67                 view = "list"
 | 
| 
bsw@64
 | 
    68               }
 | 
| 
bsw@64
 | 
    69             end
 | 
| 
bsw@64
 | 
    70           }
 | 
| 
bsw@64
 | 
    71         end
 | 
| 
bsw@64
 | 
    72       }
 | 
| 
bsw/jbe@0
 | 
    73     end
 | 
| 
bsw@95
 | 
    74     
 | 
| 
bsw@95
 | 
    75     if param.get("preview") then
 | 
| 
bsw@95
 | 
    76       ui.heading{ level = 1, content = encode.html(param.get("name")) }
 | 
| 
bsw@95
 | 
    77       local discussion_url = param.get("discussion_url")
 | 
| 
bsw@95
 | 
    78       ui.container{
 | 
| 
bsw@95
 | 
    79         attr = { class = "ui_field_label" },
 | 
| 
bsw@95
 | 
    80         content = _"Discussion with initiators"
 | 
| 
bsw@95
 | 
    81       }
 | 
| 
bsw@95
 | 
    82       ui.tag{
 | 
| 
bsw@95
 | 
    83         tag = "span",
 | 
| 
bsw@95
 | 
    84         content = function()
 | 
| 
bsw@95
 | 
    85           if discussion_url:find("^https?://") then
 | 
| 
bsw@95
 | 
    86             if discussion_url and #discussion_url > 0 then
 | 
| 
bsw@95
 | 
    87               ui.link{
 | 
| 
bsw@95
 | 
    88                 attr = {
 | 
| 
bsw@95
 | 
    89                   class = "actions",
 | 
| 
bsw@95
 | 
    90                   target = "_blank",
 | 
| 
bsw@95
 | 
    91                   title = discussion_url
 | 
| 
bsw@95
 | 
    92                 },
 | 
| 
bsw@95
 | 
    93                 content = discussion_url,
 | 
| 
bsw@95
 | 
    94                 external = discussion_url
 | 
| 
bsw@95
 | 
    95               }
 | 
| 
bsw@95
 | 
    96             end
 | 
| 
bsw@95
 | 
    97           else
 | 
| 
bsw@95
 | 
    98             slot.put(encode.html(discussion_url))
 | 
| 
bsw@95
 | 
    99           end
 | 
| 
bsw@95
 | 
   100         end
 | 
| 
bsw@95
 | 
   101       }
 | 
| 
bsw@95
 | 
   102       ui.container{
 | 
| 
bsw@95
 | 
   103         attr = { class = "draft_content wiki" },
 | 
| 
bsw@95
 | 
   104         content = function()
 | 
| 
bsw@95
 | 
   105           slot.put(format.wiki_text(param.get("draft"), param.get("formatting_engine")))
 | 
| 
bsw@95
 | 
   106         end
 | 
| 
bsw@95
 | 
   107       }
 | 
| 
bsw@95
 | 
   108       slot.put("<br />")
 | 
| 
bsw@95
 | 
   109       ui.submit{ text = _"Save" }
 | 
| 
bsw@95
 | 
   110       slot.put("<br />")
 | 
| 
bsw@95
 | 
   111       slot.put("<br />")
 | 
| 
bsw@95
 | 
   112     end
 | 
| 
bsw/jbe@52
 | 
   113     slot.put("<br />")
 | 
| 
bsw@95
 | 
   114 
 | 
| 
bsw@95
 | 
   115     ui.field.text{
 | 
| 
bsw@95
 | 
   116       label = _"Title of initiative",
 | 
| 
bsw@95
 | 
   117       name  = "name",
 | 
| 
bsw@95
 | 
   118       value = param.get("name")
 | 
| 
bsw@95
 | 
   119     }
 | 
| 
bsw@95
 | 
   120     ui.field.text{
 | 
| 
bsw@95
 | 
   121       label = _"Discussion URL",
 | 
| 
bsw@95
 | 
   122       name = "discussion_url",
 | 
| 
bsw@95
 | 
   123       value = param.get("discussion_url")
 | 
| 
bsw@95
 | 
   124     }
 | 
| 
bsw/jbe@4
 | 
   125     ui.field.select{
 | 
| 
bsw/jbe@4
 | 
   126       label = _"Wiki engine",
 | 
| 
bsw/jbe@4
 | 
   127       name = "formatting_engine",
 | 
| 
bsw/jbe@4
 | 
   128       foreign_records = {
 | 
| 
bsw/jbe@4
 | 
   129         { id = "rocketwiki", name = "RocketWiki" },
 | 
| 
bsw/jbe@4
 | 
   130         { id = "compat", name = _"Traditional wiki syntax" }
 | 
| 
bsw/jbe@4
 | 
   131       },
 | 
| 
poelzi@133
 | 
   132       attr = {id = "formatting_engine"},
 | 
| 
bsw/jbe@4
 | 
   133       foreign_id = "id",
 | 
| 
bsw@95
 | 
   134       foreign_name = "name",
 | 
| 
bsw@95
 | 
   135       value = param.get("formatting_engine")
 | 
| 
bsw/jbe@4
 | 
   136     }
 | 
| 
poelzi@133
 | 
   137     ui.tag{
 | 
| 
poelzi@133
 | 
   138         tag = "div",
 | 
| 
poelzi@133
 | 
   139         content = function()
 | 
| 
poelzi@133
 | 
   140           ui.tag{
 | 
| 
poelzi@133
 | 
   141             tag = "label",
 | 
| 
poelzi@133
 | 
   142             attr = { class = "ui_field_label" },
 | 
| 
poelzi@133
 | 
   143             content = function() slot.put(" ") end,
 | 
| 
poelzi@133
 | 
   144           }
 | 
| 
poelzi@133
 | 
   145           ui.tag{
 | 
| 
poelzi@133
 | 
   146             content = function()
 | 
| 
poelzi@133
 | 
   147               ui.link{
 | 
| 
poelzi@133
 | 
   148                 text = _"Syntax help",
 | 
| 
poelzi@133
 | 
   149                 module = "help",
 | 
| 
poelzi@133
 | 
   150                 view = "show",
 | 
| 
poelzi@133
 | 
   151                 id = "wikisyntax",
 | 
| 
poelzi@133
 | 
   152                 attr = {onClick="this.href=this.href.replace(/wikisyntax[^.]*/g, 'wikisyntax_'+getElementById('formatting_engine').value)"}
 | 
| 
poelzi@133
 | 
   153               }
 | 
| 
poelzi@133
 | 
   154               slot.put(" ")
 | 
| 
poelzi@133
 | 
   155               ui.link{
 | 
| 
poelzi@133
 | 
   156                 text = _"(new window)",
 | 
| 
poelzi@133
 | 
   157                 module = "help",
 | 
| 
poelzi@133
 | 
   158                 view = "show",
 | 
| 
poelzi@133
 | 
   159                 id = "wikisyntax",
 | 
| 
poelzi@133
 | 
   160                 attr = {target = "_blank", onClick="this.href=this.href.replace(/wikisyntax[^.]*/g, 'wikisyntax_'+getElementById('formatting_engine').value)"}
 | 
| 
poelzi@133
 | 
   161               }
 | 
| 
poelzi@133
 | 
   162             end
 | 
| 
poelzi@133
 | 
   163           }
 | 
| 
poelzi@133
 | 
   164         end
 | 
| 
poelzi@133
 | 
   165       }
 | 
| 
bsw@95
 | 
   166     ui.field.text{
 | 
| 
bsw@95
 | 
   167       label = _"Draft",
 | 
| 
bsw@95
 | 
   168       name = "draft",
 | 
| 
bsw@95
 | 
   169       multiline = true, 
 | 
| 
bsw@95
 | 
   170       attr = { style = "height: 50ex;" },
 | 
| 
bsw@95
 | 
   171       value = param.get("draft")
 | 
| 
bsw@95
 | 
   172     }
 | 
| 
bsw@95
 | 
   173     ui.submit{ name = "preview", text = _"Preview" }
 | 
| 
bsw/jbe@0
 | 
   174     ui.submit{ text = _"Save" }
 | 
| 
bsw/jbe@0
 | 
   175   end
 | 
| 
bsw/jbe@0
 | 
   176 } |