Updated Branches:
  refs/heads/master 79410f90b -> aac1ac555

CS-14854: cloudstack 3.0 UI - (1) extend detailView widget to take in dynamic 
isEditable value. (2) template page - edit template action - for regular user 
and domain admin: make Extractable field and Featured field non-editable. Do 
NOT send “isfeatured”, “isextractable” to updateTemplatePermission API 
when they are non-editable.


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/aac1ac55
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/aac1ac55
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/aac1ac55

Branch: refs/heads/master
Commit: aac1ac555d8fa3d4a4c3626af0d09b572034de1a
Parents: 79410f9
Author: Jessica Wang <[email protected]>
Authored: Thu Jun 21 13:43:04 2012 -0700
Committer: Jessica Wang <[email protected]>
Committed: Thu Jun 21 13:43:04 2012 -0700

----------------------------------------------------------------------
 ui/scripts/templates.js             |   49 ++++++++++++++++++++++++++----
 ui/scripts/ui/widgets/detailView.js |   13 +++++---
 2 files changed, 51 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/aac1ac55/ui/scripts/templates.js
----------------------------------------------------------------------
diff --git a/ui/scripts/templates.js b/ui/scripts/templates.js
index 8ddcbed..e49b94f 100644
--- a/ui/scripts/templates.js
+++ b/ui/scripts/templates.js
@@ -365,9 +365,26 @@
                   });
 
                   var array2 = [];
-                  array2.push("&ispublic=" + (args.data.ispublic=="on"));
-                  array2.push("&isfeatured=" + (args.data.isfeatured=="on"));
-                  array2.push("&isextractable=" + 
(args.data.isextractable=="on"));
+                  
+                                                                       
//array2.push("&ispublic=" + (args.data.ispublic=="on"));
+                                                                       
if(args.data.ispublic == "on")
+                    array2.push("&ispublic=true");
+                                                                       else 
if(args.data.ispublic == "off")
+                    array2.push("&ispublic=false");    
+                                                                       //if 
args.data.ispublic is undefined, do not pass ispublic to API call.
+                                                                       
+                                                                       
if(args.data.isfeatured == "on")
+                    array2.push("&isfeatured=true");
+                                                                       else 
if(args.data.isfeatured == "off")
+                    array2.push("&isfeatured=false");  
+                                                                       //if 
args.data.isfeatured is undefined, do not pass isfeatured to API call.
+                                                                               
          
+                                                                       
if(args.data.isextractable == "on")
+                    array2.push("&isextractable=true");
+                                                                       else 
if(args.data.isextractable == "off")
+                    array2.push("&isextractable=false");       
+                                                                       //if 
args.data.isextractable is undefined, do not pass isextractable to API call.
+                                                                               
                                                                
                   $.ajax({
                     url: createURL("updateTemplatePermissions&id=" + 
args.context.templates[0].id + "&zoneid=" + args.context.templates[0].zoneid + 
array2.join("")),
                     dataType: "json",
@@ -585,7 +602,12 @@
                     isextractable: {
                       label: 'extractable',
                       isBoolean: true,
-                      isEditable: true,
+                      isEditable: function() {
+                                                                               
          if(isAdmin())
+                                                                               
            return true;
+                                                                               
                else
+                                                                               
                  return false;
+                                                                               
        },
                       converter:cloudStack.converters.toBooleanText
                     },
                     passwordenabled: {
@@ -597,13 +619,28 @@
                     ispublic: {
                       label: 'label.public',
                       isBoolean: true,
-                      isEditable: true,
+                      isEditable: function() {
+                                                                               
          if(isAdmin()) {
+                                                                               
            return true;
+                                                                               
                }
+                                                                               
                else {
+                                                                               
                  if (g_userPublicTemplateEnabled == "true")
+                                                                               
                          return true;
+                                                                               
                        else 
+                                                                               
                    return false;
+                                                                               
                }
+                                                                               
        },
                       converter:cloudStack.converters.toBooleanText
                     },
                     isfeatured: {
                       label: 'label.featured',
                       isBoolean: true,
-                      isEditable: true,
+                      isEditable: function() {
+                                                                               
          if(isAdmin())
+                                                                               
            return true;
+                                                                               
                else
+                                                                               
                  return false;
+                                                                               
        },
                       converter:cloudStack.converters.toBooleanText
                     },
                     crossZones: {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/aac1ac55/ui/scripts/ui/widgets/detailView.js
----------------------------------------------------------------------
diff --git a/ui/scripts/ui/widgets/detailView.js 
b/ui/scripts/ui/widgets/detailView.js
index 7968bc7..c7cc716 100644
--- a/ui/scripts/ui/widgets/detailView.js
+++ b/ui/scripts/ui/widgets/detailView.js
@@ -185,7 +185,7 @@
                     $loading.remove();
                   }
                 );
-
+                                                               
                 return true;
               },
               error: function(args) {          //args here is parsed errortext 
from API response
@@ -310,7 +310,7 @@
             ));
           else if ($input.is('input[type=checkbox]')) {
             var val = $input.is(':checked');
-            
+
             $value.data('detail-view-boolean-value', _s(val));
             $value.html(_s(val) ? _l('label.yes') : _l('label.no'));
           }
@@ -347,7 +347,7 @@
             var $input = $(this);
 
             if ($input.is('[type=checkbox]')) {
-              data[$input.attr('name')] = $input.is(':checked') ? 'on' : null;
+              data[$input.attr('name')] = $input.is(':checked') ? 'on' : 'off';
             } else {
               data[$input.attr('name')] = $input.val();
             }
@@ -702,8 +702,11 @@
         $name.html(_l(value.label));
         $value.html(_s(content));
 
-        // Set up editable metadata
-        $value.data('detail-view-is-editable', value.isEditable);
+        // Set up editable metadata                            
+                               if(typeof(value.isEditable) == 'function')
+                                 $value.data('detail-view-is-editable', 
value.isEditable());
+                               else //typeof(value.isEditable) == 'boolean' or 
'undefined'
+          $value.data('detail-view-is-editable', value.isEditable);
         if (value.select) {
           value.selected = $value.html();
 

Reply via email to