From ddfde09a2e6703aacdfc3ad36a1bb66dd9484f9c Mon Sep 17 00:00:00 2001 From: Xu Zhang Date: Tue, 3 Jul 2012 18:57:01 +0800 Subject: [PATCH 1/5] [Outline View] show text as Dialog when data role of page is dialog --- src/css/builder.css | 1 + src/js/views/outline.js | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) 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/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) { From daf35211a5ded384df68ee46a86c8757b14e0854 Mon Sep 17 00:00:00 2001 From: Xu Zhang Date: Tue, 3 Jul 2012 19:05:52 +0800 Subject: [PATCH 2/5] [Property View] ignore dialog checkbox for the first page * because the first page of RIB must be a page, we don't show the checkbox of dialog for the first page in property view --- src/js/views/property.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) 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 From a1779c5639388b78fe270b430f156dc8f4d30419 Mon Sep 17 00:00:00 2001 From: Xu Zhang Date: Mon, 4 Jun 2012 17:59:10 +0800 Subject: [PATCH 3/5] [Page View] add style configure on new page Dialog according to style, creating page as dialog or page --- src/js/pageTemplate.js | 16 ++++++++++++---- src/js/views/page.js | 13 +++++++++---- 2 files changed, 21 insertions(+), 8 deletions(-) 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/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 @@ '' + '
  • ' + '
      ' + - /* '
    • ' + - '' + + '' + '
    • ' + '
    • ' + - '' + + '' + '
    • ' + - */ '
    • ' + '' + '
    • ' + From 0a9079c547da8dd4f497df733049f0da9998e6f0 Mon Sep 17 00:00:00 2001 From: Xu Zhang Date: Mon, 4 Jun 2012 19:04:13 +0800 Subject: [PATCH 4/5] [Layout View] make dialog node display as "page" node in layout In design view, we make dialog and page looked as same. --- src/js/views/layout.js | 5 +++++ 1 file changed, 5 insertions(+) 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 From ee198ce1ae68ae9abdb09769e6b980e52332f662 Mon Sep 17 00:00:00 2001 From: Xu Zhang Date: Wed, 4 Jul 2012 08:48:04 +0800 Subject: [PATCH 5/5] [Widget] Bug fix: support to load a dialog as page * There are different behavior on button opening target between JQM and RIB. For JQM, when data-role of page is "dialog" and the page is loaded by a button with the data-rel=page, the behavior of the page is "Page". Fixing this bug by modifying default value of opentargetas property of button. --- src/js/widgets.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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,