diff --git a/src/css/builder.css b/src/css/builder.css index b1f57612..77a53fe9 100644 --- a/src/css/builder.css +++ b/src/css/builder.css @@ -654,6 +654,7 @@ body.ui-tabs.ui-widget { font-size: 12px; color: #111111; font-style: normal; + text-transform: capitalize; } .treeView span.widgetType:hover { color: #2c7a94; diff --git a/src/js/pageTemplate.js b/src/js/pageTemplate.js index fb6874d6..0139d6fa 100644 --- a/src/js/pageTemplate.js +++ b/src/js/pageTemplate.js @@ -18,7 +18,8 @@ $(function() { options :{ design: null, pageTemplate: "Blank Page", - layout: ['Content'] + layout: ['Content'], + isDialog: false }, /** * Creates an new page according to page configure. @@ -30,6 +31,7 @@ $(function() { var design = config.design || ADM.getDesignRoot(), pageTemplate = config.pageTemplate || this.options[pageTemplate], layout = this.options.layout.concat(config.layout), + isDialog = config.isDialog || this.options.isDialog, newPage, result; if (!design.instanceOf("Design")) { @@ -37,12 +39,18 @@ $(function() { return null; } + ADM.startTransaction(); // create New ADM page node - newPage = ADM.createNode('Page'); + newPage = new ADMNode("Page"); if (!newPage) { return null; } - + ADM.addChild(design, newPage); + //set dialog property of page + result = ADM.setProperty(newPage, 'dialog', isDialog); + if (!result.result) { + return null; + } //set page layout result = setPageLayout(newPage, layout); //TODO: if we have some specfic logic to handle with template, @@ -61,7 +69,7 @@ $(function() { } } */ - ADM.addChild(design, newPage); + ADM.endTransaction(); return result? newPage: null; /** diff --git a/src/js/views/layout.js b/src/js/views/layout.js index cb342df0..476d10a8 100644 --- a/src/js/views/layout.js +++ b/src/js/views/layout.js @@ -395,6 +395,11 @@ $(domNode).addClass('adm-editable'); } + // If this node is a "dialog", make it display as "page" in layout view + if (admNode.getType() === "Page" && admNode.getProperty("dialog") === true) { + $(domNode).attr('data-role', 'page'); + } + // FIXME: This is a bit of a hack; we're removing the disabled // attribute from widgets because when they're disabled, they // lose mouse clicks and can't be selected. This code is assuming diff --git a/src/js/views/outline.js b/src/js/views/outline.js index 4fea8750..6c89b944 100644 --- a/src/js/views/outline.js +++ b/src/js/views/outline.js @@ -167,11 +167,14 @@ if (node.getType() === "Page") { //set page id var id = node.getProperty('id'), - titleNode = domNode.find("> a > .pageTitle"); + titleNode = domNode.find("> a > .pageTitle"), + widgetNode = domNode.find( "> a > .widgetType"), + isDialog = node.getProperty('dialog'); if (titleNode.length === 0) titleNode = $('').addClass('pageTitle') .appendTo(domNode.find("> a")); titleNode.text(' (' + id + ')'); + widgetNode.text(isDialog? "dialog" : "page"); } }, _render: function (domNode, data) { diff --git a/src/js/views/page.js b/src/js/views/page.js index a6b51093..b83a533b 100644 --- a/src/js/views/page.js +++ b/src/js/views/page.js @@ -242,6 +242,7 @@ dialog.find('#pagePicker').get(0).selectedIndex = 0; dialog.find('#header_layout').attr("checked", true); dialog.find('#footer_layout').attr("checked", true); + dialog.find('input:radio[name=Layout]')[0].checked = true; } catch (err) { console.error(err.message); @@ -255,6 +256,12 @@ dialog = $('#pageDialog'); options.pageTemplate = dialog.find("#pagePicker").val(); + //get style of new page + if (dialog.find('input:radio[name=Layout]:checked').val() === 'dialog') { + options.isDialog = true; + } else { + options.isDialog = false; + } //get checkbox value if (dialog.find('#header_layout').is(":checked")) { layout.push('Header'); @@ -296,14 +303,12 @@ '' + '
  • ' + '
      ' + - /* '
    • ' + - '' + + '' + '
    • ' + '
    • ' + - '' + + '' + '
    • ' + - */ '
    • ' + '' + '
    • ' + diff --git a/src/js/views/property.js b/src/js/views/property.js index cadf43e7..161499d2 100644 --- a/src/js/views/property.js +++ b/src/js/views/property.js @@ -144,9 +144,17 @@ // display property of widget switch (propType) { case "boolean": - $('') - .attr('id', valueId) - .appendTo(value); + //Forbid changing the style of the first page to "Dialog", we don't want + //to user adjust style of the first page + if (type === 'Page' && + node.getDesign().getChildren()[0] === node && + p === 'dialog') { + code.empty(); + } else { + $('') + .attr('id', valueId) + .appendTo(value); + } // FIXME: Boolean values should be actual booleans, not // "true" and "false" strings; but because of bugs we diff --git a/src/js/widgets.js b/src/js/widgets.js index 1d5df3b5..5c840cdf 100644 --- a/src/js/widgets.js +++ b/src/js/widgets.js @@ -635,8 +635,8 @@ var BWidgetRegistry = { opentargetas : { type: "string", displayName: "open target as", - options: ["page", "dialog"], - defaultValue: "page", + options: ["default", "page", "dialog"], + defaultValue: "default", htmlAttribute: "data-rel" }, icon: BCommonProperties.icon,