Start working on the admin field editor UI.
authorRobert Sesek <rsesek@bluestatic.org>
Tue, 26 May 2015 02:25:05 +0000 (22:25 -0400)
committerRobert Sesek <rsesek@bluestatic.org>
Tue, 26 May 2015 02:25:05 +0000 (22:25 -0400)
admin/templates/admin_fields_edit.tpl
includes/hoplite
includes/model_field.php
static/admin.js

index c46a7245e0ebfcfe248e9cde384883e81eef5a62..320bcec3a0db05c92417b7e03183ae6d5d17c3c0 100644 (file)
@@ -2,13 +2,7 @@
 
 <script>
        var ModelData = {%= $field | json %};
-       var FieldTypes = {%= [
-               bugdar\Field::TYPE_TEXT,
-               bugdar\Field::TYPE_BOOL,
-               bugdar\Field::TYPE_LIST,
-               bugdar\Field::TYPE_DATE,
-               bugdar\Field::TYPE_USER
-       ] | json %};
+       var FieldTypes = {%= bugdar\Field::$field_types | json %};
 </script>
 
 <div ng-app="bugdar.admin.fields">
                        <input type="checkbox" name="can_search" ng-checked="field.can_search" value="1">
                </label>
 
+
+               <div ng-switch="field.type">
+                       <div ng-switch-when="text">
+                               <label>
+                                       {%=T('Default Value:')%}
+                                       <input type="text" name="default_value" ng-model="field.default_value">
+                               </label>
+
+                               <label>
+                                       {%=T('Validator Pattern:')%}
+                                       <input type="text" name="validator_pattern" ng-model="field.validator_pattern">
+                               </label>
+                       </div>
+
+                       <div ng-switch-when="boolean">
+                               <label>
+                                       {%=T('Default Value:')%}
+                                       <select name="default_value" ng-model="field.default_value">
+                                               <option value="">{%=T('Unset')%}</option>
+                                               <option value="1">{%=T('True')%}</option>
+                                               <option value="0">{%=T('False')%}</option>
+                                       </select>
+                               </label>
+                       </div>
+
+                       <div ng-switch-when="list">
+                               <label>
+                                       {%=T('List Options:')%}
+                                       <textarea ng-model="field.rawListOptions">{{field.validator_pattern}}</textarea>
+                                       <input type="hidden" name="validator_pattern" ng-value="listOptionsAsText()">
+                               </label>
+
+                               <label>
+                                       {%=T('Default Value:')%}
+                                       <select name="default_value" ng-model="field.default_value">
+                                               <option ng-repeat="option in listOptions()" value="{{option}}" ng-selected="field.default_value == option">{{option}}</option>
+                                       </select>
+                               </label>
+                       </div>
+               </div>
+
                <input type="submit" value="{%=T('Save Field')%}">
 
        </form>
index 2dbb698f2da9339190cc1e3d2e8bfb1f803ebc84..31600eeb381d24a83267ad4d892df3692ed0faea 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 2dbb698f2da9339190cc1e3d2e8bfb1f803ebc84
+Subproject commit 31600eeb381d24a83267ad4d892df3692ed0faea
index c8e5fc9494f42beadbb457c2cbb66b97bde2a14a..90c9cd12e9be28e10b6e425d6fe38e3331f92d31 100644 (file)
@@ -52,6 +52,13 @@ class Field extends \hoplite\data\Model
                const TYPE_DATE = 'date';
                const TYPE_USER = 'user';
        // }}
+       public static $field_types = [
+               self::TYPE_TEXT,
+               self::TYPE_BOOL,
+               self::TYPE_LIST,
+               self::TYPE_DATE,
+               self::TYPE_USER
+       ];
 
        // Usergroup access controls {{
                const ACCESS_NONE  = 0;
index a5d45abb3a34dea1410d825b09081d805a7b8a05..f1067721ea490d838000f0fd093c293c954620f9 100644 (file)
@@ -18,4 +18,23 @@ angular.module('bugdar.admin.fields', [])
        .controller('FieldEditor', ['$scope', function($scope) {
                $scope.field = ModelData;
                $scope.fieldTypes = FieldTypes;
+
+               $scope.listOptionsAsText = function() {
+                       var options = $scope.listOptions();
+                       if (options.length == 0)
+                               return '';
+                       return options.join('\n').trim();
+               };
+
+               $scope.listOptions = function() {
+                       var rawOptions = ($scope.field.rawListOptions || '').trim();
+                       if (rawOptions.length == 0)
+                               return [];
+
+                       var options = rawOptions.split('\n');
+                       for (var i = 0; i < options.length; ++i)
+                               options[i] = options[i].trim();
+
+                       return options;
+               };
        }]);