{
  "Page_Tree": {
    "layout":"form",
    "table":"",
    "actions":"BIUD",
    "roles": {"AUTHOR": "BIUD","PUBLISHER": "BIUD","VIEWER":"B"},
    "title":"Pages (Folder View)",
    "caption":["Page","Pages"],
    "unbound":true,
    "menu":"jsHarmonyCMS/Page_Listing",
    "breadcrumbs":"#CMS_BRANCH_BREADCRUMBS",
    "buttons":[
      { "name": "addPage", "actions": "I", "link":"js:jsh.App[jsh.XBase['jsHarmonyCMS/Page_Tree_Listing'][0]].addFile();","icon":"add","text":"Add Page","roles": { "AUTHOR": "B", "PUBLISHER": "B" } },
      { "name": "search", "link":"Page_Search","icon":"search","text":"Search","roles": { "AUTHOR": "B", "PUBLISHER": "B", "VIEWER":"B" }, "bindings": {} },
      { "name": "review", "link":"Page_Listing","icon":"export","text":"Review","roles": { "AUTHOR": "B", "PUBLISHER": "B", "VIEWER":"B" }, "bindings": {} }
    ],
    "hide_system_buttons" : ["print","export"], 
    "oninit": "_this.oninit();",
    "onload": "_this.onload();",
    "ongetstate": "return _this.ongetstate(xmodel);",
    "onloadstate": "_this.onloadstate(xmodel, state);",
    "fields":[
      {"name":"form_instructions","control":"html","roles": {"AUTHOR": "B","PUBLISHER": "B"},"value":[
        "<div style='position:relative;top:-4px;'><span style='font-size:1.3em;position:relative;top:1px;margin-right:2px;margin-left:4px;'>&#x1f6c8;</span> Manage pages in the Folder View :: Right-click folders and pages for options :: Drag to reorder</div>",
      ]},
	    {"control": "html", "value": "<div class=\"clear\"></div><div class='<%=model.class%>_browser'>" },
      {"name": "page_folder", "actions": "BIUD","foreignkey":1,"caption": "","control": "tree",
       "unbound": 1, "always_editable":1,
       "default": "/",
       "lov": {
         "sql": "select distinct null as code_id, null as code_parent_id, (case $ifnull(page_folder,'') when '' then '/' else page_folder end) as code_val, null as code_txt, 'folder' as code_icon from {schema}.v_my_page order by (case $ifnull(page_folder,'') when '' then '/' else page_folder end)",
         "post_process": "jsh.generateLOVTree(values, { root_txt: '%%%ROOT%%%', new_code_val: function(patharr){ var rslt = patharr.join('/'); if(!rslt) return '/'; return '/'+rslt+'/'; } });"
        },
       "controlparams": {
          "expand_all": true,
          "item_context_menu": [
            { "icon": "add", "text": "Add Page", "command": "jsh.App[jsh.XBase['jsHarmonyCMS/Page_Tree_Listing'][0]].addFile(context_item);","actions":"I" },
            { "icon": "add", "text": "Add Subfolder", "command": "_this.addFolder(context_item);","actions":"I" },
            { "icon": "edit", "text": "Rename Folder", "command": "_this.renameFolder(context_item);","actions":"U" },
            { "icon": "export", "text": "Move Folder", "command": "_this.moveFolder(context_item);","actions":"U" },
            { "icon": "delete", "text": "Delete Folder", "command": "_this.deleteFolder(context_item);","actions":"D" }
          ],
          "item_dropdown": { "caption": "Actions" },
          "onmove": "return _this.page_folder_onmove(dragval, dropval, anchor, e);",
          "drag_anchor_settings": { "anchors": ["full"] }
        },
        "onchange": "_this.page_folder_onchange(obj,newval);"
      },
      {"control":"html", "value": "<div class='<%=model.class%>_page_listing_container'>" },
      {"control":"html", "value": "<div class='<%=model.class%>_page_listing_header'>Current Folder: <span class='<%=model.class%>_page_listing_header_path'></span></div>" },
      {
        "name": "Page_Tree_Listing",
        "control": "subform",
        "target": "Page_Tree_Listing",
        "bindings": { "page_folder": "page_folder" },
        "caption": "",
        "actions": "BIUD",
        "controlparams":{ "grid_save_before_update": true }
      },
      {"control":"html", "value": "</div>" },
      {"control":"html", "value": "</div>"},
      "#CMS_SITE_EDITOR_LOV",
      {"name":"revision_page","unbound":true,"control":"hidden","bindings":{"revision_page_key":"js:if(xmodel) return jsh.App[xmodel.id].revision_page_key;"},
        "popuplov": {"target": "Page_Revision_Listing", "code_val": "page_id", "popupstyle": "height:400px;width:770px;", "popupiconstyle": "display:none;"}
      }
	  ]
  },
  "Page_Browser": {
    "inherits": "Page_Tree",
    "title": "",
    "buttons": [ { "__REMOVEALL__": true } ],
    "actions":"B",
    "css": [
      ".xbody_<%=model.class%> .bcrumbs { width: auto; display:inline-block; }"
    ],
    "js": "jsh.App[modelid].isInEditor = true;",
    "popup": [1000, 600],
    "fields":[
      {"name":"form_instructions","__REMOVE__":true},
      {"name":"page_folder",
        "lov": { "sql": "select distinct null as code_id, null as code_parent_id, (case $ifnull(page_folder,'') when '' then '/' else page_folder end) as code_val, null as code_txt, 'folder' as code_icon from {schema}.v_my_page where page_template_id <> '<Standalone>' order by (case $ifnull(page_folder,'') when '' then '/' else page_folder end)" },
        "controlparams":{ "item_context_menu":[] }
      },
      {"name":"Page_Tree_Listing","target":"Page_Browser_Listing"}
    ]
  },
  "Page_Browser_Tab": {
    "inherits": "Page_Browser",
    "fields": [
      {"control":"html","value":"<h1>Pages</h1>","__AFTER__":"__START__"}
    ]
  },
  "Page_Revision_Update": {
    "layout": "exec",
    "title": "Update Page Revision",
    "actions": "U",
    "roles": {"AUTHOR": "U","PUBLISHER": "U"},
    "sqlexec": [
      "update {schema}.branch_page set page_id=@page_id,branch_page_action=(case branch_page_action when 'ADD' then 'ADD' else 'UPDATE' end) where page_key=@page_key and branch_id={schema}.my_current_branch_id();"
    ],
    "fields": [
      {"name":"page_key", "actions":"U", "type":"bigint", "caption":"Page Key", "validate": ["Required"]},
      {"name":"page_id", "actions":"U", "type":"bigint", "caption":"Page ID", "validate": ["Required"]}
    ]
  },
  "Page_Tree_File_Duplicate": {
    "layout": "exec",
    "title": "Duplicate File",
    "actions": "U",
    "roles": {"AUTHOR": "U","PUBLISHER": "U"},
    "sqlexec": [
      "insert into {schema}.v_my_page(page_path, page_file_id, page_title, page_template_id, page_template_path, page_seo_title, page_seo_canonical_url, page_seo_metadesc, page_seo_keywords, page_lang) select @page_path, page_file_id, page_title, page_template_id, page_template_path, page_seo_title, page_seo_canonical_url, page_seo_metadesc, page_seo_keywords, page_lang from {schema}.v_my_page where page_key=@page_key;"
    ],
    "fields": [
      {"name":"page_key", "actions":"U", "type":"bigint", "caption":"Page Key", "validate": ["Required"]},
      {"name":"page_path", "actions":"U", "type":"varchar", "length": 2048, "caption":"Page Folder", "validate": ["Required"]}
    ]
  },
  "Page_Tree_Folder_Add": {
    "layout": "exec",
    "title": "Add Page Folder",
    "actions": "U",
    "roles": {"AUTHOR": "U","PUBLISHER": "U"},
    "sqlexec": [
      "insert into {schema}.v_my_page(page_path,page_is_folder) values(@page_path,1);"
    ],
    "fields": [
      {"name":"page_path", "actions":"U", "type":"varchar", "length": 2048, "caption":"Page Folder", "validate": ["Required"]}
    ]
  },
  "Page_Tree_Folder_Move": {
    "layout": "exec",
    "title": "Move Page Folder",
    "actions": "U",
    "roles": {"AUTHOR": "U","PUBLISHER": "U"},
    "sqlexec": [
      [
        "update {schema}.v_my_page set page_path = concat(@new_page_folder,substr(page_path,length(@old_page_folder)+1)) where page_folder like concat(@old_page_folder,'%');"
      ]
    ],
    "fields": [
      {"name":"old_page_folder", "actions":"U", "type":"varchar", "length": 2048, "caption":"Page Folder", "validate": ["Required"]},
      {"name":"new_page_folder", "actions":"U", "type":"varchar", "length": 2048, "caption":"Page Folder", "validate": ["Required"]}
    ]
  },
  "Page_Tree_Folder_Delete": {
    "layout": "exec",
    "title": "Delete Page Folder",
    "actions": "U",
    "roles": {"AUTHOR": "U","PUBLISHER": "U"},
    "sqlexec": [
      [
        "delete from {schema}.v_my_page where page_folder like concat(@page_folder,'%');"
      ]
    ],
    "fields": [
      {"name":"page_folder", "actions":"U", "type":"varchar", "length": 2048, "caption":"Page Folder", "validate": ["Required"]}
    ]
  }
}