faalis 0.19.0 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 96a221ac8ba2334be76518f59e2935c54e1f68e9
4
- data.tar.gz: e4114d9aa9636432ac1df0553a68df1054900e58
3
+ metadata.gz: 5b6bebb09df183b7dee476937557f6891913cb06
4
+ data.tar.gz: 7641a768cd23e508dd287ab678301916716259f8
5
5
  SHA512:
6
- metadata.gz: 898ca6f74b5ba2bb6c3aaf28d425f9f1800683547a96a28258421ecef00a71b913a7ded913c881b0779c9fef2062ff72824c8191b6281b00fc9bd3a6f411e610
7
- data.tar.gz: a85c348da16d744753756a9f6e2d8f3ae51546a122a92598c4c81d808ddfc70d7929830158e4b44f4259316ca79898831c62aed4c63429d1c8c478ace2f6199f
6
+ metadata.gz: 25e2961ee63d2a0e48fa2419246207f3345dcc25a27bbc216b677752dc89400400e53f81e81316e6cf3c5cecabd1755ffad90355df42db71c3f5a6735915c4c8
7
+ data.tar.gz: 6e02192d12bc51edbe48c1dd46db63a9818c90d31698aa24a13c153148504f7f1bd91c701f1c82709cc378cac10409d24bec37a1aeffa05ab645e9484866fc27
@@ -9,6 +9,19 @@ String_.directive('stringField', ["$filter", "gettext", function($filter, gettex
9
9
  var ltr = is_ltr();
10
10
  scope.element_id = "id_" + scope.field;
11
11
  scope.msg_element_id = "id_" + scope.field + "_msg";
12
+ scope.show_help_btn = false;
13
+ scope.show_help_text = true;
14
+ // Decide to see help text or help button
15
+ if (scope.options === undefined) {
16
+ scope.options = {};
17
+ }
18
+
19
+ if ("help_text" in scope.options) {
20
+ if ("show_help_btn" in scope.options && scope.options.show_help_btn === true) {
21
+ scope.show_help_btn = true;
22
+ scope.show_help_text = false;
23
+ }
24
+ }
12
25
 
13
26
  if (scope.on_change !== undefined) {
14
27
  // Watch event changes
@@ -18,6 +31,27 @@ String_.directive('stringField', ["$filter", "gettext", function($filter, gettex
18
31
  }, true);
19
32
  }
20
33
 
34
+ scope.help_btn_clicked = function() {
35
+ if ("show_help_callback" in scope.options) {
36
+ scope.options.show_help_btn();
37
+ }
38
+ else {
39
+ scope.show_help_text = !scope.show_help_text;
40
+ }
41
+ };
42
+
43
+ scope.have = function(ob, element) {
44
+ if (ob !== undefined) {
45
+ if (element in ob) {
46
+ return true;
47
+ }
48
+ else {
49
+ return false;
50
+ }
51
+ }
52
+ return false;
53
+ };
54
+
21
55
  }
22
56
  // Actual object of <string-field> directive
23
57
  return {
@@ -25,7 +59,16 @@ String_.directive('stringField', ["$filter", "gettext", function($filter, gettex
25
59
  replace: true,
26
60
  restrict: "E",
27
61
  scope: {
62
+ // you can control the buttons and help
63
+ // message of field here. for example you can use `help_text` to
64
+ // show an small help under the control and you can set `show_help_btn`
65
+ // to true to show an help button.
66
+ // options is optional (notice '=?')
67
+ options: '=?',
68
+
69
+ // Css classes to apply on element
28
70
  cssClasses: '=cssClass',
71
+
29
72
  // A call back to pass to field ng-change directive
30
73
  on_change: "@onChange",
31
74
  // fieldname
@@ -274,7 +274,7 @@ small.error {
274
274
  padding: 2px 5px;
275
275
  color: $darkgray;
276
276
  cursor: pointer;
277
- opacity: 0.3;
277
+ opacity: 0.4;
278
278
  @include transition(opacity 300ms linear 0ms);
279
279
  &:hover {
280
280
  opacity: 1;
@@ -287,8 +287,29 @@ small.error {
287
287
  opacity: 1;
288
288
  @include transition(opacity 300ms linear 0ms);
289
289
  }
290
+ .btntitle {
291
+ padding: 0;
292
+ }
293
+
290
294
  }
291
295
  }
296
+
297
+ }
298
+
299
+ .extra_links {
300
+ .option_item {
301
+ font-size: 0.7em;
302
+ color: $darkgray;
303
+ cursor: pointer;
304
+ a {
305
+ padding: 2px 4px;
306
+ .btntitle {
307
+ padding: 0;
308
+ }
309
+
310
+ }
311
+ }
312
+
292
313
  }
293
314
 
294
315
  .helptext {
@@ -1,4 +1,22 @@
1
1
  <div>
2
2
  <input id="{{ element_id }}" ng-model="model" name="{{ field }}" ng-required="required" type="text" class="{{cssClasses}}" />
3
+ <div class="row">
4
+ <div class="float-left small-7 column">
5
+ <span class="helptext" ng-if="options.help_text && show_help_text">{{ options.help_text }}</span>
6
+ </div>
7
+ <div class="float-right small-5 column extra_links text-right" ng-if="have(options, 'links')">
8
+ <span ng-click="help_btn_clicked()" ng-if="show_help_btn">
9
+ <i class="fa fa-question"></i>
10
+ </span>
11
+ <span ng-repeat="item in options.links" class="option_item">
12
+ <a class="{{ item.link_class }}" ng-click="item.action()" ng-if="have(item, 'action')">
13
+ <i class="{{ item.icon || '' }}"></i> <span class="btntitle" ng-if="have(item, 'title')"><span translate>{{ item.title }}</span></span>
14
+ </a>
15
+ <a class="{{ item.link_class }}" ng-href="#{{ item.url }}" target="_blank" ng-if="have(item, 'url')">
16
+ <i class="{{ item.icon || '' }}"></i> <span class="btntitle" ng-if="have(item, 'title')"><span translate>{{ item.title }}</span></span>
17
+ </a>
18
+ </span>
19
+ </div>
20
+ </div>
3
21
  <small id="{{ msg_element_id }}"></small>
4
22
  </div>
data/lib/faalis/engine.rb CHANGED
@@ -19,8 +19,8 @@
19
19
  require 'fast_gettext'
20
20
  require 'modernizr-rails'
21
21
  require "compass-rails"
22
- #require 'zurb-foundation'
23
- require 'foundation-rails'
22
+ require 'zurb-foundation'
23
+ #require 'foundation-rails'
24
24
  require "font-awesome-rails"
25
25
  require "devise"
26
26
  require "warden"
@@ -8,3 +8,4 @@ require "faalis/generators/concerns/resource_name"
8
8
  require "faalis/generators/concerns/angular"
9
9
  require "faalis/generators/concerns/tabs"
10
10
  require "faalis/generators/concerns/model"
11
+ require "faalis/generators/concerns/json_input"
@@ -5,20 +5,20 @@ module Faalis
5
5
 
6
6
  def self.included(base)
7
7
  # Path to js_scaffold target inside 'app/assets/javascripts/'
8
- base.class_option :path, :type => :string, :default => "", :desc => "Path to js_scaffold target inside 'app/assets/javascripts/'"
8
+ #base.class_option :path, :type => :string, :default => "", :desc => "Path to js_scaffold target inside 'app/assets/javascripts/'"
9
9
 
10
10
  # Path to js_scaffold target
11
- base.class_option :raw_path, :type => :string, :default => "", :desc => "Path to js_scaffold target"
11
+ #base.class_option :raw_path, :type => :string, :default => "", :desc => "Path to js_scaffold target"
12
12
  end
13
13
 
14
14
  private
15
15
 
16
16
 
17
17
  def angularjs_app_path
18
- if options[:raw_path] != ""
19
- options[:raw_path]
20
- elsif options[:path] != ""
21
- "app/assets/javascripts/#{options[:path]}/"
18
+ if not resource_data["raw_path"].blank?
19
+ resource_data["raw_path"]
20
+ elsif not resource_data["path"].blank?
21
+ "app/assets/javascripts/#{resource_data['path']}/"
22
22
  else
23
23
  path = Faalis::Engine.dashboard_js_manifest.split("/")[0..-2].join("/")
24
24
  "app/assets/javascripts/#{path}/"
@@ -5,31 +5,26 @@ module Faalis
5
5
 
6
6
  def self.included(base)
7
7
  # Fields to use in in bulk edit, comma separated
8
- base.class_option :bulk_fields, :type => :string, :default => "", :desc => "Fields to use in in bulk edit, comma separated"
8
+ #base.class_option :bulk_fields, :type => :string, :default => "", :desc => "Fields to use in in bulk edit, comma separated"
9
9
 
10
10
  # No bulk edit needed
11
- base.class_option :no_bulk, :type => :boolean, :default => false, :desc => "No bulk edit needed"
11
+ #base.class_option :no_bulk, :type => :boolean, :default => false, :desc => "No bulk edit needed"
12
12
  end
13
13
 
14
14
  private
15
15
 
16
16
  # Returns fields which is needed to be in bulk edit
17
17
  def bulk_edit_fields
18
- unless options[:bulk_fields].empty?
19
- bfields = options[:bulk_fields].split(",")
20
- fields_ = fields_hash
21
- bfields.each do |f|
22
- unless fields_.include? f
23
- raise ::Exception.new "'#{f}' is not in scaffold fields."
24
- end
25
- end
26
- return bfields
27
- else
18
+ fields_with("bulk", true)
19
+ end
28
20
 
29
- return self.send(:fields).collect {|f| f[0]}
21
+ def no_bulk?
22
+ if bulk_edit_fields.length > 0
23
+ true
24
+ else
25
+ false
30
26
  end
31
27
  end
32
-
33
28
  end
34
29
  end
35
30
  end
@@ -5,9 +5,12 @@ module Faalis
5
5
 
6
6
  def self.included(base)
7
7
  # Dependencies of Angularjs module, comma separated
8
- base.class_option :deps, :type => :string, :default => "", :desc => "Dependencies of Angularjs module, comma separated"
8
+ #base.class_option :deps, :type => :string, :default => "", :desc => "Dependencies of Angularjs module, comma separated"
9
9
  end
10
10
 
11
+ def deps
12
+ resource_data[:deps]
13
+ end
11
14
  end
12
15
  end
13
16
  end
@@ -0,0 +1,39 @@
1
+ require 'json'
2
+
3
+
4
+ module Faalis
5
+ module Generators
6
+ module Concerns
7
+ # This module Provide an argument for generator which
8
+ # is needed by other `Concerns`.
9
+ #
10
+ # Each Concern will have its own
11
+
12
+ module JsonInput
13
+
14
+ def self.included(base)
15
+ # Name of the resource to create.
16
+ base.argument :jsonfile , :type => :string, :required => true
17
+ end
18
+
19
+ private
20
+
21
+ def json_file_data
22
+ path = File.expand_path(jsonfile)
23
+ File.read(path)
24
+ end
25
+
26
+ def resource_data
27
+ if @data
28
+ @data
29
+ else
30
+ @data = JSON.parse(json_file_data)
31
+ @data
32
+ end
33
+ end
34
+
35
+
36
+ end
37
+ end
38
+ end
39
+ end
@@ -5,22 +5,13 @@ module Faalis
5
5
 
6
6
  def self.included(base)
7
7
  # Provide menu items which should be in sidebar. format: menu1:url,menu2:url
8
- base.class_option :menu, :type => :string, :default => "", :desc => "Provide menu items which should be in sidebar. format: menu1:url,menu2:url"
8
+ #base.class_option :menu, :type => :string, :default => "", :desc => "Provide menu items which should be in sidebar. format: menu1:url,menu2:url"
9
9
  end
10
10
 
11
11
  private
12
12
 
13
- def parse_menu(menu)
14
- regex = /([^:{}]+){1}\:([^:\{\}]+)(?:{(.*)})?/i
15
- model = nil
16
- if menu =~ regex
17
- title = $1
18
- url = $2
19
- model = $3
20
- return title, url, model
21
- else
22
- Raise Exception.new "Menu items format should be like 'name:url{model}'. Model part is optional"
23
- end
13
+ def has_menu?
14
+ resource_data.include? "menu"
24
15
  end
25
16
 
26
17
  end
@@ -5,19 +5,19 @@ module Faalis
5
5
 
6
6
  def self.included(base)
7
7
  # Fields to use in in bulk edit, comma separated
8
- base.class_option :model, :type => :string, :default => "", :desc => "Model name to use"
8
+ #base.class_option :model, :type => :string, :default => "", :desc => "Model name to use"
9
9
 
10
10
  end
11
11
 
12
12
  private
13
13
 
14
14
  def model_specified?
15
- not options[:model].empty?
15
+ resource_data.include? "model"
16
16
  end
17
17
 
18
18
  def model
19
19
  if model_specified?
20
- options[:model]
20
+ resource_data["model"]
21
21
  else
22
22
  ""
23
23
  end
@@ -5,14 +5,14 @@ module Faalis
5
5
 
6
6
  def self.included(base)
7
7
  # Specify the parent resource if there was any
8
- base.class_option :parent, :type => :string, :default => "", :desc => "Specify the parent resource if there was any"
8
+ #base.class_option :parents, :type => :string, :default => "", :desc => "Specify the parent resource if there was any"
9
9
  end
10
10
 
11
11
  private
12
12
 
13
13
  # check for parent
14
14
  def parent?
15
- if options[:parent] != ""
15
+ unless resource_data["parents"].empty?
16
16
  return true
17
17
  end
18
18
  false
@@ -25,7 +25,7 @@ module Faalis
25
25
 
26
26
  def parents
27
27
  if parent?
28
- _parents = options[:parent].split(",")
28
+ _parents = resource_data["parents"]
29
29
  _parents.collect do |p|
30
30
  trim_parent_path(p)
31
31
  end
@@ -5,16 +5,13 @@ module Faalis
5
5
 
6
6
  def self.included(base)
7
7
  # Non optional fields, comma separated
8
- base.class_option :required, :type => :string, :default => "", :desc => "Non optional fields, comma separated"
8
+ #base.class_option :required, :type => :string, :default => "", :desc => "Non optional fields, comma separated"
9
9
  end
10
10
 
11
11
  private
12
12
 
13
13
  def required_fields
14
- if not options[:required].empty?
15
- return options[:required].split(",")
16
- end
17
- []
14
+ fields_with("required", true)
18
15
  end
19
16
  end
20
17
  end
@@ -10,7 +10,7 @@ module Faalis
10
10
  # An array of resource fields. fields should be separated by space
11
11
  # each filed should be in this format `field_name:field_type[:extra_info]
12
12
  # Relation options should be like `{key: value, key2: elem1;elem2, key3: value3}`
13
- base.argument :resource_fields, type: :array, default: [], banner: "fields[:types[:to[{relation_options}]"
13
+ #base.argument :resource_fields, type: :array, default: [], banner: "fields[:types[:to[{relation_options}]"
14
14
 
15
15
  end
16
16
 
@@ -18,19 +18,12 @@ module Faalis
18
18
  # An array of fields like
19
19
  # [name, type]
20
20
  def fields
21
- pattern = /(?<name>[^:\{\}]+):(?<type>[^:\{\}]+)[:]?(?:(?<to>[^:\{\}]+)(?:\{(?<options>.+)\})*)*/i
22
21
  fields = []
23
- resource_fields.each do |field|
24
- matched = pattern.match field
25
- name = type = to = options = ""
26
- if matched
27
- name = matched["name"]
28
- type = matched["type"]
29
- to = matched["to"]
30
- options = matched["options"] || ""
31
- else
32
- raise Exception.new "Fields should be in FIELD_NAME:FIELD_TYPE[:RELATION[{OPTIONS}]]"
33
- end
22
+ resource_data["fields"].each do |field|
23
+ name = field["name"]
24
+ type = field["type"]
25
+ to = field["to"]
26
+ options = field["options"] || {}
34
27
 
35
28
  if ["belongs_to", "has_many", "in"].include? type
36
29
  type = Relation.new(type, to, options)
@@ -46,7 +39,7 @@ module Faalis
46
39
  end
47
40
 
48
41
  def grid_fields
49
- fields
42
+ fields_with("view_in_grid", true)
50
43
  end
51
44
 
52
45
  # Return an string to use as a function parameters each
@@ -88,6 +81,24 @@ module Faalis
88
81
  result
89
82
  end
90
83
 
84
+ def fields_with(attr, value)
85
+ fields.select do |f|
86
+ if f.include? attr
87
+ if f[attr] == value
88
+ true
89
+ else
90
+ false
91
+ end
92
+ else
93
+ false
94
+ end
95
+
96
+ end
97
+ end
98
+
99
+ def no_filter?
100
+ resource_data.include? "no_filter" && resource_data["no_filter"]
101
+ end
91
102
  end
92
103
  end
93
104
  end
@@ -5,35 +5,35 @@ module Faalis
5
5
 
6
6
  def self.included(base)
7
7
  # Name of the resource to create.
8
- base.argument :resource_name, :type => :string, :required => true
8
+ #base.argument :resource_name, :type => :string, :required => true
9
9
  end
10
10
 
11
11
  private
12
12
 
13
13
  # Path to the resource
14
14
  def resource_path
15
- path_parts = resource_name.split("/")
15
+ path_parts = resource_data["name"].split("/")
16
16
  if path_parts.length > 1
17
17
  return "#{path_parts(0..-2).join("/")}/#{path_parts[-1].underscore}"
18
18
  end
19
- resource_name.underscore
19
+ resource_data["name"].underscore
20
20
  end
21
21
 
22
22
  # Url of resource
23
23
  def resource_url
24
- path_parts = resource_name.split("/")
24
+ path_parts = resource_data["name"].split("/")
25
25
  if path_parts.length > 1
26
26
  return "#{path_parts(0..-2).join("/")}/#{path_parts[-1].pluralize.underscore}"
27
27
  end
28
- resource_name.pluralize.underscore
28
+ resource_data["name"].pluralize.underscore
29
29
  end
30
30
 
31
31
  def resource
32
- path_parts = resource_name.split("/")
32
+ path_parts = resource_data["name"].split("/")
33
33
  if path_parts.length > 1
34
34
  return path_parts[-1].camelize
35
35
  end
36
- resource_name.camelize
36
+ resource_data["name"].camelize
37
37
  end
38
38
 
39
39
  end
@@ -5,7 +5,7 @@ module Faalis
5
5
 
6
6
  def self.included(base)
7
7
  # Add tabs to 'new' view of scaffold. format: --tabs tab1:'field1;field2',tab2 Note: __all__ field include all fileds.
8
- base.class_option :tabs, :type => :string, :default => "", :desc => "Add tabs to 'new' view of scaffold. format: --tabs tab1:'field1;field2',tab2 Note: __all__ field include all fileds."
8
+ #base.class_option :tabs, :type => :string, :default => "", :desc => "Add tabs to 'new' view of scaffold. format: --tabs tab1:'field1;field2',tab2 Note: __all__ field include all fileds."
9
9
  end
10
10
 
11
11
  private
@@ -13,15 +13,12 @@ module Faalis
13
13
  # Process the user provided tabs
14
14
  # @return a Hash of tabs like
15
15
  def tabs
16
- if options[:tabs].present?
17
- tabs = options[:tabs].split(",")
16
+ if resource_data.include? "tabs"
17
+ tabs = resource_data"tabs"
18
18
  result = {}
19
19
  tabs.each do |tab|
20
- name, fields = tab.split(":")
21
- fields_list = []
22
- unless fields.nil?
23
- fields_list = fields.split(";")
24
- end
20
+ name = tab["name"]
21
+ fields_list = fields_with("tab", tab["id"])
25
22
  result[name] = fields_list
26
23
  end
27
24
  return result
@@ -31,7 +28,7 @@ module Faalis
31
28
  end
32
29
 
33
30
  def any_tabs?
34
- options[:tabs].present?
31
+ resource_data.include? "tabs"
35
32
  end
36
33
 
37
34
  end
@@ -6,6 +6,7 @@ module Faalis
6
6
  class DashboardScaffold < Rails::Generators::Base
7
7
 
8
8
  include ActionView::Helpers::TextHelper
9
+ include Faalis::Generators::Concerns::JsonInput
9
10
  include Faalis::Generators::Concerns::ResourceName
10
11
  include Faalis::Generators::Concerns::ResourceFields
11
12
  include Faalis::Generators::Concerns::Menu
@@ -14,14 +14,14 @@ module Faalis
14
14
  end
15
15
 
16
16
  def to
17
- result = "'"
17
+ result = ""
18
18
  if options.include? "parents"
19
19
  field_parents.each do |parent|
20
20
  result = "#{result}/#{parent}/' + $scope.#{parent}_id + '"
21
21
  end
22
22
  result = "#{result}/"
23
23
  end
24
- "#{result}#{@to}'"
24
+ "#{result}#{@to}"
25
25
  end
26
26
 
27
27
  def options
@@ -18,5 +18,5 @@
18
18
  # -----------------------------------------------------------------------------
19
19
 
20
20
  module Faalis
21
- VERSION = "0.19.0"
21
+ VERSION = "0.20.0"
22
22
  end
@@ -1,15 +1,15 @@
1
1
  <div class="details">
2
- <% fields.each do |field_name, field_type| %>
2
+ <% fields.each do |f, field_type| %>
3
3
  <p>
4
4
  <% case field_type
5
- when "belongs_to" %> <b translate><%= field_name.capitalize %> :</b> {{object.<%= field_name %>.name}}
5
+ when "belongs_to" %> <b translate><%= f.capitalize %> :</b> {{object.<%= f %>.name}}
6
6
  <% when "has_many" %><p>
7
- <b translate><%= field_name.capitalize %> :</b>
7
+ <b translate><%= f.capitalize %> :</b>
8
8
  <ul>
9
- <li ng-repeat="item in object.<%= field_name %>"> {{ item.name }}</li>
9
+ <li ng-repeat="item in object.<%= f %>"> {{ item.name }}</li>
10
10
  </ul>
11
11
  </p>
12
- <% else %><b translate><%= field_name.capitalize %> :</b> {{object.<%= field_name %>}}
12
+ <% else %><b translate><%= f.capitalize %> :</b> {{object.<%= f %>}}
13
13
  <% end %></p>
14
14
  <% end %>
15
15
  <ul class="button-group float-right">
@@ -1,7 +1,7 @@
1
- <% unless options[:no_filter] %>
1
+ <% unless no_filter? %>
2
2
  <filter config="filter_config" result="<%= resource.pluralize.underscore %>"></filter>
3
3
  <% end %>
4
- <% unless options[:no_bulk] %>
4
+ <% unless no_bulk? %>
5
5
  <div ng-if="bulk_edit" class="fade_anim">
6
6
  <form id="bulk_form">
7
7
  <fieldset class="row clearmargin">
@@ -55,7 +55,7 @@
55
55
  </div>
56
56
  </div>
57
57
  <% end %>
58
- <list-view buttons="buttons" model="'<% if model_specified? %><%= model %><% else %><%= resource %><% end %>'" objects="<%= resource.pluralize.underscore %>" title-attribute="'<%= options[:title_field] %>'" details-template="details_template" item-per-page="10" on_delete="on_delete" column_defs="columns">
58
+ <list-view buttons="buttons" model="'<% if model_specified? %><%= model %><% else %><%= resource %><% end %>'" objects="<%= resource.pluralize.underscore %>" title-attribute="'<%= resource_data["title_field"] %>'" details-template="details_template" item-per-page="10" on_delete="on_delete" column_defs="columns">
59
59
  <div class="small-6 column text-left clearpadding">
60
60
  <h3><i class="fa fa-group"></i> <span translate><%= resource.underscore.pluralize.humanize %></span></h3>
61
61
  </div>
@@ -1,26 +1,5 @@
1
- <% if is_in_engine? %>
2
- /* -----------------------------------------------------------------------------
3
- Faalis - Basic website skel engine
4
- Copyright (C) 2012-2013 Yellowen
5
-
6
- This program is free software; you can redistribute it and/or modify
7
- it under the terms of the GNU General Public License as published by
8
- the Free Software Foundation; either version 2 of the License, or
9
- (at your option) any later version.
10
-
11
- This program is distributed in the hope that it will be useful,
12
- but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- GNU General Public License for more details.
15
-
16
- You should have received a copy of the GNU General Public License along
17
- with this program; if not, write to the Free Software Foundation, Inc.,
18
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19
- ----------------------------------------------------------------------------- */
20
-
21
- <% end %>
22
1
  // <%= resource.pluralize %> Module
23
- var <%= resource.pluralize %> = angular.module("<%= resource %>", ["ListView", "Filter", "Anim", "Fields",<% if options[:deps] %><% options[:deps].gsub(" ", "").split(",").each do |dependency| %> "<%= dependency.camelize %>", <% end %><% end %>]);
2
+ var <%= resource.pluralize %> = angular.module("<%= resource %>", ["ListView", "Filter", "Anim", "Fields",<% if resource_data[:deps] %><% resource_data[:deps].each do |dependency| %> "<%= dependency.camelize %>", <% end %><% end %>]);
24
3
 
25
4
  // <%= resource.pluralize %> configuration section ---------------------------
26
5
  <%= resource.pluralize %>.config(["$routeProvider", function($routeProvider){
@@ -44,17 +23,16 @@ var <%= resource.pluralize %> = angular.module("<%= resource %>", ["ListView", "
44
23
 
45
24
  // <%= resource %> index controller -------------------------------------------------------
46
25
  // This controller is responsible for list page (index)
47
- <%= resource.pluralize %>.controller("<%= resource %>Controller", ["$scope", "gettext", "Restangular", "catch_error", "$location", "$routeParams",
48
- function($scope, gettext, API, catch_error, $location, $routeParams){
26
+ <%= resource.pluralize %>.controller("<%= resource %>Controller", ["$scope", "gettext", "Restangular", "catch_error", "$location", "$routeParams", function($scope, gettext, API, catch_error, $location, $routeParams){
49
27
 
50
28
  <% parents.each do |parent| %>
51
- $scope.<%= options[:parent] %>_id = $routeParams.<%= options[:parent] %>_id;
29
+ $scope.<%= parent %>_id = $routeParams.<%= parent %>_id;
52
30
  <% end %>
53
- <% unless options[:no_filter] %>$scope.filter_config = {
31
+ <% unless no_filter? %>$scope.filter_config = {
54
32
  list: <% if parent? %>API.<% parents.each do |parent| %>one("<%= parent %>", $scope.<%= parent %>_id)<% end %>.all("<%= resource.pluralize.underscore %>")<% else %>API.all("<%= resource.pluralize.underscore %>")<% end %>
55
33
  };
56
34
  $scope.<%= resource.pluralize.underscore %> = [];<% end %>
57
- <% unless options[:no_bulk] %>// Cache object for each field name possible values
35
+ <% unless no_bulk? %>// Cache object for each field name possible values
58
36
  $scope.cache = {};
59
37
 
60
38
  // Change event handler for field_name combobox in bulk edit
@@ -100,7 +78,7 @@ var <%= resource.pluralize %> = angular.module("<%= resource %>", ["ListView", "
100
78
  },
101
79
  route: "#<% parents.each do |p| %>/<%= p %>/" + $scope.<%= p %>_id + "<% end %>/<%= resource_url %>/new"
102
80
 
103
- },<% unless options[:no_bulk] %>
81
+ },<% unless no_bulk? %>
104
82
  {
105
83
  title: gettext("Bulk Edit"),
106
84
  icon: "fa fa-edit",
@@ -136,7 +114,7 @@ var <%= resource.pluralize %> = angular.module("<%= resource %>", ["ListView", "
136
114
  }
137
115
  }
138
116
 
139
- ];<% unless options[:no_bulk] %>
117
+ ];<% unless no_bulk? %>
140
118
 
141
119
  /*
142
120
  * On bulk save event
@@ -216,7 +194,7 @@ var <%= resource.pluralize %> = angular.module("<%= resource %>", ["ListView", "
216
194
  });
217
195
 
218
196
  };
219
- <% unless options[:no_filter] %>/*<% end %>
197
+ <% unless no_filter? %>/*<% end %>
220
198
  <% if parent? %>API.<% parents.each do |parent| %>one("<%= parent %>", $scope.<%= parent %>_id)<% end %>.all("<%= resource.pluralize.underscore %>").getList()<% else %>
221
199
  API.all("<%= resource.pluralize.underscore %>").getList()<% end %>
222
200
  .then(function(data){
@@ -224,7 +202,7 @@ var <%= resource.pluralize %> = angular.module("<%= resource %>", ["ListView", "
224
202
  }, function(data){
225
203
  catch_error(data);
226
204
  });
227
- <% unless options[:no_filter] %>*/<% end %>
205
+ <% unless no_filter? %>*/<% end %>
228
206
  }]);
229
207
 
230
208
  <%= resource.pluralize %>.controller("Add<%= resource %>Controller", ["Restangular", "$scope", "$location", "$routeParams", "gettext", "catch_error", function(API, $scope, $location, $routeParams, gettext, catch_error){
@@ -245,8 +223,9 @@ var <%= resource.pluralize %> = angular.module("<%= resource %>", ["ListView", "
245
223
  <% fields.each do |name, type| %><% if ["belongs_to", "in", "has_many"].include? type %>
246
224
  $scope.<%= name %>_data = {
247
225
  type: '<%= type %>',<% if type == "in" %>
248
- choices: _.sortBy([<% type.to.split(",").each do |choice| %>{name: "<%= choice.underscore %>", title: "<%= choice.humanize %>"},<% end %>]),<% else %>
249
- to: <%= type.to %>,<% end %>
226
+ choices: _.sortBy([<% type.to.split(",").each do |choice| %>{name: "<%= choice.underscore %>", title: "<%= choice.humanize %>"},<% end %>]),
227
+ <% else %>
228
+ to: '<%= type.to %>',<% end %>
250
229
  name: '<%= name %>'
251
230
  };<% end %><% end %>
252
231
  <% fields.each do |name, type| %><% if type == "in" %>$scope.<%= name %>_choices = _.sortBy([<% type.to.split(",").each do |choice| %>
@@ -325,9 +304,9 @@ var <%= resource.pluralize %> = angular.module("<%= resource %>", ["ListView", "
325
304
 
326
305
  };
327
306
  }]);
328
- <% unless options[:menu].empty? %>
307
+ <% if has_menu? %>
329
308
  <%= resource.pluralize %>.controller("<%= resource %>MenuController", ["gettext", function(gettext){
330
- this.menu_items = [<% options[:menu].split(",").each do |menu| %><% title, url, model = parse_menu(menu) %>
331
- {title: gettext("<%= title %>"), url: "<%= url %>"<% if model %>, permission: {action: "read", model: "<%= model %>"}<% end %>},<% end %>
309
+ this.menu_items = [<% resource_data["menu"].each do |menu| %>
310
+ {title: gettext("<%= meun["title"] %>"), url: "<%= menu["url"] %>"<% if menu.include? "model" %>, permission: {action: "<%= menu["perm_action"] || 'read' %>", model: "<%= menu["model"] %>"}<% end %>},<% end %>
332
311
  ];
333
312
  }]);<% end %>
@@ -1,10 +1,11 @@
1
1
  json.array! @<%= resource.pluralize.underscore %> do |<%= resource.underscore %>|
2
2
  json.extract! <%= resource.underscore %>, :id<%= fields_as_params %><% fields.each do |name, type| %><% case type
3
3
  when "belongs_to" %>
4
- json.<%= name %> do if <%= resource.underscore %>.<%= name %>
5
- json.id <%= resource.underscore %>.<%= name %>.id
6
- json.name <%= resource.underscore %>.<%= name %>.name
4
+ json.<%= name %> do
5
+ if <%= resource.underscore %>.<%= name %>
6
+ json.id <%= resource.underscore %>.<%= name %>.id
7
+ json.name <%= resource.underscore %>.<%= name %>.name
8
+ end
7
9
  end
8
- end
9
10
  <% when "has_many" %> json.<%= name %> <%= resource.underscore %>.<%= name %>, :id, :name<% end %><% end %>
10
11
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faalis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.0
4
+ version: 0.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sameer Rahmani
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-03-12 00:00:00.000000000 Z
12
+ date: 2014-03-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -138,19 +138,19 @@ dependencies:
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
140
  - !ruby/object:Gem::Dependency
141
- name: foundation-rails
141
+ name: zurb-foundation
142
142
  requirement: !ruby/object:Gem::Requirement
143
143
  requirements:
144
- - - ">="
144
+ - - "~>"
145
145
  - !ruby/object:Gem::Version
146
- version: '0'
146
+ version: 4.0.0
147
147
  type: :runtime
148
148
  prerelease: false
149
149
  version_requirements: !ruby/object:Gem::Requirement
150
150
  requirements:
151
- - - ">="
151
+ - - "~>"
152
152
  - !ruby/object:Gem::Version
153
- version: '0'
153
+ version: 4.0.0
154
154
  - !ruby/object:Gem::Dependency
155
155
  name: font-awesome-rails
156
156
  requirement: !ruby/object:Gem::Requirement
@@ -593,6 +593,7 @@ files:
593
593
  - lib/faalis/generators/concerns/angular.rb
594
594
  - lib/faalis/generators/concerns/bulk.rb
595
595
  - lib/faalis/generators/concerns/dependency.rb
596
+ - lib/faalis/generators/concerns/json_input.rb
596
597
  - lib/faalis/generators/concerns/menu.rb
597
598
  - lib/faalis/generators/concerns/model.rb
598
599
  - lib/faalis/generators/concerns/parent.rb