promethee 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/promethee-editor.js +2 -0
  3. data/app/assets/stylesheets/promethee-editor.sass +1 -0
  4. data/app/views/promethee/_edit.html.erb +18 -18
  5. data/app/views/promethee/_localize.html.erb +49 -0
  6. data/app/views/promethee/_show.html.erb +2 -2
  7. data/app/views/promethee/components/_text_edit.html.erb +12 -8
  8. data/app/views/promethee/partials/_page.html.erb +1 -1
  9. data/lib/promethee/core_ext/form_builder.rb +4 -0
  10. data/lib/promethee/core_ext/form_helper.rb +4 -0
  11. data/lib/promethee/core_ext/tags.rb +9 -0
  12. data/lib/promethee/rails/engine.rb +0 -1
  13. data/lib/promethee/rails/version.rb +1 -1
  14. data/vendor/assets/fonts/summernote.eot +0 -0
  15. data/vendor/assets/fonts/summernote.ttf +0 -0
  16. data/vendor/assets/fonts/summernote.woff +0 -0
  17. data/vendor/assets/javascripts/angular-summernote.js +207 -0
  18. data/vendor/assets/javascripts/summernote/index.js +1 -0
  19. data/vendor/assets/javascripts/summernote/locales/ar-AR.js +104 -0
  20. data/vendor/assets/javascripts/summernote/locales/bg-BG.js +99 -0
  21. data/vendor/assets/javascripts/summernote/locales/ca-ES.js +147 -0
  22. data/vendor/assets/javascripts/summernote/locales/cs-CZ.js +103 -0
  23. data/vendor/assets/javascripts/summernote/locales/da-DK.js +114 -0
  24. data/vendor/assets/javascripts/summernote/locales/de-DE.js +110 -0
  25. data/vendor/assets/javascripts/summernote/locales/el-GR.js +147 -0
  26. data/vendor/assets/javascripts/summernote/locales/es-ES.js +147 -0
  27. data/vendor/assets/javascripts/summernote/locales/es-EU.js +103 -0
  28. data/vendor/assets/javascripts/summernote/locales/fa-IR.js +105 -0
  29. data/vendor/assets/javascripts/summernote/locales/fi-FI.js +104 -0
  30. data/vendor/assets/javascripts/summernote/locales/fr-FR.js +154 -0
  31. data/vendor/assets/javascripts/summernote/locales/gl-ES.js +147 -0
  32. data/vendor/assets/javascripts/summernote/locales/he-IL.js +107 -0
  33. data/vendor/assets/javascripts/summernote/locales/hr-HR.js +104 -0
  34. data/vendor/assets/javascripts/summernote/locales/hu-HU.js +135 -0
  35. data/vendor/assets/javascripts/summernote/locales/id-ID.js +103 -0
  36. data/vendor/assets/javascripts/summernote/locales/index.js +1 -0
  37. data/vendor/assets/javascripts/summernote/locales/it-IT.js +104 -0
  38. data/vendor/assets/javascripts/summernote/locales/ja-JP.js +133 -0
  39. data/vendor/assets/javascripts/summernote/locales/ko-KR.js +115 -0
  40. data/vendor/assets/javascripts/summernote/locales/lt-LT.js +107 -0
  41. data/vendor/assets/javascripts/summernote/locales/lt-LV.js +135 -0
  42. data/vendor/assets/javascripts/summernote/locales/mn-MN.js +118 -0
  43. data/vendor/assets/javascripts/summernote/locales/nb-NO.js +104 -0
  44. data/vendor/assets/javascripts/summernote/locales/nl-NL.js +104 -0
  45. data/vendor/assets/javascripts/summernote/locales/pl-PL.js +112 -0
  46. data/vendor/assets/javascripts/summernote/locales/pt-BR.js +138 -0
  47. data/vendor/assets/javascripts/summernote/locales/pt-PT.js +103 -0
  48. data/vendor/assets/javascripts/summernote/locales/ro-RO.js +102 -0
  49. data/vendor/assets/javascripts/summernote/locales/ru-RU.js +112 -0
  50. data/vendor/assets/javascripts/summernote/locales/sk-SK.js +102 -0
  51. data/vendor/assets/javascripts/summernote/locales/sl-SI.js +106 -0
  52. data/vendor/assets/javascripts/summernote/locales/sr-RS-Latin.js +104 -0
  53. data/vendor/assets/javascripts/summernote/locales/sr-RS.js +104 -0
  54. data/vendor/assets/javascripts/summernote/locales/sv-SE.js +104 -0
  55. data/vendor/assets/javascripts/summernote/locales/ta-IN.js +113 -0
  56. data/vendor/assets/javascripts/summernote/locales/th-TH.js +106 -0
  57. data/vendor/assets/javascripts/summernote/locales/tr-TR.js +154 -0
  58. data/vendor/assets/javascripts/summernote/locales/uk-UA.js +111 -0
  59. data/vendor/assets/javascripts/summernote/locales/vi-VN.js +104 -0
  60. data/vendor/assets/javascripts/summernote/locales/zh-CN.js +142 -0
  61. data/vendor/assets/javascripts/summernote/locales/zh-TW.js +113 -0
  62. data/vendor/assets/javascripts/summernote/plugin/databasic/summernote-ext-databasic.css +16 -0
  63. data/vendor/assets/javascripts/summernote/plugin/databasic/summernote-ext-databasic.js +303 -0
  64. data/vendor/assets/javascripts/summernote/plugin/hello/summernote-ext-hello.js +82 -0
  65. data/vendor/assets/javascripts/summernote/plugin/specialchars/summernote-ext-specialchars.js +315 -0
  66. data/vendor/assets/javascripts/summernote/summernote-bs4.js +7990 -0
  67. data/vendor/assets/javascripts/summernote/summernote-lite.js +8598 -0
  68. data/vendor/assets/javascripts/summernote/summernote.js +7987 -0
  69. data/vendor/assets/stylesheets/summernote-bs4.css +1 -0
  70. data/vendor/assets/stylesheets/summernote-lite.css +1 -0
  71. data/vendor/assets/stylesheets/summernote.scss +1 -0
  72. metadata +60 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 14fcd1ec2bd76b0e5a05757927c5fb38b292638c
4
- data.tar.gz: 2fb7d856837d11869f7390ef44fc97985fa7da22
3
+ metadata.gz: edbf8c8f6f4faf5e23d93c3989cbab31908c2469
4
+ data.tar.gz: d35e771e4690ad8f9d07f20b1a14c59c0a7775f1
5
5
  SHA512:
6
- metadata.gz: a2c4c4b361aa1e2e6a938127cfaa83c43a89adbee44969d3452b1e8ec9b110d386454671a35278c2c4910976578d59c4e083c563c141501cdef51334ed3d44fb
7
- data.tar.gz: '0219cf7aa0bbc9f06c677966db46c4bfcf86c282731ecb9700f8abf02f196aafb281ebf30232271b499131368a3f7641c63cd48be40d8dcf75c5dc9c94b9c1f1'
6
+ metadata.gz: 67dfd501d49e2cf8d8c3cb142c884743a342859b6e330ec179ddba123f1a28f20808e861fe856d751f324aab0230c420cf3713d37dc61a1919bc249e9065d026
7
+ data.tar.gz: 5e8ea6705e07e64e62eed6df26b40c473f918bfb7c566ae20c98bdff021f766f0ceba70b78375f8b3a2159ab48500004dce52db035b694fe4fba3b6486241386
@@ -5,4 +5,6 @@
5
5
  //= require angular
6
6
  //= require angular-animate
7
7
  //= require angular-ui-tinymce-rails
8
+ //= require summernote
9
+ //= require angular-summernote
8
10
  //= require_self
@@ -1,6 +1,7 @@
1
1
  @import 'bootstrap'
2
2
  @import 'font-awesome.css'
3
3
  @import 'material_icons.css'
4
+ @import 'summernote'
4
5
 
5
6
  $promethee-grey: #bbb
6
7
  $promethee-transparent-grey: transparentize($promethee-grey, .8)
@@ -2,9 +2,26 @@
2
2
  data = data.to_json unless data.is_a? String
3
3
  %>
4
4
 
5
+ <div id="promethee"
6
+ class="promethee-editor"
7
+ ng-app="Promethee"
8
+ ng-controller="PrometheeController as prometheeController"
9
+ ng-class="{
10
+ 'promethee-editor--fullscreen': fullscreen,
11
+ 'promethee-editor--move': move,
12
+ 'promethee-editor--preview': preview
13
+ }">
14
+ <input type="hidden" name="page[data]" id="page_data" value="{{data}}" />
15
+ <%= render 'promethee/partials/include_components' %>
16
+ <%= render 'promethee/partials/navbar' %>
17
+ <%= render 'promethee/partials/preview' %>
18
+ <%= render 'promethee/partials/mover' %>
19
+ <%= render 'promethee/partials/page' %>
20
+ </div>
21
+
5
22
  <script>
6
23
  var promethee = angular
7
- .module('Promethee', ['ui.tinymce', 'ngAnimate'])
24
+ .module('Promethee', ['summernote', 'ngAnimate'])
8
25
  .value('data', <%= data.html_safe %>)
9
26
  .value('definitions', [])
10
27
  .filter('htmlSafe', ['$sce', function($sce) {
@@ -81,20 +98,3 @@ data = data.to_json unless data.is_a? String
81
98
  }]);
82
99
 
83
100
  </script>
84
-
85
- <div id="promethee"
86
- class="promethee-editor"
87
- ng-app="Promethee"
88
- ng-controller="PrometheeController as prometheeController"
89
- ng-class="{
90
- 'promethee-editor--fullscreen': fullscreen,
91
- 'promethee-editor--move': move,
92
- 'promethee-editor--preview': preview
93
- }">
94
- <input type="hidden" name="page[data]" id="page_data" value="{{data}}" />
95
- <%= render 'promethee/partials/include_components' %>
96
- <%= render 'promethee/partials/navbar' %>
97
- <%= render 'promethee/partials/preview' %>
98
- <%= render 'promethee/partials/mover' %>
99
- <%= render 'promethee/partials/page' %>
100
- </div>
@@ -0,0 +1,49 @@
1
+ <%
2
+ data = data.to_json unless data.is_a? String
3
+ master = master.to_json unless master.is_a? String
4
+ %>
5
+
6
+ <div id="prometheeLocalizer"
7
+ class="promethee-localizer"
8
+ ng-app="PrometheeLocalizer"
9
+ ng-controller="PrometheeLocalizerController as prometheeLocalizerController">
10
+ <input type="hidden" name="page[data]" id="page_data" value="{{data}}" />
11
+ <%= render 'promethee/partials/include_components' %>
12
+ <div ng-repeat="component in data.components">
13
+ <ng-include src="'promethee/components/' + component.type + '/localize'"></ng-include>
14
+ </div>
15
+ </div>
16
+
17
+ <script>
18
+ var prometheeLocalizer = angular
19
+ .module('PrometheeLocalizer', ['summernote'])
20
+ .value('data', <%= data.html_safe %>)
21
+ .value('master', <%= master.html_safe %>);
22
+
23
+ prometheeLocalizer.controller('PrometheeLocalizerController', ['data', 'master', '$scope', '$http', function(data, master, $scope, $http) {
24
+
25
+ if (data === null || data === '') {
26
+ data = {
27
+ locale: '',
28
+ components: []
29
+ };
30
+ }
31
+ $scope.data = data;
32
+ $scope.master = master;
33
+
34
+ $scope.options = {
35
+ toolbar: [
36
+ ['headline', ['style']],
37
+ ['style', ['bold', 'italic']],
38
+ ['alignment', ['ul', 'ol', 'paragraph']],
39
+ ['code', ['codeview']]
40
+ ]
41
+ };
42
+
43
+ }]);
44
+
45
+ angular.element(function() {
46
+ angular.bootstrap(document.getElementById('prometheeLocalizer'), ['PrometheeLocalizer']);
47
+ });
48
+
49
+ </script>
@@ -1,7 +1,7 @@
1
1
  <%
2
- master_data = Promethee::Data.prepare data
2
+ data = Promethee::Data.prepare data
3
3
  l = Promethee::Data.prepare l
4
- Promethee::Localization.localize! master_data, l unless l.nil?
4
+ Promethee::Localization.localize! data, l unless l.nil?
5
5
  %>
6
6
  <div class="promethee">
7
7
  <%= render 'promethee/components/page', page: data %>
@@ -6,7 +6,7 @@
6
6
  <%= render 'promethee/partials/toolbar_buttons' %>
7
7
  </div>
8
8
  <div ng-show="editing">
9
- <textarea ui-tinymce="tinymceOptions" ng-model="component.attributes.body"></textarea>
9
+ <summernote config="options" ng-model="component.attributes.body"></summernote>
10
10
  </div>
11
11
  <div ng-hide="editing">
12
12
  <div class="promethee-editor__wrapper" ng-bind-html="component.attributes.body | htmlSafe" ng-click="edit()"></div>
@@ -18,6 +18,10 @@
18
18
  <div ng-bind-html="component.attributes.body | htmlSafe"></div>
19
19
  </script>
20
20
 
21
+ <script type="text/ng-template" id="promethee/components/text/localize">
22
+ <summernote config="options" ng-model="component.attributes.body"></summernote>
23
+ </script>
24
+
21
25
  <script>
22
26
  angular.injector(['ng', 'Promethee']).get('definitions').push({
23
27
  name: 'Text',
@@ -42,13 +46,13 @@
42
46
  this.editing = false;
43
47
  };
44
48
 
45
- $scope.tinymceOptions = {
46
- plugins: 'autoresize',
47
- toolbar: 'styleselect | bold italic',
48
- menubar: false,
49
- statusbar: false,
50
- branding: false,
51
- autoresize_bottom_margin: 0
49
+ $scope.options = {
50
+ toolbar: [
51
+ ['headline', ['style']],
52
+ ['style', ['bold', 'italic']],
53
+ ['alignment', ['ul', 'ol', 'paragraph']],
54
+ ['code', ['codeview']]
55
+ ]
52
56
  };
53
57
 
54
58
  }]);
@@ -1,5 +1,5 @@
1
1
  <div class="promethee-editor__page" ng-hide="preview || move">
2
- <div ng-class="{ 'container-fluid': fullscreen }">
2
+ <div ng-class="{ 'container': fullscreen }">
3
3
  <ng-include src="'promethee/components/page'"></ng-include>
4
4
  </div>
5
5
  <%= render 'promethee/partials/adder' %>
@@ -3,4 +3,8 @@ ActionView::Helpers::FormBuilder.class_eval do
3
3
  def promethee(method, options = {})
4
4
  @template.promethee_editor(@object_name, method, objectify_options(options))
5
5
  end
6
+
7
+ def promethee_localizer(method, options = {})
8
+ @template.promethee_localizer(@object_name, method, objectify_options(options))
9
+ end
6
10
  end
@@ -3,4 +3,8 @@ ActionView::Helpers::FormHelper.class_eval do
3
3
  def promethee_editor(object_name, method, options = {})
4
4
  ActionView::Helpers::Tags::PrometheeEditor.new(object_name, method, self, options).render
5
5
  end
6
+
7
+ def promethee_localizer(object_name, method, options = {})
8
+ ActionView::Helpers::Tags::PrometheeLocalizer.new(object_name, method, self, options).render
9
+ end
6
10
  end
@@ -11,6 +11,15 @@ module ActionView
11
11
  ApplicationController.renderer.render partial: 'promethee/edit', locals: { data: data }
12
12
  end
13
13
  end
14
+
15
+ class PrometheeLocalizer < Base
16
+ def render
17
+ data = object.send @method_name unless object.nil?
18
+ data = @options[:value] if @options.include? :value
19
+ master = @options[:master]
20
+ ApplicationController.renderer.render partial: 'promethee/localize', locals: { data: data, master: master }
21
+ end
22
+ end
14
23
  end
15
24
  end
16
25
  end
@@ -6,6 +6,5 @@ class Promethee::Rails::Engine < ::Rails::Engine
6
6
  end
7
7
  initializer 'assets' do |app|
8
8
  Rails.application.config.assets.precompile += %w( logo-promethee-vertical.svg logo-promethee-horizontal.svg icon-promethee.png )
9
- # Rails.application.config.assets.paths << Rails.root.join('vendor')
10
9
  end
11
10
  end
@@ -1,5 +1,5 @@
1
1
  module Promethee
2
2
  module Rails
3
- VERSION = "0.1.6"
3
+ VERSION = '0.1.7'
4
4
  end
5
5
  end
Binary file
Binary file
Binary file
@@ -0,0 +1,207 @@
1
+ /* angular-summernote v0.8.1 | (c) 2016 JeongHoon Byun | MIT license */
2
+ /* global angular */
3
+ angular.module('summernote', [])
4
+
5
+ .controller('SummernoteController', ['$scope', '$attrs', '$timeout', function($scope, $attrs, $timeout) {
6
+ 'use strict';
7
+
8
+ var currentElement,
9
+ summernoteConfig = angular.copy($scope.summernoteConfig) || {};
10
+
11
+ if (angular.isDefined($attrs.height)) { summernoteConfig.height = +$attrs.height; }
12
+ if (angular.isDefined($attrs.minHeight)) { summernoteConfig.minHeight = +$attrs.minHeight; }
13
+ if (angular.isDefined($attrs.maxHeight)) { summernoteConfig.maxHeight = +$attrs.maxHeight; }
14
+ if (angular.isDefined($attrs.placeholder)) { summernoteConfig.placeholder = $attrs.placeholder; }
15
+ if (angular.isDefined($attrs.focus)) { summernoteConfig.focus = true; }
16
+ if (angular.isDefined($attrs.airmode)) { summernoteConfig.airMode = true; }
17
+ if (angular.isDefined($attrs.dialogsinbody)) { summernoteConfig.dialogsInBody = true; }
18
+ if (angular.isDefined($attrs.lang)) {
19
+ if (!angular.isDefined($.summernote.lang[$attrs.lang])) {
20
+ throw new Error('"' + $attrs.lang + '" lang file must be exist.');
21
+ }
22
+ summernoteConfig.lang = $attrs.lang;
23
+ }
24
+
25
+ summernoteConfig.callbacks = summernoteConfig.callbacks || {};
26
+
27
+ if (angular.isDefined($attrs.onInit)) {
28
+ summernoteConfig.callbacks.onInit = function(evt) {
29
+ $scope.init({evt:evt});
30
+ };
31
+ }
32
+ if (angular.isDefined($attrs.onEnter)) {
33
+ summernoteConfig.callbacks.onEnter = function(evt) {
34
+ $scope.enter({evt:evt});
35
+ };
36
+ }
37
+ if (angular.isDefined($attrs.onFocus)) {
38
+ summernoteConfig.callbacks.onFocus = function(evt) {
39
+ $scope.focus({evt:evt});
40
+ };
41
+ }
42
+ if (angular.isDefined($attrs.onPaste)) {
43
+ summernoteConfig.callbacks.onPaste = function(evt) {
44
+ $scope.paste({evt:evt});
45
+ };
46
+ }
47
+ if (angular.isDefined($attrs.onKeyup)) {
48
+ summernoteConfig.callbacks.onKeyup = function(evt) {
49
+ $scope.keyup({evt:evt});
50
+ };
51
+ }
52
+ if (angular.isDefined($attrs.onKeydown)) {
53
+ summernoteConfig.callbacks.onKeydown = function(evt) {
54
+ $scope.keydown({evt:evt});
55
+ };
56
+ }
57
+ if (angular.isDefined($attrs.onImageUpload)) {
58
+ summernoteConfig.callbacks.onImageUpload = function(files) {
59
+ $scope.imageUpload({files:files, editable: $scope.editable});
60
+ };
61
+ }
62
+ if (angular.isDefined($attrs.onMediaDelete)) {
63
+ summernoteConfig.callbacks.onMediaDelete = function(target) {
64
+ // make new object that has information of target to avoid error:isecdom
65
+ var removedMedia = {attrs: {}};
66
+ removedMedia.tagName = target[0].tagName;
67
+ angular.forEach(target[0].attributes, function(attr) {
68
+ removedMedia.attrs[attr.name] = attr.value;
69
+ });
70
+ $scope.mediaDelete({target: removedMedia});
71
+ };
72
+ }
73
+
74
+ this.activate = function(scope, element, ngModel) {
75
+ var updateNgModel = function() {
76
+ var newValue = element.summernote('code');
77
+ if (element.summernote('isEmpty')) { newValue = ''; }
78
+ if (ngModel && ngModel.$viewValue !== newValue) {
79
+ $timeout(function() {
80
+ ngModel.$setViewValue(newValue);
81
+ }, 0);
82
+ }
83
+ };
84
+
85
+ var originalOnChange = summernoteConfig.callbacks.onChange;
86
+ summernoteConfig.callbacks.onChange = function (contents) {
87
+ $timeout(function () {
88
+ if (element.summernote('isEmpty')) {
89
+ contents = '';
90
+ }
91
+ updateNgModel();
92
+ }, 0);
93
+ if (angular.isDefined($attrs.onChange)) {
94
+ $scope.change({contents: contents, editable: $scope.editable});
95
+ } else if (angular.isFunction(originalOnChange)) {
96
+ originalOnChange.apply(this, arguments);
97
+ }
98
+ };
99
+ if (angular.isDefined($attrs.onBlur)) {
100
+ summernoteConfig.callbacks.onBlur = function (evt) {
101
+ (!summernoteConfig.airMode) && element.blur();
102
+ $scope.blur({evt: evt});
103
+ };
104
+ }
105
+ element.summernote(summernoteConfig);
106
+
107
+ var editor$ = element.next('.note-editor'),
108
+ unwatchNgModel;
109
+ editor$.find('.note-toolbar').click(function() {
110
+ updateNgModel();
111
+
112
+ // sync ngModel in codeview mode
113
+ if (editor$.hasClass('codeview')) {
114
+ editor$.on('keyup', updateNgModel);
115
+ if (ngModel) {
116
+ unwatchNgModel = scope.$watch(function () {
117
+ return ngModel.$modelValue;
118
+ }, function(newValue) {
119
+ editor$.find('.note-codable').val(newValue);
120
+ });
121
+ }
122
+ } else {
123
+ editor$.off('keyup', updateNgModel);
124
+ if (angular.isFunction(unwatchNgModel)) {
125
+ unwatchNgModel();
126
+ }
127
+ }
128
+ });
129
+
130
+ if (ngModel) {
131
+ ngModel.$render = function() {
132
+ if (ngModel.$viewValue) {
133
+ element.summernote('code', ngModel.$viewValue);
134
+ } else {
135
+ element.summernote('empty');
136
+ }
137
+ };
138
+ }
139
+
140
+ // set editable to avoid error:isecdom since Angular v1.3
141
+ if (angular.isDefined($attrs.editable)) {
142
+ $scope.editable = editor$.find('.note-editable');
143
+ }
144
+ if (angular.isDefined($attrs.editor)) {
145
+ $scope.editor = element;
146
+ }
147
+
148
+ currentElement = element;
149
+ // use jquery Event binding instead $on('$destroy') to preserve options data of DOM
150
+ element.on('$destroy', function() {
151
+ element.summernote('destroy');
152
+ $scope.summernoteDestroyed = true;
153
+ });
154
+ };
155
+
156
+ $scope.$on('$destroy', function () {
157
+ // when destroying scope directly
158
+ if (!$scope.summernoteDestroyed) {
159
+ currentElement.summernote('destroy');
160
+ }
161
+ });
162
+ }])
163
+ .directive('summernote', [function() {
164
+ 'use strict';
165
+
166
+ return {
167
+ restrict: 'EA',
168
+ transclude: 'element',
169
+ replace: true,
170
+ require: ['summernote', '?ngModel'],
171
+ controller: 'SummernoteController',
172
+ scope: {
173
+ summernoteConfig: '=config',
174
+ editable: '=',
175
+ editor: '=',
176
+ init: '&onInit',
177
+ enter: '&onEnter',
178
+ focus: '&onFocus',
179
+ blur: '&onBlur',
180
+ paste: '&onPaste',
181
+ keyup: '&onKeyup',
182
+ keydown: '&onKeydown',
183
+ change: '&onChange',
184
+ imageUpload: '&onImageUpload',
185
+ mediaDelete: '&onMediaDelete'
186
+ },
187
+ template: '<div class="summernote"></div>',
188
+ link: function(scope, element, attrs, ctrls, transclude) {
189
+ var summernoteController = ctrls[0],
190
+ ngModel = ctrls[1];
191
+
192
+ if (!ngModel) {
193
+ transclude(scope, function(clone, scope) {
194
+ // to prevent binding to angular scope (It require `tranclude: 'element'`)
195
+ element.append(clone.html());
196
+ });
197
+ summernoteController.activate(scope, element, ngModel);
198
+ } else {
199
+ var clearWatch = scope.$watch(function() { return ngModel.$viewValue; }, function(value) {
200
+ clearWatch();
201
+ element.append(value);
202
+ summernoteController.activate(scope, element, ngModel);
203
+ }, true);
204
+ }
205
+ }
206
+ };
207
+ }]);