Преглед на файлове

Merge branch 'master' into fix/234/apache_documentation

Adrien Panay преди 7 години
родител
ревизия
c3b9328f67
променени са 100 файла, в които са добавени 3581 реда и са изтрити 3830 реда
  1. 6 0
      .gitignore
  2. 2 1
      .travis.yml
  3. 19 32
      README.md
  4. 0 185
      bin/pgtool
  5. 24 35
      doc/database.md
  6. 2 2
      doc/setting.md
  7. 24 0
      doc/test.md
  8. 1 1
      install/requirements.txt
  9. 8 7
      tracim/development.ini.base
  10. 43 3
      tracim/migration/versions/f3852e1349c4_all_files_only_on_disk.py
  11. 44 48
      tracim/setup.py
  12. 2 0
      tracim/test.ini
  13. 0 2
      tracim/tracim/command/user.py
  14. 16 6
      tracim/tracim/config/app_cfg.py
  15. 58 67
      tracim/tracim/controllers/admin/user.py
  16. 27 12
      tracim/tracim/controllers/admin/workspace.py
  17. 7 1
      tracim/tracim/controllers/page.py
  18. 0 1
      tracim/tracim/controllers/user.py
  19. 3 0
      tracim/tracim/fixtures/users_and_groups.py
  20. 2068 0
      tracim/tracim/i18n/en/LC_MESSAGES/tracim.po
  21. BIN
      tracim/tracim/i18n/fr/LC_MESSAGES/tracim.mo
  22. 0 24
      tracim/tracim/i18n/ru/LC_MESSAGES/pboard.po
  23. 41 29
      tracim/tracim/lib/auth/internal.py
  24. 9 6
      tracim/tracim/lib/email.py
  25. 38 8
      tracim/tracim/lib/notifications.py
  26. 1 5
      tracim/tracim/lib/userworkspace.py
  27. 19 3
      tracim/tracim/lib/workspace.py
  28. 63 50
      tracim/tracim/model/auth.py
  29. 9 1
      tracim/tracim/model/data.py
  30. 6 6
      tracim/tracim/public/assets/tinymce/LICENSE.TXT
  31. 755 653
      tracim/tracim/public/assets/tinymce/changelog.txt
  32. 1 0
      tracim/tracim/public/assets/tinymce/js/tinymce/jquery.tinymce.min.js
  33. 6 6
      tracim/tracim/public/assets/tinymce/js/tinymce/license.txt
  34. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/advlist/plugin.min.js
  35. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/anchor/plugin.min.js
  36. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/autolink/plugin.min.js
  37. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/autoresize/plugin.min.js
  38. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/autosave/plugin.min.js
  39. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/bbcode/plugin.min.js
  40. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/charmap/plugin.min.js
  41. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/code/plugin.min.js
  42. 138 0
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/codesample/css/prism.css
  43. 1 0
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/codesample/plugin.min.js
  44. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/colorpicker/plugin.min.js
  45. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/contextmenu/plugin.min.js
  46. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/directionality/plugin.min.js
  47. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/emoticons/plugin.min.js
  48. 0 8
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/example/dialog.html
  49. 0 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/example/plugin.min.js
  50. 0 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/example_dependency/plugin.min.js
  51. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/fullpage/plugin.min.js
  52. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/fullscreen/plugin.min.js
  53. BIN
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/help/img/logo.png
  54. 1 0
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/help/plugin.min.js
  55. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/hr/plugin.min.js
  56. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/image/plugin.min.js
  57. 2 0
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/imagetools/plugin.min.js
  58. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/importcss/plugin.min.js
  59. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/insertdatetime/plugin.min.js
  60. 0 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/layer/plugin.min.js
  61. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/legacyoutput/plugin.min.js
  62. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/link/plugin.min.js
  63. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/lists/plugin.min.js
  64. BIN
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/media/moxieplayer.swf
  65. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/media/plugin.min.js
  66. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/nonbreaking/plugin.min.js
  67. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/noneditable/plugin.min.js
  68. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/pagebreak/plugin.min.js
  69. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/paste/plugin.min.js
  70. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/preview/plugin.min.js
  71. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/print/plugin.min.js
  72. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/save/plugin.min.js
  73. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/searchreplace/plugin.min.js
  74. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/spellchecker/plugin.min.js
  75. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/tabfocus/plugin.min.js
  76. 2 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/table/plugin.min.js
  77. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/template/plugin.min.js
  78. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/textcolor/plugin.min.js
  79. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/textpattern/plugin.min.js
  80. 1 0
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/toc/plugin.min.js
  81. 96 77
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/visualblocks/css/visualblocks.css
  82. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/visualblocks/plugin.min.js
  83. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/visualchars/plugin.min.js
  84. 1 1
      tracim/tracim/public/assets/tinymce/js/tinymce/plugins/wordcount/plugin.min.js
  85. 0 147
      tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/Variables.less
  86. 0 1
      tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/content.inline.min.css
  87. 0 1
      tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/content.min.css
  88. 0 1
      tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/fonts/readme.md
  89. BIN
      tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/fonts/tinymce-small.eot
  90. 0 1043
      tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/fonts/tinymce-small.json
  91. 0 62
      tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/fonts/tinymce-small.svg
  92. BIN
      tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/fonts/tinymce-small.ttf
  93. BIN
      tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/fonts/tinymce-small.woff
  94. BIN
      tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/fonts/tinymce.eot
  95. 0 1191
      tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/fonts/tinymce.json
  96. 0 63
      tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/fonts/tinymce.svg
  97. BIN
      tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/fonts/tinymce.ttf
  98. BIN
      tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/fonts/tinymce.woff
  99. BIN
      tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/img/anchor.gif
  100. 0 0
      tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/img/loader.gif

+ 6 - 0
.gitignore Целия файл

@@ -60,6 +60,9 @@ tracim/data/
60 60
 # file depot
61 61
 tracim/depot/
62 62
 
63
+# radicale
64
+tracim/radicale/
65
+
63 66
 # Site-local config file
64 67
 development.ini
65 68
 track.js
@@ -74,3 +77,6 @@ wsgidav.conf
74 77
 # builded files from gulp scripts
75 78
 /tracim/tracim/public/assets/dist/
76 79
 /tracim/tracim/public/assets/js/main_es5.js
80
+
81
+# binary translation files
82
+*.mo

+ 2 - 1
.travis.yml Целия файл

@@ -15,11 +15,12 @@ addons:
15 15
   mysql: "5.5"
16 16
 
17 17
 install:
18
-  - cd tracim && python setup.py develop; cd -
18
+  - cd tracim && python setup.py develop && cd -
19 19
   - echo coveralls >> install/requirements.txt; echo
20 20
   - cat install/requirements.postgresql.txt >> install/requirements.txt; echo
21 21
   - cat install/requirements.mysql.txt >> install/requirements.txt; echo
22 22
   - pip install -r install/requirements.txt; echo
23
+  - cd tracim && python setup.py compile_catalog && cd -
23 24
 
24 25
 before_script:
25 26
   - cp ${TRAVIS_BUILD_DIR}/tracim/development.ini.base ${TRAVIS_BUILD_DIR}/tracim/development.ini

+ 19 - 32
README.md Целия файл

@@ -60,8 +60,7 @@ The user interface is easy to use: it's based on the well-known folders and file
60 60
 
61 61
 ## Licence ##
62 62
 
63
-Tracim is licensed under the terms of the
64
-[GNU Affero General Public License](http://www.gnu.org/licenses/agpl.txt) as published by the [Free Software Foundation](http://www.fsf.org/).
63
+Tracim is licensed under the terms of the [MIT License](https://opensource.org/licenses/mit-license.php)
65 64
 
66 65
 ## Technical information ##
67 66
 
@@ -122,8 +121,6 @@ Get the sources from GitHub:
122 121
     git clone https://github.com/tracim/tracim.git
123 122
     cd tracim/
124 123
 
125
-*Note: Now everything is documented to be executed from the tracim directory newly created.*
126
-
127 124
 ## Frontend dependencies ##
128 125
 
129 126
 [//]: # ( from https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions)
@@ -150,7 +147,7 @@ At last, compile frontend files:
150 147
 
151 148
 Create a python virtual environment:
152 149
 
153
-    virtualenv -p /usr/bin/python3.4 tg2env
150
+    virtualenv -p /usr/bin/python3 tg2env
154 151
 
155 152
 Activate it in your terminal session (**all tracim command execution must be executed under this virtual environment**):
156 153
 
@@ -158,51 +155,41 @@ Activate it in your terminal session (**all tracim command execution must be exe
158 155
 
159 156
 Install Tracim and its dependencies:
160 157
 
161
-    cd tracim && python setup.py develop && cd -
162
-    pip install -r install/requirements.txt
158
+    cd tracim/
159
+    python setup.py develop
160
+    pip install -r ../install/requirements.txt
163 161
 
164 162
 ## Configuration files ##
165 163
 
166 164
 Create configuration files for a development environment and for `WsgiDAV`:
167 165
 
168
-    cp tracim/development.ini.base tracim/development.ini
169
-    cp tracim/wsgidav.conf.sample tracim/wsgidav.conf
166
+    cp development.ini.base development.ini
167
+    cp wsgidav.conf.sample wsgidav.conf
168
+
169
+## Translation ##
170
+
171
+Compile translation binary files from available catalogs:
172
+
173
+    python setup.py compile_catalog
170 174
 
171 175
 ## Database schema ##
172 176
 
173 177
 The last step before running the application is to initialize the database
174 178
 schema. This is done through the following command:
175 179
 
176
-    cd tracim && gearbox setup-app && cd -
177
-
178
-## Running the paste http server ##
180
+    gearbox setup-app
179 181
 
180
-    gearbox serve
182
+## Running Tracim ##
181 183
 
182
-While developing, the following command may be more convenient:
184
+The two parameters are optional but useful to reload the server upon code changes and to get debug data:
183 185
 
184 186
     gearbox serve --reload --debug
185 187
 
186
-## Running the standalone server ##
187
-
188
-Now you can run the standalone server:
189
-
190
-    ./bin/run.sh
191
-
192
-Which should result in something like this:
193
-
194
-    13:53:49,982 INFO  [gearbox] Starting subprocess with file monitor
195
-    13:53:50,646 WARNI [py.warnings] /tmp/tracim/protov1/tg2env/lib/python3.2/site-packages/tw2/core/validation.py:12: ImportWarning: Not importing directory '/tmp/tracim/protov1/tg2env/lib/python3.2/site-packages/tw2/core/i18n': missing __init__.py
196
-      from .i18n import _
197
-
198
-    13:53:50,862 INFO  [gearbox] Starting server in PID 11174.
199
-    Starting HTTP server on http://0.0.0.0:8080
200
-
201 188
 You can now enter the application at
202
-[http://localhost:8080](http://localhost:8080) and login with admin user.
189
+[http://127.0.0.1:8080](http://127.0.0.1:8080) and login with admin user:
203 190
 
204
- * user : admin@admin.admin
205
- * password : admin@admin.admin
191
+ * user : `admin@admin.admin`
192
+ * password : `admin@admin.admin`
206 193
 
207 194
 If admin user not created yet, execute following command:
208 195
 

+ 0 - 185
bin/pgtool Целия файл

@@ -1,185 +0,0 @@
1
-#!/usr/bin/python
2
-
3
-import os
4
-import sys
5
-
6
-# print 'Number of arguments:', len(sys.argv), 'arguments.'
7
-# print 'Argument List:', str(sys.argv)
8
-
9
-actions = [
10
-    'help',
11
-    'create_database',
12
-    'create_user',
13
-    'delete_database',
14
-    'delete_user',
15
-    'grant_all_privileges',
16
-    'test_connection'
17
-]
18
-
19
-def usage():
20
-    print('')
21
-    print('USAGE: '+__file__+' ['+'|'.join(action for action in actions)+'] [parameters]')
22
-    print('')
23
-    print('    Role management')
24
-    print('')
25
-    print('        '+__file__+' create_user <user_name> <password>')
26
-    print('        '+__file__+' delete_user <user_name>')
27
-    print('')
28
-    print('    Database management')
29
-    print('')
30
-    print('        '+__file__+' create_database <database_name>')
31
-    print('        '+__file__+' delete_database <database_name> --force')
32
-    print('        '+__file__+' grant_all_privileges <database_name> <user_name>')
33
-    print('')
34
-    print('    Other')
35
-    print('')
36
-    print('        '+__file__+' test_connection <database_name> <user_name> <password> [<hostname>]')
37
-    print('')
38
-    print('')
39
-    print('NOTES:')
40
-    print('    - this tool is intended to be used as \'postgres\' system user')
41
-    print('    - default hostname is 127.0.0.1')
42
-    print('')
43
-    print('')
44
-
45
-
46
-def show_help_and_exit():
47
-    usage()
48
-    exit()
49
-
50
-def on_result_and_exit(error_code):
51
-    if error_code==0:
52
-        print('')
53
-        print('')
54
-        exit(0)
55
-    
56
-    print('ERRROR')
57
-    print('')
58
-    print('')
59
-    exit(error_code)
60
-
61
-#######
62
-
63
-
64
-if len(sys.argv)<=1:
65
-    show_help_and_exit()
66
-    
67
-if sys.argv[1] not in actions:
68
-    print('Unknown command %s'%sys.argv[1])
69
-    show_help_and_exit()
70
-    
71
-if sys.argv[1]=='help':
72
-    show_help_and_exit()
73
-
74
-########################################
75
-#
76
-# BELOW ARE STANDARD ACTIONS
77
-#
78
-########################################
79
-
80
-print('')
81
-if sys.argv[1]=='create_user':
82
-    if len(sys.argv)!=4:
83
-        show_help_and_exit()
84
-    user_name = sys.argv[2]
85
-    user_pass = sys.argv[3]
86
-    
87
-    print('PG # CREATE USER')
88
-    print('----------------')
89
-    print('name:       '+user_name)
90
-    print('password:   XXX')
91
-
92
-    sql = '"CREATE USER %s WITH PASSWORD \'%s\';"' %(user_name, user_pass)
93
-    result = os.system('echo %s|psql' % (sql))
94
-    on_result_and_exit(result)
95
-
96
-
97
-if sys.argv[1]=='delete_user':
98
-    if len(sys.argv)!=3:
99
-        show_help_and_exit()
100
-
101
-    user_name = sys.argv[2]
102
-    
103
-    print('PG # DELETE USER')
104
-    print('------------------')
105
-    print('name:       '+user_name)
106
-    print('')
107
-
108
-    sql = '"DROP ROLE %s;"' %(user_name)
109
-    result = os.system('echo %s|psql' % (sql))
110
-    on_result_and_exit(result)
111
-
112
-
113
-if sys.argv[1]=='create_database':
114
-    if len(sys.argv)!=3:
115
-        show_help_and_exit()
116
-    name = sys.argv[2]
117
-
118
-    print('PG # CREATE DATABASE')
119
-    print('--------------------')
120
-    print('name:       '+name)
121
-    print('')
122
-    
123
-    sql = '"CREATE DATABASE %s;"' %(name)
124
-    result = os.system('echo %s|psql' % (sql))
125
-    on_result_and_exit(result)
126
-
127
-if sys.argv[1]=='delete_database':
128
-    if len(sys.argv)!=4:
129
-        show_help_and_exit()
130
-    name = sys.argv[2]
131
-    force = sys.argv[3]
132
-    
133
-    print('PG # DROP DATABASE')
134
-    print('------------------')
135
-    print('name:       '+name)
136
-    print('')
137
-    
138
-    if force!='--force':
139
-        print('Add --force option in order to drop a database')
140
-        on_result_and_exit(-1)
141
-        
142
-    sql = '"DROP DATABASE %s;"' %(name)
143
-    result = os.system('echo %s|psql' % (sql))
144
-    on_result_and_exit(result)
145
-
146
-
147
-if sys.argv[1]=='grant_all_privileges':
148
-    if len(sys.argv)!=4:
149
-        show_help_and_exit()
150
-    database_name = sys.argv[2]
151
-    user_name = sys.argv[3]
152
-    
153
-    print('PG # GRANT ALL PRIVILEGES ON DATABASE')
154
-    print('-------------------------------------')
155
-    print('database:   '+database_name)
156
-    print('user:       '+user_name)
157
-    print('')
158
-    
159
-    sql = '"GRANT ALL PRIVILEGES ON DATABASE %s to %s;"' % (database_name, user_name)
160
-    result = os.system('echo %s|psql' % (sql))
161
-    on_result_and_exit(result)
162
-
163
-if sys.argv[1]=='test_connection':
164
-    if len(sys.argv)<5:
165
-        show_help_and_exit()
166
-    
167
-    hostname = '127.0.0.1'
168
-    database_name = sys.argv[2]
169
-    user_name = sys.argv[3]
170
-    password = sys.argv[4]
171
-    
172
-    if len(sys.argv)>=6:
173
-        hostname = sys.argv[5]
174
-    
175
-    print('PG # CONNECT TO DATABASE')
176
-    print('------------------------')
177
-    print('server:     '+hostname)
178
-    print('database:   '+database_name)
179
-    print('username:   '+user_name)
180
-    print('')
181
-    
182
-    result = os.system('export PGPASSWORD=%s; echo "SELECT NOW();"|psql -h %s -U %s %s' % (password, hostname, user_name, database_name))
183
-    on_result_and_exit(result)
184
-
185
-

+ 24 - 35
doc/database.md Целия файл

@@ -1,4 +1,5 @@
1 1
 
2
+
2 3
 # Database #
3 4
 
4 5
 *Note: This page helps you setting up a **development** environment for `Tracim` and its ORM `SQLAlchemy` with `PostgreSQL` and `MySQL`. To set up a **production** environment, changing default database name, database user name and moreover its password is mandatory.*
@@ -11,8 +12,6 @@ If you want to use `PostgreSQL` as database engine:
11 12
 
12 13
 ### Minimalist introduction to PostgreSQL ###
13 14
 
14
-If you already use/know `PostgreSQL`, you can directly go to *Test the database access*.
15
-
16 15
 #### Driver ####
17 16
 
18 17
 Tracim uses the `psycopg2` driver between the `SQLAlchemy` ORM and the `PostgreSQL` RDBMS. Run the following command to install the right version:
@@ -32,50 +31,40 @@ If you changed the file, reload `PostgreSQL`:
32 31
 
33 32
 #### Creating a user and associated database ####
34 33
 
35
-You need a database and associated user/password. Tracim comes with `pgtool`, tool that will make this step easy:
36
-
37
-    ./bin/pgtool help
38
-
39
-Run the following self explanatory commands:
34
+Create user and database:
40 35
 
41
-    sudo su postgres
42
-    ./bin/pgtool create_user tracimuser tracimpassword
43
-    ./bin/pgtool create_database tracimdb
44
-    ./bin/pgtool grant_all_privileges tracimdb tracimuser
45
-    exit
36
+    sudo --user=postgres psql \
37
+         --command="CREATE USER tracimuser WITH PASSWORD 'tracimpassword';" \
38
+         --command="CREATE DATABASE tracimdb OWNER tracimuser;"
46 39
 
47
-#### Test the database access ####
40
+Test the database access:
48 41
 
49
-So, now you have a database and an associated user/password. A good habit is to test things before to use them, that's why we want to test the database access. This is easily done with Tracim `pgtool`:
42
+    psql --username=tracimuser --password --host=localhost --dbname=tracimdb \
43
+         --command="SELECT NOW();"
50 44
 
51
-    ./bin/pgtool test_connection tracimdb tracimuser tracimpassword 127.0.0.1
52
-
53
-The result is similar to the following :
54
-
55
-    PG # CONNECT TO DATABASE
56
-    ------------------------
57
-    server:     127.0.0.1
58
-    database:   tracimdb
59
-    username:   bibi
45
+Success output:
60 46
 
61 47
                   now
62 48
     -------------------------------
63
-     2014-11-10 09:40:23.306199+01
64
-    (1 row)
49
+    2017-08-25 15:46:41.105865+02
50
+    (1 ligne)
51
+
52
+Failure output:
65 53
 
66
-In case of failure, you would get something like this:
54
+    psql: FATAL:  password authentication failed for user "tracimuser"
55
+    FATAL:  password authentication failed for user "tracimuser"
67 56
 
68
-    PG # CONNECT TO DATABASE
69
-    ------------------------
70
-    server:     127.0.0.1
71
-    database:   tracimdb
72
-    username:   bibi
57
+In this case, delete the user and database and start over:
73 58
 
74
-    psql: FATAL:  password authentication failed for user "bibi"
75
-    FATAL:  password authentication failed for user "bibi"
76
-    ERRROR
59
+    sudo --user=postgres psql \
60
+         --command="DROP USER tracimuser;" \
61
+         --command="DROP DATABASE tracimdb;"
77 62
 
78
-In this case, delete the user and database you previously created, using `pgtool`, and do it again. Do not forget to run the `grant_all_rights` command!
63
+[//]: # (The following lines are only necessary to fix permissions on an existing database:)
64
+[//]: # (    sudo --user=postgres psql \)
65
+[//]: # (         --dbname=tracimdb \)
66
+[//]: # (         --command="GRANT ALL PRIVILEGES ON DATABASE tracimdb TO tracimuser;" \)
67
+[//]: # (         --command="GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO tracimuser;")
79 68
 
80 69
 ## MySQL ##
81 70
 

+ 2 - 2
doc/setting.md Целия файл

@@ -45,11 +45,11 @@ You must define general parameters like the `base_url` and the website title whi
45 45
 
46 46
 ## LDAP ##
47 47
 
48
-To use LDAP authentication, set `auth_type` parameter to `ldap`:
48
+`Tracim` is able to authenticate users via `LDAP`. To enable this feature, start by setting the authentication type as follow:
49 49
 
50 50
     auth_type = ldap
51 51
 
52
-Then add LDAP parameters
52
+Then add these `LDAP` parameters:
53 53
 
54 54
     # LDAP server address
55 55
     ldap_url = ldap://localhost:389

+ 24 - 0
doc/test.md Целия файл

@@ -0,0 +1,24 @@
1
+# Running tests #
2
+
3
+## Intro ##
4
+
5
+Tests on `Tracim` lays on:
6
+- [`TurboGears` tests](http://turbogears.readthedocs.io/en/tg2.3.7/turbogears/testing.html)
7
+- [`nose` test tool](http://nose.readthedocs.io/en/latest/).
8
+
9
+In order to use the `nosetests [...]` commands, change your current directory to be `tracim/` from the root of the project, also usually named `tracim/` :
10
+
11
+    (tg2env) user@host:~/tracim$ cd tracim/
12
+    (tg2env) user@host:~/tracim/tracim$
13
+
14
+## All tests ##
15
+
16
+    nosetests
17
+
18
+## One test ##
19
+
20
+    nosetests tracim/tests/models/test_content.py:TestContent.test_query
21
+
22
+## Allow debugger ##
23
+
24
+    nosetests -s

+ 1 - 1
install/requirements.txt Целия файл

@@ -38,7 +38,7 @@ pyparsing==2.0.3
38 38
 python-dateutil==2.5.3
39 39
 python-editor==1.0.1
40 40
 python-ldap-test==0.2.1
41
-repoze.lru==0.6
41
+repoze.lru==0.7
42 42
 repoze.who==2.3
43 43
 requests==2.10.0
44 44
 six==1.8.0

+ 8 - 7
tracim/development.ini.base Целия файл

@@ -32,8 +32,8 @@ cookie_secret = 3283411b-1904-4554-b0e1-883863b53080
32 32
 [app:main]
33 33
 use = egg:tracim
34 34
 full_stack = true
35
-# You can set french as default language by uncommenting next line
36
-# i18n.lang = fr
35
+# Fallback language if browser and tracim can't find one they agree on.
36
+i18n.lang = en
37 37
 
38 38
 cache_dir = %(here)s/data
39 39
 # preview generator cache directory
@@ -184,15 +184,16 @@ website.base_url = http://127.0.0.1:8080
184 184
 website.server_name = 127.0.0.1
185 185
 
186 186
 email.notification.activated = False
187
+# email.notification.log_file_path = /tmp/mail-notifications.log
187 188
 # email notifications can be sent with the user_id added as an identifier
188 189
 # this way email clients like Thunderbird will be able to distinguish
189 190
 # notifications generated by a user or another one
190 191
 email.notification.from.email = noreply+{user_id}@trac.im
191 192
 email.notification.from.default_label = Tracim Notifications
192
-email.notification.content_update.template.html = ./tracim/templates/mail/content_update_body_html.mak
193
-email.notification.content_update.template.text = ./tracim/templates/mail/content_update_body_text.mak
194
-email.notification.created_account.template.html = ./tracim/templates/mail/created_account_body_html.mak
195
-email.notification.created_account.template.text = ./tracim/templates/mail/created_account_body_text.mak
193
+email.notification.content_update.template.html = %(here)s/tracim/templates/mail/content_update_body_html.mak
194
+email.notification.content_update.template.text = %(here)s/tracim/templates/mail/content_update_body_text.mak
195
+email.notification.created_account.template.html = %(here)s/tracim/templates/mail/created_account_body_html.mak
196
+email.notification.created_account.template.text = %(here)s/tracim/templates/mail/created_account_body_text.mak
196 197
 # Note: items between { and } are variable names. Do not remove / rename them
197 198
 email.notification.content_update.subject = [{website_title}] [{workspace_label}] {content_label} ({content_status_label})
198 199
 email.notification.created_account.subject = [{website_title}] Created account
@@ -215,7 +216,7 @@ email.processing_mode = sync
215 216
 # radicale.server.host = 0.0.0.0
216 217
 # radicale.server.port = 5232
217 218
 # radicale.server.ssl = false
218
-# radicale.server.filesystem.folder = ./radicale/collections
219
+radicale.server.filesystem.folder = %(here)s/radicale/collections/
219 220
 # radicale.server.allow_origin = *
220 221
 # radicale.server.realm_message = Tracim Calendar - Password Required
221 222
 ## url can be extended like http://127.0.0.1:5232/calendar

+ 43 - 3
tracim/migration/versions/f3852e1349c4_all_files_only_on_disk.py Целия файл

@@ -1,4 +1,4 @@
1
-"""all files only on disk
1
+"""all files only on disk.
2 2
 
3 3
 Revision ID: f3852e1349c4
4 4
 Revises: 913efdf409e5
@@ -6,7 +6,12 @@ Create Date: 2017-07-24 17:15:54.278141
6 6
 
7 7
 """
8 8
 
9
+from alembic import context
9 10
 from alembic import op
11
+
12
+from depot.fields.sqlalchemy import UploadedFileField
13
+from depot.manager import DepotManager
14
+
10 15
 import sqlalchemy as sa
11 16
 
12 17
 # revision identifiers, used by Alembic.
@@ -14,13 +19,48 @@ revision = 'f3852e1349c4'
14 19
 down_revision = '913efdf409e5'
15 20
 
16 21
 
22
+def configure_depot():
23
+    """Configure Depot."""
24
+    depot_storage_name = context.config.get_main_option('depot_storage_name')
25
+    depot_storage_path = context.config.get_main_option('depot_storage_dir')
26
+    depot_storage_settings = {'depot.storage_path': depot_storage_path}
27
+    DepotManager.configure(
28
+        depot_storage_name,
29
+        depot_storage_settings,
30
+    )
31
+
32
+
33
+revision_helper = sa.Table(
34
+    'content_revisions',
35
+    sa.MetaData(),
36
+    sa.Column('revision_id', sa.Integer, primary_key=True),
37
+    sa.Column('file_content', sa.LargeBinary),
38
+    sa.Column('depot_file', UploadedFileField, nullable=True),
39
+    sa.Column('type', sa.String(32), nullable=False),
40
+)
41
+
42
+
17 43
 def upgrade():
18
-    """Drops the file content from revision."""
44
+    """Drop the file content from revision."""
19 45
     with op.batch_alter_table('content_revisions') as batch_op:
20 46
         batch_op.drop_column('file_content')
21 47
 
22 48
 
23 49
 def downgrade():
24
-    """Adds the file content in revision."""
50
+    """Add the file content in revision."""
25 51
     with op.batch_alter_table('content_revisions') as batch_op:
26 52
         batch_op.add_column(sa.Column('file_content', sa.LargeBinary))
53
+
54
+    configure_depot()
55
+    depot = DepotManager.get()
56
+    connection = op.get_bind()
57
+    select_query = revision_helper.select() \
58
+        .where(revision_helper.c.type == 'file') \
59
+        .where(revision_helper.c.depot_file.isnot(None))
60
+    files = connection.execute(select_query).fetchall()
61
+    for file in files:
62
+        depot_file_content = depot.get(file.depot_file).read()
63
+        update_query = revision_helper.update() \
64
+            .where(revision_helper.c.revision_id == file.revision_id) \
65
+            .values(file_content=depot_file_content)
66
+        connection.execute(update_query)

+ 44 - 48
tracim/setup.py Целия файл

@@ -1,23 +1,8 @@
1 1
 # -*- coding: utf-8 -*-
2
-#quickstarted Options:
3
-#
4
-# sqlalchemy: True
5
-# auth:       sqlalchemy
6
-# mako:       True
7
-#
8
-#
9
-
10
-#This is just a work-around for a Python2.7 issue causing
11
-#interpreter crash at exit when trying to log an info message.
12
-try:
13
-    import logging
14
-    import multiprocessing
15
-except:
16
-    pass
17
-
18
-import sys
19
-py_version = sys.version_info[:2]
20
-
2
+# quickstarted Options:
3
+#  sqlalchemy: True
4
+#  auth:       sqlalchemy
5
+#  mako:       True
21 6
 try:
22 7
     from setuptools import setup, find_packages
23 8
 except ImportError:
@@ -25,41 +10,46 @@ except ImportError:
25 10
     use_setuptools()
26 11
     from setuptools import setup, find_packages
27 12
 
13
+
28 14
 classifiers = [
29
-    "License :: OSI Approved :: GNU Affero General Public License v3",
15
+    "License :: OSI Approved :: MIT License",
30 16
     "Programming Language :: Python",
31 17
     "Programming Language :: Python :: 3.4",
32 18
     "Programming Language :: Python :: 3.5",
33 19
     "Programming Language :: Python :: 3.6",
34 20
 ]
35 21
 
36
-testpkgs=['WebTest >= 1.2.3',
37
-               'nose',
38
-               'coverage',
39
-               'gearbox'
40
-               ]
22
+testpkgs = [
23
+    'WebTest >= 1.2.3',
24
+    'nose',
25
+    'coverage',
26
+    'gearbox',
27
+]
41 28
 
42
-install_requires=[
43
-    "TurboGears2==2.3.7",
44
-    "Genshi",
45
-    "Mako",
46
-    "zope.sqlalchemy >= 0.4",
47
-    "sqlalchemy",
48
-    "alembic",
49
-    "repoze.who",
50
-    "who_ldap>=3.2.1",
51
-    "python-ldap-test==0.2.1",
52
-    "unicode-slugify==0.1.3",
53
-    "pytz==2014.7",
29
+install_requires = [
30
+    'TurboGears2==2.3.7',
31
+    'Genshi',
32
+    'Mako',
33
+    'zope.sqlalchemy >= 0.4',
34
+    'sqlalchemy',
35
+    'alembic',
36
+    'repoze.who',
37
+    'who_ldap>=3.2.1',
38
+    'python-ldap-test==0.2.1',
39
+    'unicode-slugify==0.1.3',
40
+    'pytz==2014.7',
54 41
     'rq==0.7.1',
55 42
     'filedepot>=0.5.0',
56
-    'preview-generator'
57
-    ]
43
+    'preview-generator',
44
+]
58 45
 
59 46
 setup(
60 47
     name='tracim',
61 48
     version='1.0.0',
62
-    description='Tracim is plateform software designed to improve traceability and productivity in collaborative work.',
49
+    description=(
50
+        'Tracim is a plateform software designed to improve '
51
+        'traceability and productivity in collaborative work.'
52
+    ),
63 53
     author='Damien ACCORSI',
64 54
     author_email='damien.accorsi@free.fr',
65 55
     url='https://github.com/tracim/tracim',
@@ -68,14 +58,20 @@ setup(
68 58
     include_package_data=True,
69 59
     test_suite='nose.collector',
70 60
     tests_require=testpkgs,
71
-    package_data={'tracim': ['i18n/*/LC_MESSAGES/*.mo',
72
-                                 'templates/*/*',
73
-                                 'public/*/*']},
74
-    message_extractors={'tracim': [
61
+    package_data={
62
+        'tracim': [
63
+            'i18n/*/LC_MESSAGES/*.mo',
64
+            'templates/*/*',
65
+            'public/*/*',
66
+        ]
67
+    },
68
+    message_extractors={
69
+        'tracim': [
75 70
             ('**.py', 'python', None),
76 71
             ('templates/**.mak', 'mako', {'input_encoding': 'utf-8'}),
77
-            ('public/**', 'ignore', None)]},
78
-
72
+            ('public/**', 'ignore', None)
73
+        ]
74
+    },
79 75
     entry_points={
80 76
         'paste.app_factory': [
81 77
             'main = tracim.config.middleware:make_app'
@@ -92,6 +88,6 @@ setup(
92 88
     },
93 89
     dependency_links=[
94 90
         'http://github.com/algoo/preview-generator/tarball/master#egg=preview_generator-1.0',
95
-        ],
96
-    zip_safe=False
91
+    ],
92
+    zip_safe=False,
97 93
 )

+ 2 - 0
tracim/test.ini Целия файл

@@ -15,6 +15,7 @@ radicale.server.filesystem.folder = /tmp/tracim_tests_radicale_fs
15 15
 radicale.client.base_url.host = http://localhost:15232
16 16
 radicale.client.base_url.prefix = /
17 17
 email.notification.activated = false
18
+email.notification.log_file_path = /tmp/mail-notifications-test.log
18 19
 
19 20
 [server:main]
20 21
 use = egg:gearbox#wsgiref
@@ -22,6 +23,7 @@ host = 127.0.0.1
22 23
 port = 8080
23 24
 
24 25
 [app:main]
26
+depot_storage_dir = /tmp/tracim_tests_depot/
25 27
 # sqlalchemy.url = postgresql://tracimuser:tracimpassword@127.0.0.1:5432/tracimdb_test?client_encoding=utf8
26 28
 # sqlalchemy.url = mysql+pymysql://tracimuser:tracimpassword@127.0.0.1/tracimdb_test
27 29
 sqlalchemy.url = sqlite:///tracimdb_test.sqlite

+ 0 - 2
tracim/tracim/command/user.py Целия файл

@@ -111,7 +111,6 @@ class UserCommand(AppContextCommand):
111 111
 
112 112
         try:
113 113
             user = User(email=login, password=password, **kwargs)
114
-            user.update_webdav_digest_auth(password)
115 114
             self._session.add(user)
116 115
             self._session.flush()
117 116
 
@@ -130,7 +129,6 @@ class UserCommand(AppContextCommand):
130 129
     def _update_password_for_login(self, login, password):
131 130
         user = self._user_api.get_one_by_email(login)
132 131
         user.password = password
133
-        user.update_webdav_digest_auth(password)
134 132
         self._session.flush()
135 133
         transaction.commit()
136 134
 

+ 16 - 6
tracim/tracim/config/app_cfg.py Целия файл

@@ -211,21 +211,21 @@ class CFG(object):
211 211
 
212 212
     def __init__(self):
213 213
         """Parse configuration file."""
214
+        mandatory_msg = \
215
+            'ERROR: {} configuration is mandatory. Set it before continuing.'
214 216
         self.DEPOT_STORAGE_DIR = tg.config.get(
215 217
             'depot_storage_dir',
216 218
         )
217 219
         if not self.DEPOT_STORAGE_DIR:
218 220
             raise Exception(
219
-                'ERROR: depot_storage_dir configuration is mandatory. '
220
-                'Set it before continuing.'
221
+                mandatory_msg.format('depot_storage_dir')
221 222
             )
222 223
         self.DEPOT_STORAGE_NAME = tg.config.get(
223 224
             'depot_storage_name',
224 225
         )
225 226
         if not self.DEPOT_STORAGE_NAME:
226 227
             raise Exception(
227
-                'ERROR: depot_storage_name configuration is mandatory. '
228
-                'Set it before continuing.'
228
+                mandatory_msg.format('depot_storage_name')
229 229
             )
230 230
         self.PREVIEW_CACHE_DIR = tg.config.get(
231 231
             'preview_cache_dir',
@@ -339,6 +339,10 @@ class CFG(object):
339 339
         self.EMAIL_NOTIFICATION_SMTP_PASSWORD = tg.config.get(
340 340
             'email.notification.smtp.password',
341 341
         )
342
+        self.EMAIL_NOTIFICATION_LOG_FILE_PATH = tg.config.get(
343
+            'email.notification.log_file_path',
344
+            None,
345
+        )
342 346
 
343 347
         self.TRACKER_JS_PATH = tg.config.get(
344 348
             'js_tracker_path',
@@ -382,8 +386,11 @@ class CFG(object):
382 386
         ))
383 387
         self.RADICALE_SERVER_FILE_SYSTEM_FOLDER = tg.config.get(
384 388
             'radicale.server.filesystem.folder',
385
-            './radicale/collections',
386 389
         )
390
+        if not self.RADICALE_SERVER_FILE_SYSTEM_FOLDER:
391
+            raise Exception(
392
+                mandatory_msg.format('radicale.server.filesystem.folder')
393
+            )
387 394
         self.RADICALE_SERVER_ALLOW_ORIGIN = tg.config.get(
388 395
             'radicale.server.allow_origin',
389 396
             None,
@@ -404,7 +411,10 @@ class CFG(object):
404 411
 
405 412
         self.RADICALE_CLIENT_BASE_URL_HOST = tg.config.get(
406 413
             'radicale.client.base_url.host',
407
-            None,
414
+            'http://{}:{}'.format(
415
+                self.RADICALE_SERVER_HOST,
416
+                self.RADICALE_SERVER_PORT,
417
+            ),
408 418
         )
409 419
 
410 420
         self.RADICALE_CLIENT_BASE_URL_PREFIX = tg.config.get(

+ 58 - 67
tracim/tracim/controllers/admin/user.py Целия файл

@@ -1,26 +1,14 @@
1 1
 # -*- coding: utf-8 -*-
2
-import uuid
3 2
 import random
4 3
 
5 4
 import pytz
6
-from tracim import model  as pm
5
+from tracim import model as pm
7 6
 
8
-from sprox.tablebase import TableBase
9
-from sprox.formbase import EditableForm, AddRecordForm
10
-from sprox.fillerbase import TableFiller, EditFormFiller
11
-from tracim.config.app_cfg import CFG
12
-from tw2 import forms as tw2f
13 7
 import tg
14 8
 from tg import predicates
15 9
 from tg import tmpl_context
16 10
 from tg.i18n import ugettext as _
17 11
 
18
-from sprox.widgets import PropertyMultipleSelectField
19
-from sprox._compat import unicode_text
20
-
21
-from formencode import Schema
22
-from formencode.validators import FieldsMatch
23
-
24 12
 from tracim.controllers import TIMRestController
25 13
 from tracim.controllers.user import UserWorkspaceRestController
26 14
 
@@ -28,19 +16,20 @@ from tracim.lib import CST
28 16
 from tracim.lib import helpers as h
29 17
 from tracim.lib.base import logger
30 18
 from tracim.lib.email import get_email_manager
31
-from tracim.lib.user import UserApi
32 19
 from tracim.lib.group import GroupApi
20
+from tracim.lib.user import UserApi
33 21
 from tracim.lib.userworkspace import RoleApi
34 22
 from tracim.lib.workspace import WorkspaceApi
35 23
 
36 24
 from tracim.model import DBSession
37
-from tracim.model.auth import Group, User
38
-from tracim.model.serializers import Context, CTX, DictLikeClass
25
+from tracim.model.auth import Group
26
+from tracim.model.serializers import CTX
27
+from tracim.model.serializers import Context
28
+from tracim.model.serializers import DictLikeClass
29
+
39 30
 
40 31
 class UserProfileAdminRestController(TIMRestController):
41
-    """
42
-     CRUD Controller allowing to manage groups of a user
43
-    """
32
+    """CRUD Controller allowing to manage groups of a user."""
44 33
 
45 34
     allow_only = predicates.in_group(Group.TIM_ADMIN_GROUPNAME)
46 35
 
@@ -51,14 +40,15 @@ class UserProfileAdminRestController(TIMRestController):
51 40
     @property
52 41
     def allowed_profiles(self):
53 42
         return [
54
-        UserProfileAdminRestController._ALLOWED_PROFILE_USER,
55
-        UserProfileAdminRestController._ALLOWED_PROFILE_MANAGER,
56
-        UserProfileAdminRestController._ALLOWED_PROFILE_ADMIN
57
-    ]
43
+            UserProfileAdminRestController._ALLOWED_PROFILE_USER,
44
+            UserProfileAdminRestController._ALLOWED_PROFILE_MANAGER,
45
+            UserProfileAdminRestController._ALLOWED_PROFILE_ADMIN,
46
+        ]
58 47
 
59 48
     def _before(self, *args, **kw):
60 49
         """
61
-        Instantiate the current workspace in tg.tmpl_context
50
+        Instantiate the current workspace in tg.tmpl_context.
51
+
62 52
         :param args:
63 53
         :param kw:
64 54
         :return:
@@ -72,10 +62,14 @@ class UserProfileAdminRestController(TIMRestController):
72 62
         tg.tmpl_context.user = user
73 63
 
74 64
     @tg.expose()
75
-    def switch(self, new_role):
65
+    def switch(self, new_role) -> None:
76 66
         """
77
-        :param new_role: value should be 'tracim-user', 'tracim-manager' (allowed to create workspaces) or 'tracim-admin' (admin the whole system)
78
-        :return:
67
+        Switch to the given new role.
68
+
69
+        :param new_role: value should be:
70
+            'tracim-user',
71
+            'tracim-manager' (allowed to create workspaces) or
72
+            'tracim-admin' (admin the whole system)
79 73
         """
80 74
         return self.put(new_role)
81 75
 
@@ -87,11 +81,10 @@ class UserProfileAdminRestController(TIMRestController):
87 81
 
88 82
         group_api = GroupApi(current_user)
89 83
 
90
-        if current_user.user_id==user.user_id:
84
+        if current_user.user_id == user.user_id:
91 85
             tg.flash(_('You can\'t change your own profile'), CST.STATUS_ERROR)
92 86
             tg.redirect(self.parent_controller.url())
93 87
 
94
-
95 88
         redirect_url = self.parent_controller.url(skip_id=True)
96 89
 
97 90
         if new_profile not in self.allowed_profiles:
@@ -102,9 +95,10 @@ class UserProfileAdminRestController(TIMRestController):
102 95
         pod_manager_group = group_api.get_one(Group.TIM_MANAGER)
103 96
         pod_admin_group = group_api.get_one(Group.TIM_ADMIN)
104 97
 
105
-        flash_message = _('User updated.') # this is the default value ; should never appear
98
+        # this is the default value ; should never appear
99
+        flash_message = _('User updated.')
106 100
 
107
-        if new_profile==UserProfileAdminRestController._ALLOWED_PROFILE_USER:
101
+        if new_profile == UserProfileAdminRestController._ALLOWED_PROFILE_USER:
108 102
             if pod_user_group not in user.groups:
109 103
                 user.groups.append(pod_user_group)
110 104
 
@@ -120,7 +114,7 @@ class UserProfileAdminRestController(TIMRestController):
120 114
 
121 115
             flash_message = _('User {} is now a basic user').format(user.get_display_name())
122 116
 
123
-        elif new_profile==UserProfileAdminRestController._ALLOWED_PROFILE_MANAGER:
117
+        elif new_profile == UserProfileAdminRestController._ALLOWED_PROFILE_MANAGER:
124 118
             if pod_user_group not in user.groups:
125 119
                 user.groups.append(pod_user_group)
126 120
             if pod_manager_group not in user.groups:
@@ -133,8 +127,7 @@ class UserProfileAdminRestController(TIMRestController):
133 127
 
134 128
             flash_message = _('User {} can now workspaces').format(user.get_display_name())
135 129
 
136
-
137
-        elif new_profile==UserProfileAdminRestController._ALLOWED_PROFILE_ADMIN:
130
+        elif new_profile == UserProfileAdminRestController._ALLOWED_PROFILE_ADMIN:
138 131
             if pod_user_group not in user.groups:
139 132
                 user.groups.append(pod_user_group)
140 133
             if pod_manager_group not in user.groups:
@@ -145,7 +138,9 @@ class UserProfileAdminRestController(TIMRestController):
145 138
             flash_message = _('User {} is now an administrator').format(user.get_display_name())
146 139
 
147 140
         else:
148
-            logger.error(self, 'Trying to change user {} profile with unexpected profile {}'.format(user.user_id, new_profile))
141
+            error_msg = \
142
+                'Trying to change user {} profile with unexpected profile {}'
143
+            logger.error(self, error_msg.format(user.user_id, new_profile))
149 144
             tg.flash(_('Unknown profile'), CST.STATUS_ERROR)
150 145
             tg.redirect(redirect_url)
151 146
 
@@ -163,17 +158,18 @@ class UserProfileAdminRestController(TIMRestController):
163 158
         pass
164 159
 
165 160
 
166
-
167 161
 class UserPasswordAdminRestController(TIMRestController):
168
-    """
169
-     CRUD Controller allowing to manage password of a given user
170
-    """
162
+    """CRUD Controller allowing to manage password of a given user."""
171 163
 
172
-    allow_only = predicates.in_any_group(Group.TIM_MANAGER_GROUPNAME, Group.TIM_ADMIN_GROUPNAME)
164
+    allow_only = predicates.in_any_group(
165
+            Group.TIM_MANAGER_GROUPNAME,
166
+            Group.TIM_ADMIN_GROUPNAME,
167
+        )
173 168
 
174 169
     def _before(self, *args, **kw):
175 170
         """
176
-        Instantiate the current workspace in tg.tmpl_context
171
+        Instantiate the current workspace in tg.tmpl_context.
172
+
177 173
         :param args:
178 174
         :param kw:
179 175
         :return:
@@ -186,13 +182,12 @@ class UserPasswordAdminRestController(TIMRestController):
186 182
         tg.tmpl_context.user_id = user_id
187 183
         tg.tmpl_context.user = user
188 184
 
189
-
190 185
     @tg.expose('tracim.templates.admin.user_password_edit')
191 186
     def edit(self):
192 187
         current_user = tmpl_context.current_user
193 188
         api = UserApi(current_user)
194 189
         dictified_user = Context(CTX.USER).toDict(tmpl_context.user, 'user')
195
-        return DictLikeClass(result = dictified_user)
190
+        return DictLikeClass(result=dictified_user)
196 191
 
197 192
     @tg.expose()
198 193
     def put(self, new_password1, new_password2, next_url=''):
@@ -207,12 +202,11 @@ class UserPasswordAdminRestController(TIMRestController):
207 202
             tg.flash(_('Empty password is not allowed.'), CST.STATUS_ERROR)
208 203
             tg.redirect(next_url)
209 204
 
210
-        if new_password1!=new_password2:
205
+        if new_password1 != new_password2:
211 206
             tg.flash(_('New passwords do not match.'), CST.STATUS_ERROR)
212 207
             tg.redirect(next_url)
213 208
 
214 209
         user.password = new_password1
215
-        user.update_webdav_digest_auth(new_password1)
216 210
         pm.DBSession.flush()
217 211
 
218 212
         tg.flash(_('The password has been changed'), CST.STATUS_OK)
@@ -223,7 +217,8 @@ class UserWorkspaceRestController(TIMRestController):
223 217
 
224 218
     def _before(self, *args, **kw):
225 219
         """
226
-        Instantiate the current workspace in tg.tmpl_context
220
+        Instantiate the current workspace in tg.tmpl_context.
221
+
227 222
         :param args:
228 223
         :param kw:
229 224
         :return:
@@ -266,10 +261,12 @@ class UserWorkspaceRestController(TIMRestController):
266 261
 
267 262
 
268 263
 class UserRestController(TIMRestController):
269
-    """
270
-     CRUD Controller allowing to manage Users
271
-    """
272
-    allow_only = predicates.in_any_group(Group.TIM_MANAGER_GROUPNAME, Group.TIM_ADMIN_GROUPNAME)
264
+    """CRUD Controller allowing to manage Users."""
265
+
266
+    allow_only = predicates.in_any_group(
267
+            Group.TIM_MANAGER_GROUPNAME,
268
+            Group.TIM_ADMIN_GROUPNAME,
269
+        )
273 270
 
274 271
     password = UserPasswordAdminRestController()
275 272
     profile = UserProfileAdminRestController()
@@ -284,7 +281,6 @@ class UserRestController(TIMRestController):
284 281
     def current_item_id_key_in_context(cls):
285 282
         return 'user_id'
286 283
 
287
-
288 284
     @tg.require(predicates.in_group(Group.TIM_MANAGER_GROUPNAME))
289 285
     @tg.expose('tracim.templates.admin.user_getall')
290 286
     def get_all(self, *args, **kw):
@@ -297,7 +293,7 @@ class UserRestController(TIMRestController):
297 293
         fake_api = Context(CTX.USERS).toDict({'current_user': current_user_content})
298 294
 
299 295
         dictified_users = Context(CTX.USERS).toDict(users, 'users', 'user_nb')
300
-        return DictLikeClass(result = dictified_users, fake_api=fake_api)
296
+        return DictLikeClass(result=dictified_users, fake_api=fake_api)
301 297
 
302 298
     @tg.require(predicates.in_group(Group.TIM_MANAGER_GROUPNAME))
303 299
     @tg.expose()
@@ -336,8 +332,6 @@ class UserRestController(TIMRestController):
336 332
             password = self.generate_password()
337 333
             user.password = password
338 334
 
339
-        user.webdav_left_digest_response_hash = '%s:/:%s' % (email, password)
340
-
341 335
         api.save(user)
342 336
 
343 337
         # Now add the user to related groups
@@ -361,14 +355,13 @@ class UserRestController(TIMRestController):
361 355
     @classmethod
362 356
     def generate_password(
363 357
             cls,
364
-            password_length = PASSWORD_LENGTH,
365
-            password_chars = PASSWORD_CHARACTERS
366
-            ):
367
-
358
+            password_length=PASSWORD_LENGTH,
359
+            password_chars=PASSWORD_CHARACTERS,
360
+    ):
368 361
         # character list that will be contained into the password
369 362
         char_list = []
370 363
 
371
-        for j in range(0, password_length):
364
+        for _unused in range(password_length):
372 365
             # This puts a random char from the list above inside
373 366
             # the list of chars and then merges them into a String
374 367
             char_list.append(random.choice(password_chars))
@@ -378,11 +371,11 @@ class UserRestController(TIMRestController):
378 371
     @tg.expose('tracim.templates.admin.user_getone')
379 372
     def get_one(self, user_id):
380 373
         current_user = tmpl_context.current_user
381
-        api = UserApi(current_user )
374
+        api = UserApi(current_user)
382 375
         # role_api = RoleApi(tg.tmpl_context.current_user)
383 376
         # user_api = UserApi(tg.tmpl_context.current_user)
384 377
 
385
-        user = api.get_one(user_id) # FIXME
378
+        user = api.get_one(user_id)  # FIXME
386 379
 
387 380
         role_api = RoleApi(tg.tmpl_context.current_user)
388 381
         role_list = role_api.get_roles_for_select_field()
@@ -393,8 +386,7 @@ class UserRestController(TIMRestController):
393 386
                                          role_types=role_list)
394 387
         fake_api = Context(CTX.ADMIN_USER).toDict(fake_api_content)
395 388
 
396
-        return DictLikeClass(result = dictified_user, fake_api=fake_api)
397
-
389
+        return DictLikeClass(result=dictified_user, fake_api=fake_api)
398 390
 
399 391
     @tg.expose('tracim.templates.admin.user_edit')
400 392
     def edit(self, id):
@@ -422,7 +414,6 @@ class UserRestController(TIMRestController):
422 414
             tg.redirect(next_url)
423 415
         tg.redirect(self.url())
424 416
 
425
-
426 417
     @tg.require(predicates.in_group(Group.TIM_ADMIN_GROUPNAME))
427 418
     @tg.expose()
428 419
     def enable(self, id, next_url=None):
@@ -434,7 +425,7 @@ class UserRestController(TIMRestController):
434 425
         api.save(user)
435 426
 
436 427
         tg.flash(_('User {} enabled.').format(user.get_display_name()), CST.STATUS_OK)
437
-        if next_url=='user':
428
+        if next_url == 'user':
438 429
             tg.redirect(self.url(id=user.user_id))
439 430
         tg.redirect(self.url())
440 431
 
@@ -445,7 +436,7 @@ class UserRestController(TIMRestController):
445 436
         current_user = tmpl_context.current_user
446 437
         api = UserApi(current_user)
447 438
 
448
-        if current_user.user_id==id:
439
+        if current_user.user_id == id:
449 440
             tg.flash(_('You can\'t de-activate your own account'), CST.STATUS_ERROR)
450 441
         else:
451 442
             user = api.get_one(id)
@@ -453,6 +444,6 @@ class UserRestController(TIMRestController):
453 444
             api.save(user)
454 445
             tg.flash(_('User {} disabled').format(user.get_display_name()), CST.STATUS_OK)
455 446
 
456
-        if next_url=='user':
447
+        if next_url == 'user':
457 448
             tg.redirect(self.url(id=user.user_id))
458 449
         tg.redirect(self.url())

+ 27 - 12
tracim/tracim/controllers/admin/workspace.py Целия файл

@@ -82,17 +82,28 @@ class RoleInWorkspaceRestController(TIMRestController, BaseController):
82 82
     def undelete(self, user_id, old_role):
83 83
         user_id = int(user_id)
84 84
         role_id = int(old_role)
85
-        self._add_user_with_role(user_id, role_id, None, _('User {} restored in workspace {} as {}'))
85
+        self._add_user_with_role(user_id, role_id, False, _('User {} restored in workspace {} as {}'))
86 86
         tg.redirect(self.parent_controller.url(tg.tmpl_context.workspace_id))
87 87
 
88 88
     @tg.expose()
89
-    def post(self, user_id, role_id, with_notif=False):
89
+    def post(self, user_id: str, role_id: str, with_notif: str='off'):
90 90
         user_id = int(user_id)
91 91
         role_id = int(role_id)
92
-        self._add_user_with_role(user_id, role_id, with_notif, _('User {} added to workspace {} as {}'))
92
+        self._add_user_with_role(
93
+            user_id,
94
+            role_id,
95
+            on_off_to_boolean(with_notif),
96
+            _('User {} added to workspace {} as {}')
97
+        )
93 98
         tg.redirect(self.parent_controller.url(tg.tmpl_context.workspace_id))
94 99
 
95
-    def _add_user_with_role(self, user_id: int, role_id: int, with_notif: bool, flash_msg_template)-> UserRoleInWorkspace:
100
+    def _add_user_with_role(
101
+            self,
102
+            user_id: int,
103
+            role_id: int,
104
+            with_notif: bool,
105
+            flash_msg_template: str
106
+    )-> UserRoleInWorkspace:
96 107
         user_api = UserApi(tg.tmpl_context.current_user)
97 108
         user = user_api.get_one(user_id)
98 109
 
@@ -157,17 +168,21 @@ class WorkspaceRestController(TIMRestController, BaseController):
157 168
 
158 169
     @tg.expose('tracim.templates.admin.workspace_getall')
159 170
     def get_all(self, *args, **kw):
160
-
161 171
         user = tmpl_context.current_user
162 172
         workspace_api_controller = WorkspaceApi(user)
163
-
164
-        workspaces = workspace_api_controller.get_all()
165
-
173
+        workspaces = workspace_api_controller.get_all_manageable()
166 174
         current_user_content = Context(CTX.CURRENT_USER).toDict(user)
167
-        fake_api = Context(CTX.ADMIN_WORKSPACE).toDict({'current_user': current_user_content})
168
-
169
-        dictified_workspaces = Context(CTX.ADMIN_WORKSPACES).toDict(workspaces, 'workspaces', 'workspace_nb')
170
-        return DictLikeClass(result = dictified_workspaces, fake_api=fake_api)
175
+        fake_api = Context(CTX.ADMIN_WORKSPACE) \
176
+            .toDict(
177
+                {'current_user': current_user_content}
178
+            )
179
+        dictified_workspaces = Context(CTX.ADMIN_WORKSPACES) \
180
+            .toDict(
181
+                workspaces,
182
+                'workspaces',
183
+                'workspace_nb',
184
+            )
185
+        return DictLikeClass(result=dictified_workspaces, fake_api=fake_api)
171 186
 
172 187
     @tg.expose('tracim.templates.admin.workspace_getone')
173 188
     def get_one(self, workspace_id):

+ 7 - 1
tracim/tracim/controllers/page.py Целия файл

@@ -100,8 +100,14 @@ class PagesController(TIMRestController):
100 100
             file_path = content_api.get_one_revision_filepath(file.revision_id)
101 101
         path = preview_manager.get_pdf_preview(file_path=file_path,
102 102
                                                page=page)
103
+        file_suffix = ''
104
+        if page > -1:
105
+            file_suffix = '.page-{}'.format(page + 1)
103 106
         tg.response.headers['Content-Disposition'] = \
104
-            'attachment; filename="{}"'.format(file.file_name)
107
+            'attachment; filename="{}{}.pdf"'.format(
108
+                file.label,
109
+                file_suffix,
110
+            )
105 111
         with open(path, 'rb') as pdf:
106 112
             return pdf.read()
107 113
 

+ 0 - 1
tracim/tracim/controllers/user.py Целия файл

@@ -109,7 +109,6 @@ class UserPasswordRestController(TIMRestController):
109 109
             tg.redirect(redirect_url)
110 110
 
111 111
         current_user.password = new_password1
112
-        current_user.update_webdav_digest_auth(new_password1)
113 112
         pm.DBSession.flush()
114 113
 
115 114
         tg.flash(_('Your password has been changed'))

+ 3 - 0
tracim/tracim/fixtures/users_and_groups.py Целия файл

@@ -1,6 +1,7 @@
1 1
 # -*- coding: utf-8 -*-
2 2
 from tracim import model
3 3
 from tracim.fixtures import Fixture
4
+from tracim.lib.user import UserApi
4 5
 
5 6
 
6 7
 class Base(Fixture):
@@ -12,6 +13,8 @@ class Base(Fixture):
12 13
         u.email = 'admin@admin.admin'
13 14
         u.password = 'admin@admin.admin'
14 15
         self._session.add(u)
16
+        uapi = UserApi(u)
17
+        uapi.execute_created_user_actions(u)
15 18
 
16 19
         g1 = model.Group()
17 20
         g1.group_id = 1

Файловите разлики са ограничени, защото са твърде много
+ 2068 - 0
tracim/tracim/i18n/en/LC_MESSAGES/tracim.po


BIN
tracim/tracim/i18n/fr/LC_MESSAGES/tracim.mo Целия файл


+ 0 - 24
tracim/tracim/i18n/ru/LC_MESSAGES/pboard.po Целия файл

@@ -1,24 +0,0 @@
1
-# Russian translations for ${package}.
2
-# Copyright (C) 2008 ORGANIZATION
3
-# This file is distributed under the same license as the ${package} project.
4
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
5
-#
6
-msgid ""
7
-msgstr ""
8
-"Project-Id-Version: ${package} 0.0.0\n"
9
-"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
10
-"POT-Creation-Date: 2008-01-13 14:00+0200\n"
11
-"PO-Revision-Date: 2008-01-13 14:00+0200\n"
12
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
-"Language-Team: ru <LL@li.org>\n"
14
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
15
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
16
-"MIME-Version: 1.0\n"
17
-"Content-Type: text/plain; charset=utf-8\n"
18
-"Content-Transfer-Encoding: 8bit\n"
19
-"Generated-By: Babel 0.9.1\n"
20
-
21
-#: ${package}/controllers/root.py:13
22
-msgid "Your application is now running"
23
-msgstr "Ваши приложение успешно запущено"
24
-

+ 41 - 29
tracim/tracim/lib/auth/internal.py Целия файл

@@ -1,56 +1,68 @@
1 1
 # -*- coding: utf-8 -*-
2
-from sqlalchemy import and_
2
+from typing import Dict
3
+
3 4
 from tg.configuration.auth import TGAuthMetadata
4 5
 
5 6
 from tracim.lib.auth.base import Auth
6 7
 from tracim.model import DBSession, User
7 8
 
8
-# TODO : temporary fix to update DB, to remove
9
-import transaction
10 9
 
11 10
 class InternalAuth(Auth):
12 11
 
13 12
     name = 'internal'
14 13
     _internal = True
15 14
 
16
-    def feed_config(self):
17
-        """
18
-        Fill config with internal (database) auth information.
19
-        :return:
20
-        """
15
+    def feed_config(self) -> None:
16
+        """Fill config with internal (database) auth information."""
21 17
         super().feed_config()
22 18
         self._config['sa_auth'].user_class = User
23 19
         self._config['auth_backend'] = 'sqlalchemy'
24 20
         self._config['sa_auth'].dbsession = DBSession
25
-        self._config['sa_auth'].authmetadata = InternalApplicationAuthMetadata(self._config.get('sa_auth'))
21
+        self._config['sa_auth'].authmetadata = \
22
+            InternalApplicationAuthMetadata(self._config.get('sa_auth'))
26 23
 
27 24
 
28 25
 class InternalApplicationAuthMetadata(TGAuthMetadata):
26
+
29 27
     def __init__(self, sa_auth):
30 28
         self.sa_auth = sa_auth
31 29
 
32
-    def authenticate(self, environ, identity, allow_auth_token: bool=False):
33
-        user = self.sa_auth.dbsession.query(self.sa_auth.user_class).filter(and_(
34
-            self.sa_auth.user_class.is_active == True,
35
-            self.sa_auth.user_class.email == identity['login']
36
-        )).first()
37
-
38
-        if user and user.validate_password(identity['password']):
39
-            if not user.webdav_left_digest_response_hash:
40
-                user.webdav_left_digest_response_hash = '%s:/:%s' % (identity['login'], identity['password'])
41
-                DBSession.flush()
42
-                # TODO : temporary fix to update DB, to remove
43
-                transaction.commit()
44
-            return identity['login']
45
-
46
-        if user and allow_auth_token:
47
-            user.ensure_auth_token()
48
-            if user.auth_token == identity['password']:
49
-                return identity['login']
30
+    def authenticate(
31
+            self,
32
+            environ: Dict[str, str],
33
+            identity: Dict[str, str],
34
+            allow_auth_token: bool = False,
35
+    ) -> str:
36
+        """
37
+        Authenticate using given credentials.
38
+
39
+        Checks password first then auth token if allowed.
40
+        :param environ:
41
+        :param identity: The given credentials to authenticate.
42
+        :param allow_auth_token: The indicator of auth token use.
43
+        :return: The given login or an empty string if auth failed.
44
+        """
45
+        result = ''
46
+        user = self.sa_auth.dbsession \
47
+            .query(self.sa_auth.user_class) \
48
+            .filter(self.sa_auth.user_class.is_active.is_(True)) \
49
+            .filter(self.sa_auth.user_class.email == identity['login']) \
50
+            .first()
51
+        if user:
52
+            if user.validate_password(identity['password']):
53
+                result = identity['login']
54
+            if allow_auth_token:
55
+                user.ensure_auth_token()
56
+                if user.auth_token == identity['password']:
57
+                    result = identity['login']
58
+        return result
50 59
 
51 60
     def get_user(self, identity, userid):
52
-        return self.sa_auth.dbsession.query(self.sa_auth.user_class).filter(
53
-            and_(self.sa_auth.user_class.is_active == True, self.sa_auth.user_class.email == userid)).first()
61
+        return self.sa_auth.dbsession \
62
+            .query(self.sa_auth.user_class) \
63
+            .filter(self.sa_auth.user_class.is_active.is_(True)) \
64
+            .filter(self.sa_auth.user_class.email == userid) \
65
+            .first()
54 66
 
55 67
     def get_groups(self, identity, userid):
56 68
         return [g.group_name for g in identity['user'].groups]

+ 9 - 6
tracim/tracim/lib/email.py Целия файл

@@ -1,17 +1,16 @@
1 1
 # -*- coding: utf-8 -*-
2 2
 import smtplib
3
+import typing
3 4
 from email.message import Message
4 5
 from email.mime.multipart import MIMEMultipart
5 6
 from email.mime.text import MIMEText
6 7
 
7
-import typing
8 8
 from mako.template import Template
9 9
 from tg.i18n import ugettext as _
10 10
 
11 11
 from tracim.lib.base import logger
12
-from tracim.model import User
13
-
14 12
 from tracim.lib.utils import get_rq_queue
13
+from tracim.model import User
15 14
 
16 15
 
17 16
 def send_email_through(
@@ -53,7 +52,6 @@ class SmtpConfiguration(object):
53 52
         self.password = password
54 53
 
55 54
 
56
-
57 55
 class EmailSender(object):
58 56
     """
59 57
     this class allow to send emails and has no relations with SQLAlchemy and other tg HTTP request environment
@@ -86,14 +84,19 @@ class EmailSender(object):
86 84
             self._smtp_connection.quit()
87 85
             logger.info(self, 'Connection closed.')
88 86
 
89
-
90 87
     def send_mail(self, message: MIMEMultipart):
91 88
         if not self._is_active:
92 89
             logger.info(self, 'Not sending email to {} (service desactivated)'.format(message['To']))
93 90
         else:
94
-            self.connect() # Acutally, this connects to SMTP only if required
91
+            self.connect()  # Acutally, this connects to SMTP only if required
95 92
             logger.info(self, 'Sending email to {}'.format(message['To']))
96 93
             self._smtp_connection.send_message(message)
94
+            from tracim.lib.notifications import EmailNotifier
95
+            EmailNotifier.log_notification(
96
+                action='   SENT',
97
+                recipient=message['To'],
98
+                subject=message['Subject'],
99
+            )
97 100
 
98 101
 
99 102
 class EmailManager(object):

+ 38 - 8
tracim/tracim/lib/notifications.py Целия файл

@@ -1,29 +1,31 @@
1 1
 # -*- coding: utf-8 -*-
2
+import datetime
3
+import typing
2 4
 
3 5
 from email.header import Header
4 6
 from email.mime.multipart import MIMEMultipart
5 7
 from email.mime.text import MIMEText
6 8
 
7
-import lxml
8 9
 from lxml.html.diff import htmldiff
9 10
 
10 11
 from mako.template import Template
11 12
 
12 13
 from tracim.lib.base import logger
14
+from tracim.lib.email import EmailSender
13 15
 from tracim.lib.email import SmtpConfiguration
14 16
 from tracim.lib.email import send_email_through
15
-from tracim.lib.email import EmailSender
16 17
 from tracim.lib.user import UserApi
17
-from tracim.lib.workspace import WorkspaceApi
18 18
 from tracim.lib.utils import lazy_ugettext as l_
19
-from tracim.model.serializers import Context
19
+from tracim.lib.workspace import WorkspaceApi
20
+from tracim.model.auth import User
21
+from tracim.model.data import ActionDescription
22
+from tracim.model.data import Content
23
+from tracim.model.data import ContentType
24
+from tracim.model.data import UserRoleInWorkspace
20 25
 from tracim.model.serializers import CTX
26
+from tracim.model.serializers import Context
21 27
 from tracim.model.serializers import DictLikeClass
22 28
 
23
-from tracim.model.data import Content, UserRoleInWorkspace, ContentType, \
24
-    ActionDescription
25
-from tracim.model.auth import User
26
-
27 29
 
28 30
 class INotifier(object):
29 31
     """
@@ -210,6 +212,29 @@ class EmailNotifier(object):
210 212
             email_address = email_address
211 213
         )
212 214
 
215
+    @staticmethod
216
+    def log_notification(
217
+            action: str,
218
+            recipient: typing.Optional[str],
219
+            subject: typing.Optional[str],
220
+    ) -> None:
221
+        """Log notification metadata."""
222
+        from tracim.config.app_cfg import CFG
223
+        log_path = CFG.get_instance().EMAIL_NOTIFICATION_LOG_FILE_PATH
224
+        if log_path:
225
+            # TODO - A.P - 2017-09-06 - file logging inefficiency
226
+            # Updating a document with 100 users to notify will leads to open
227
+            # and close the file 100 times.
228
+            with open(log_path, 'a') as log_file:
229
+                print(
230
+                    datetime.datetime.now(),
231
+                    action,
232
+                    recipient,
233
+                    subject,
234
+                    sep='|',
235
+                    file=log_file,
236
+                )
237
+
213 238
     def notify_content_update(self, event_actor_id: int, event_content_id: int):
214 239
         """
215 240
         Look for all users to be notified about the new content and send them an individual email
@@ -277,6 +302,11 @@ class EmailNotifier(object):
277 302
             message.attach(part1)
278 303
             message.attach(part2)
279 304
 
305
+            self.log_notification(
306
+                action='CREATED',
307
+                recipient=message['To'],
308
+                subject=message['Subject'],
309
+            )
280 310
             send_email_through(async_email_sender.send_mail, message)
281 311
 
282 312
     def _build_email_body(self, mako_template_filepath: str, role: UserRoleInWorkspace, content: Content, actor: User) -> str:

+ 1 - 5
tracim/tracim/lib/userworkspace.py Целия файл

@@ -86,16 +86,12 @@ class RoleApi(object):
86 86
     def get_one(self, user_id, workspace_id):
87 87
         return self._get_one_rsc(user_id, workspace_id).one()
88 88
 
89
-    # TODO - A.P - fix with_notif: bool vs with_notif: str
90
-    # https://github.com/tracim/tracim/issues/302
91 89
     def create_one(self, user: User, workspace: Workspace, role_level: int, with_notif: bool, flush: bool=True) -> UserRoleInWorkspace:
92 90
         role = self.create_role()
93 91
         role.user_id = user.user_id
94 92
         role.workspace = workspace
95 93
         role.role = role_level
96
-        if with_notif is not None:
97
-            from tracim.lib.helpers import on_off_to_boolean
98
-            role.do_notify = on_off_to_boolean(with_notif)
94
+        role.do_notify = with_notif
99 95
         if flush:
100 96
             DBSession.flush()
101 97
         return role

+ 19 - 3
tracim/tracim/lib/workspace.py Целия файл

@@ -1,15 +1,16 @@
1 1
 # -*- coding: utf-8 -*-
2
-import transaction
2
+import typing
3 3
 
4 4
 from sqlalchemy.orm import Query
5 5
 from tg.i18n import ugettext as _
6
+import transaction
6 7
 
7 8
 from tracim.lib.userworkspace import RoleApi
9
+from tracim.model import DBSession
8 10
 from tracim.model.auth import Group
9 11
 from tracim.model.auth import User
10
-from tracim.model.data import Workspace
11 12
 from tracim.model.data import UserRoleInWorkspace
12
-from tracim.model import DBSession
13
+from tracim.model.data import Workspace
13 14
 
14 15
 __author__ = 'damien'
15 16
 
@@ -101,6 +102,21 @@ class WorkspaceApi(object):
101 102
         workspaces.sort(key=lambda workspace: workspace.label.lower())
102 103
         return workspaces
103 104
 
105
+    def get_all_manageable(self) -> typing.List[Workspace]:
106
+        """Get all workspaces the current user has manager rights on."""
107
+        workspaces = []  # type: typing.List[Workspace]
108
+        if self._user.profile.id == Group.TIM_ADMIN:
109
+            workspaces = self._base_query().order_by(Workspace.label).all()
110
+        elif self._user.profile.id == Group.TIM_MANAGER:
111
+            workspaces = self._base_query() \
112
+                .filter(
113
+                    UserRoleInWorkspace.role ==
114
+                    UserRoleInWorkspace.WORKSPACE_MANAGER
115
+                ) \
116
+                .order_by(Workspace.label) \
117
+                .all()
118
+        return workspaces
119
+
104 120
     def disable_notifications(self, user: User, workspace: Workspace):
105 121
         for role in user.roles:
106 122
             if role.workspace==workspace:

+ 63 - 50
tracim/tracim/model/auth.py Целия файл

@@ -6,32 +6,37 @@ This is where the models used by the authentication stack are defined.
6 6
 
7 7
 It's perfectly fine to re-use this definition in the tracim application,
8 8
 though.
9
-
10 9
 """
10
+import os
11
+import time
11 12
 import uuid
12 13
 
13
-import os
14 14
 from datetime import datetime
15
-import time
16
-from hashlib import sha256
17
-from sqlalchemy.ext.hybrid import hybrid_property
18
-from tracim.lib.utils import lazy_ugettext as l_
19 15
 from hashlib import md5
20
-
21
-__all__ = ['User', 'Group', 'Permission']
16
+from hashlib import sha256
17
+from typing import TYPE_CHECKING
22 18
 
23 19
 from sqlalchemy import Column
24 20
 from sqlalchemy import ForeignKey
25 21
 from sqlalchemy import Sequence
26 22
 from sqlalchemy import Table
27
-
28
-from sqlalchemy.types import Unicode
29
-from sqlalchemy.types import Integer
30
-from sqlalchemy.types import DateTime
23
+from sqlalchemy.ext.hybrid import hybrid_property
24
+from sqlalchemy.orm import relation
25
+from sqlalchemy.orm import relationship
26
+from sqlalchemy.orm import synonym
31 27
 from sqlalchemy.types import Boolean
32
-from sqlalchemy.orm import relation, relationship, synonym
33
-from tg import request
34
-from tracim.model import DeclarativeBase, metadata, DBSession
28
+from sqlalchemy.types import DateTime
29
+from sqlalchemy.types import Integer
30
+from sqlalchemy.types import Unicode
31
+
32
+from tracim.lib.utils import lazy_ugettext as l_
33
+from tracim.model import DBSession
34
+from tracim.model import DeclarativeBase
35
+from tracim.model import metadata
36
+if TYPE_CHECKING:
37
+    from tracim.model.data import Workspace
38
+
39
+__all__ = ['User', 'Group', 'Permission']
35 40
 
36 41
 # This is the association table for the many-to-many relationship between
37 42
 # groups and permissions.
@@ -51,6 +56,7 @@ user_group_table = Table('user_group', metadata,
51 56
         onupdate="CASCADE", ondelete="CASCADE"), primary_key=True)
52 57
 )
53 58
 
59
+
54 60
 class Group(DeclarativeBase):
55 61
 
56 62
     TIM_NOBODY = 0
@@ -84,10 +90,8 @@ class Group(DeclarativeBase):
84 90
         return DBSession.query(cls).filter_by(group_name=group_name).first()
85 91
 
86 92
 
87
-
88 93
 class Profile(object):
89
-    """ This model is the "max" group associated to a given user
90
-    """
94
+    """This model is the "max" group associated to a given user."""
91 95
 
92 96
     _NAME = [Group.TIM_NOBODY_GROUPNAME,
93 97
              Group.TIM_USER_GROUPNAME,
@@ -106,15 +110,14 @@ class Profile(object):
106 110
         self.label = Profile._LABEL[profile_id]
107 111
 
108 112
 
109
-
110 113
 class User(DeclarativeBase):
111 114
     """
112 115
     User definition.
113 116
 
114 117
     This is the user definition used by :mod:`repoze.who`, which requires at
115 118
     least the ``email`` column.
116
-
117 119
     """
120
+
118 121
     __tablename__ = 'users'
119 122
 
120 123
     user_id = Column(Integer, Sequence('seq__users__user_id'), autoincrement=True, primary_key=True)
@@ -151,7 +154,7 @@ class User(DeclarativeBase):
151 154
     @property
152 155
     def profile(self) -> Profile:
153 156
         profile_id = 0
154
-        if len(self.groups)>0:
157
+        if len(self.groups) > 0:
155 158
             profile_id = max(group.group_id for group in self.groups)
156 159
         return Profile(profile_id)
157 160
 
@@ -174,30 +177,37 @@ class User(DeclarativeBase):
174 177
         return DBSession.query(cls).filter_by(email=username).first()
175 178
 
176 179
     @classmethod
177
-    def _hash_password(cls, password):
180
+    def _hash_password(cls, cleartext_password: str) -> str:
178 181
         salt = sha256()
179 182
         salt.update(os.urandom(60))
180 183
         salt = salt.hexdigest()
181 184
 
182 185
         hash = sha256()
183 186
         # Make sure password is a str because we cannot hash unicode objects
184
-        hash.update((password + salt).encode('utf-8'))
187
+        hash.update((cleartext_password + salt).encode('utf-8'))
185 188
         hash = hash.hexdigest()
186 189
 
187
-        password = salt + hash
190
+        ciphertext_password = salt + hash
188 191
 
189 192
         # Make sure the hashed password is a unicode object at the end of the
190 193
         # process because SQLAlchemy _wants_ unicode objects for Unicode cols
191 194
         # FIXME - D.A. - 2013-11-20 - The following line has been removed since using python3. Is this normal ?!
192 195
         # password = password.decode('utf-8')
193 196
 
194
-        return password
197
+        return ciphertext_password
195 198
 
196
-    def _set_password(self, password):
197
-        """Hash ``password`` on the fly and store its hashed version."""
198
-        self._password = self._hash_password(password)
199
+    def _set_password(self, cleartext_password: str) -> None:
200
+        """
201
+        Set ciphertext password from cleartext password.
199 202
 
200
-    def _get_password(self):
203
+        Hash cleartext password on the fly,
204
+        Store its ciphertext version,
205
+        Update the WebDAV hash as well.
206
+        """
207
+        self._password = self._hash_password(cleartext_password)
208
+        self.update_webdav_digest_auth(cleartext_password)
209
+
210
+    def _get_password(self) -> str:
201 211
         """Return the hashed version of the password."""
202 212
         return self._password
203 213
 
@@ -216,41 +226,45 @@ class User(DeclarativeBase):
216 226
 
217 227
     webdav_left_digest_response_hash = synonym('_webdav_left_digest_response_hash',
218 228
                                                descriptor=property(_get_hash_digest,
219
-                                                                    _set_hash_digest))
229
+                                                                   _set_hash_digest))
220 230
 
221
-    def update_webdav_digest_auth(self, password) -> None:
231
+    def update_webdav_digest_auth(self, cleartext_password: str) -> None:
222 232
         self.webdav_left_digest_response_hash \
223
-            = '{username}:/:{password}'.format(
233
+            = '{username}:/:{cleartext_password}'.format(
224 234
                 username=self.email,
225
-                password=password,
235
+                cleartext_password=cleartext_password,
226 236
             )
227 237
 
228
-
229
-    def validate_password(self, password):
238
+    def validate_password(self, cleartext_password: str) -> bool:
230 239
         """
231 240
         Check the password against existing credentials.
232 241
 
233
-        :param password: the password that was provided by the user to
234
-            try and authenticate. This is the clear text version that we will
235
-            need to match against the hashed one in the database.
236
-        :type password: unicode object.
242
+        :param cleartext_password: the password that was provided by the user
243
+            to try and authenticate. This is the clear text version that we
244
+            will need to match against the hashed one in the database.
245
+        :type cleartext_password: unicode object.
237 246
         :return: Whether the password is valid.
238 247
         :rtype: bool
239 248
 
240 249
         """
241
-        if not self.password:
242
-            return False
243
-        hash = sha256()
244
-        hash.update((password + self.password[:64]).encode('utf-8'))
245
-        return self.password[64:] == hash.hexdigest()
246
-
247
-    def get_display_name(self, remove_email_part=False):
250
+        result = False
251
+        if self.password:
252
+            hash = sha256()
253
+            hash.update((cleartext_password + self.password[:64]).encode('utf-8'))
254
+            result = self.password[64:] == hash.hexdigest()
255
+            if result and not self.webdav_left_digest_response_hash:
256
+                self.update_webdav_digest_auth(cleartext_password)
257
+        return result
258
+
259
+    def get_display_name(self, remove_email_part: bool=False) -> str:
248 260
         """
261
+        Get a name to display from corresponding member or email.
262
+
249 263
         :param remove_email_part: If True and display name based on email,
250
-         remove @xxx.xxx part of email in returned value
264
+            remove @xxx.xxx part of email in returned value
251 265
         :return: display name based on user name or email.
252 266
         """
253
-        if self.display_name != None and self.display_name != '':
267
+        if self.display_name:
254 268
             return self.display_name
255 269
         else:
256 270
             if remove_email_part:
@@ -269,6 +283,7 @@ class User(DeclarativeBase):
269 283
     def ensure_auth_token(self) -> None:
270 284
         """
271 285
         Create auth_token if None, regenerate auth_token if too much old.
286
+
272 287
         auth_token validity is set in
273 288
         :return:
274 289
         """
@@ -301,7 +316,6 @@ class Permission(DeclarativeBase):
301 316
 
302 317
     __tablename__ = 'permissions'
303 318
 
304
-
305 319
     permission_id = Column(Integer, Sequence('seq__permissions__permission_id'), autoincrement=True, primary_key=True)
306 320
     permission_name = Column(Unicode(63), unique=True, nullable=False)
307 321
     description = Column(Unicode(255))
@@ -314,4 +328,3 @@ class Permission(DeclarativeBase):
314 328
 
315 329
     def __unicode__(self):
316 330
         return self.permission_name
317
-

+ 9 - 1
tracim/tracim/model/data.py Целия файл

@@ -735,9 +735,17 @@ class Content(DeclarativeBase):
735 735
     revision_to_serialize = -0  # This flag allow to serialize a given revision if required by the user
736 736
 
737 737
     id = Column(Integer, primary_key=True)
738
+    # TODO - A.P - 2017-09-05 - revisions default sorting
739
+    # The only sorting that makes sens is ordering by "updated" field. But:
740
+    # - its content will soon replace the one of "created",
741
+    # - this "updated" field will then be dropped.
742
+    # So for now, we order by "revision_id" explicitly, but remember to switch
743
+    # to "created" once "updated" removed.
744
+    # https://github.com/tracim/tracim/issues/336
738 745
     revisions = relationship("ContentRevisionRO",
739 746
                              foreign_keys=[ContentRevisionRO.content_id],
740
-                             back_populates="node")
747
+                             back_populates="node",
748
+                             order_by="ContentRevisionRO.revision_id")
741 749
     children_revisions = relationship("ContentRevisionRO",
742 750
                                       foreign_keys=[ContentRevisionRO.parent_id],
743 751
                                       back_populates="parent")

+ 6 - 6
tracim/tracim/public/assets/tinymce/LICENSE.TXT Целия файл

@@ -1,5 +1,5 @@
1
-		  GNU LESSER GENERAL PUBLIC LICENSE
2
-		       Version 2.1, February 1999
1
+      GNU LESSER GENERAL PUBLIC LICENSE
2
+           Version 2.1, February 1999
3 3
 
4 4
  Copyright (C) 1991, 1999 Free Software Foundation, Inc.
5 5
  51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
@@ -10,7 +10,7 @@
10 10
  as the successor of the GNU Library Public License, version 2, hence
11 11
  the version number 2.1.]
12 12
 
13
-			    Preamble
13
+          Preamble
14 14
 
15 15
   The licenses for most software are designed to take away your
16 16
 freedom to share and change it.  By contrast, the GNU General Public
@@ -112,7 +112,7 @@ modification follow.  Pay close attention to the difference between a
112 112
 former contains code derived from the library, whereas the latter must
113 113
 be combined with the library in order to run.
114 114
 
115
-		  GNU LESSER GENERAL PUBLIC LICENSE
115
+      GNU LESSER GENERAL PUBLIC LICENSE
116 116
    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
117 117
 
118 118
   0. This License Agreement applies to any software library or other
@@ -432,7 +432,7 @@ decision will be guided by the two goals of preserving the free status
432 432
 of all derivatives of our free software and of promoting the sharing
433 433
 and reuse of software generally.
434 434
 
435
-			    NO WARRANTY
435
+          NO WARRANTY
436 436
 
437 437
   15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
438 438
 WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
@@ -455,7 +455,7 @@ FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
455 455
 SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
456 456
 DAMAGES.
457 457
 
458
-		     END OF TERMS AND CONDITIONS
458
+         END OF TERMS AND CONDITIONS
459 459
 
460 460
            How to Apply These Terms to Your New Libraries
461 461
 

Файловите разлики са ограничени, защото са твърде много
+ 755 - 653
tracim/tracim/public/assets/tinymce/changelog.txt


+ 1 - 0
tracim/tracim/public/assets/tinymce/js/tinymce/jquery.tinymce.min.js Целия файл

@@ -0,0 +1 @@
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c;g("0",[],function(){return function(a){function b(){function a(a){"remove"===a&&this.each(function(a,b){var c=d(b);c&&c.remove()}),this.find("span.mceEditor,div.mceEditor").each(function(a,b){var c=i().get(b.id.replace(/_parent$/,""));c&&c.remove()})}function b(b){var c,d=this;if(null!=b)a.call(d),d.each(function(a,c){var d;(d=i().get(c.id))&&d.setContent(b)});else if(d.length>0&&(c=i().get(d[0].id)))return c.getContent()}function d(a){var b=null;return a&&a.id&&g.tinymce&&(b=i().get(a.id)),b}function e(a){return!!(a&&a.length&&g.tinymce&&a.is(":tinymce"))}var h={};f.each(["text","html","val"],function(a,g){var i=h[g]=f.fn[g],j="text"===g;f.fn[g]=function(a){var g=this;if(!e(g))return i.apply(g,arguments);if(a!==c)return b.call(g.filter(":tinymce"),a),i.apply(g.not(":tinymce"),arguments),g;var h="",k=arguments;return(j?g:g.eq(0)).each(function(a,b){var c=d(b);h+=c?j?c.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g,""):c.getContent({save:!0}):i.apply(f(b),k)}),h}}),f.each(["append","prepend"],function(a,b){var g=h[b]=f.fn[b],i="prepend"===b;f.fn[b]=function(a){var b=this;return e(b)?a!==c?("string"==typeof a&&b.filter(":tinymce").each(function(b,c){var e=d(c);e&&e.setContent(i?a+e.getContent():e.getContent()+a)}),g.apply(b.not(":tinymce"),arguments),b):void 0:g.apply(b,arguments)}}),f.each(["remove","replaceWith","replaceAll","empty"],function(b,c){var d=h[c]=f.fn[c];f.fn[c]=function(){return a.call(this,c),d.apply(this,arguments)}}),h.attr=f.fn.attr,f.fn.attr=function(a,g){var i=this,j=arguments;if(!a||"value"!==a||!e(i))return g!==c?h.attr.apply(i,j):h.attr.apply(i,j);if(g!==c)return b.call(i.filter(":tinymce"),g),h.attr.apply(i.not(":tinymce"),j),i;var k=i[0],l=d(k);return l?l.getContent({save:!0}):h.attr.apply(f(k),j)}}var c,d,e,f,g,h=[];g=a?a:window,f=g.jQuery;var i=function(){return g.tinymce};f.fn.tinymce=function(a){function c(){var c=[],d=0;e||(b(),e=!0),m.each(function(b,e){var f,g=e.id,h=a.oninit;g||(e.id=g=i().DOM.uniqueId()),i().get(g)||(f=i().createEditor(g,a),c.push(f),f.on("init",function(){var a,b=h;m.css("visibility",""),h&&++d==c.length&&("string"==typeof b&&(a=b.indexOf(".")===-1?null:i().resolve(b.replace(/\.\w+$/,"")),b=i().resolve(b)),b.apply(a||i(),c))}))}),f.each(c,function(a,b){b.render()})}var j,k,l,m=this,n="";if(!m.length)return m;if(!a)return i()?i().get(m[0].id):null;if(m.css("visibility","hidden"),g.tinymce||d||!(j=a.script_url))1===d?h.push(c):c();else{d=1,k=j.substring(0,j.lastIndexOf("/")),j.indexOf(".min")!=-1&&(n=".min"),g.tinymce=g.tinyMCEPreInit||{base:k,suffix:n},j.indexOf("gzip")!=-1&&(l=a.language||"en",j=j+(/\?/.test(j)?"&":"?")+"js=true&core=true&suffix="+escape(n)+"&themes="+escape(a.theme||"modern")+"&plugins="+escape(a.plugins||"")+"&languages="+(l||""),g.tinyMCE_GZ||(g.tinyMCE_GZ={start:function(){function b(a){i().ScriptLoader.markDone(i().baseURI.toAbsolute(a))}b("langs/"+l+".js"),b("themes/"+a.theme+"/theme"+n+".js"),b("themes/"+a.theme+"/langs/"+l+".js"),f.each(a.plugins.split(","),function(a,c){c&&(b("plugins/"+c+"/plugin"+n+".js"),b("plugins/"+c+"/langs/"+l+".js"))})},end:function(){}}));var o=document.createElement("script");o.type="text/javascript",o.onload=o.onreadystatechange=function(b){b=b||window.event,2===d||"load"!=b.type&&!/complete|loaded/.test(o.readyState)||(i().dom.Event.domLoaded=1,d=2,a.script_loaded&&a.script_loaded(),c(),f.each(h,function(a,b){b()}))},o.src=j,document.body.appendChild(o)}return m},f.extend(f.expr[":"],{tinymce:function(a){var b;return!!(a.id&&"tinymce"in g&&(b=i().get(a.id),b&&b.editorManager===i()))}})}}),d("0")()}();

+ 6 - 6
tracim/tracim/public/assets/tinymce/js/tinymce/license.txt Целия файл

@@ -1,5 +1,5 @@
1
-		  GNU LESSER GENERAL PUBLIC LICENSE
2
-		       Version 2.1, February 1999
1
+      GNU LESSER GENERAL PUBLIC LICENSE
2
+           Version 2.1, February 1999
3 3
 
4 4
  Copyright (C) 1991, 1999 Free Software Foundation, Inc.
5 5
  51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
@@ -10,7 +10,7 @@
10 10
  as the successor of the GNU Library Public License, version 2, hence
11 11
  the version number 2.1.]
12 12
 
13
-			    Preamble
13
+          Preamble
14 14
 
15 15
   The licenses for most software are designed to take away your
16 16
 freedom to share and change it.  By contrast, the GNU General Public
@@ -112,7 +112,7 @@ modification follow.  Pay close attention to the difference between a
112 112
 former contains code derived from the library, whereas the latter must
113 113
 be combined with the library in order to run.
114 114
 
115
-		  GNU LESSER GENERAL PUBLIC LICENSE
115
+      GNU LESSER GENERAL PUBLIC LICENSE
116 116
    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
117 117
 
118 118
   0. This License Agreement applies to any software library or other
@@ -432,7 +432,7 @@ decision will be guided by the two goals of preserving the free status
432 432
 of all derivatives of our free software and of promoting the sharing
433 433
 and reuse of software generally.
434 434
 
435
-			    NO WARRANTY
435
+          NO WARRANTY
436 436
 
437 437
   15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
438 438
 WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
@@ -455,7 +455,7 @@ FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
455 455
 SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
456 456
 DAMAGES.
457 457
 
458
-		     END OF TERMS AND CONDITIONS
458
+         END OF TERMS AND CONDITIONS
459 459
 
460 460
            How to Apply These Terms to Your New Libraries
461 461
 

+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/advlist/plugin.min.js Целия файл

@@ -1 +1 @@
1
-tinymce.PluginManager.add("advlist",function(t){function e(t,e){var n=[];return tinymce.each(e.split(/[ ,]/),function(t){n.push({text:t.replace(/\-/g," ").replace(/\b\w/g,function(t){return t.toUpperCase()}),data:"default"==t?"":t})}),n}function n(e,n){var o,l=t.dom,a=t.selection;o=l.getParent(a.getNode(),"ol,ul"),o&&o.nodeName==e&&n!==!1||t.execCommand("UL"==e?"InsertUnorderedList":"InsertOrderedList"),n=n===!1?i[e]:n,i[e]=n,o=l.getParent(a.getNode(),"ol,ul"),o&&n&&(l.setStyle(o,"listStyleType",n),o.removeAttribute("data-mce-style")),t.focus()}function o(e){var n=t.dom.getStyle(t.dom.getParent(t.selection.getNode(),"ol,ul"),"listStyleType")||"";e.control.items().each(function(t){t.active(t.settings.data===n)})}var l,a,i={};l=e("OL",t.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman")),a=e("UL",t.getParam("advlist_bullet_styles","default,circle,disc,square")),t.addButton("numlist",{type:"splitbutton",tooltip:"Numbered list",menu:l,onshow:o,onselect:function(t){n("OL",t.control.settings.data)},onclick:function(){n("OL",!1)}}),t.addButton("bullist",{type:"splitbutton",tooltip:"Bullet list",menu:a,onshow:o,onselect:function(t){n("UL",t.control.settings.data)},onclick:function(){n("UL",!1)}})});
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("3",tinymce.util.Tools.resolve),g("1",["3"],function(a){return a("tinymce.PluginManager")}),g("2",["3"],function(a){return a("tinymce.util.Tools")}),g("0",["1","2"],function(a,b){return a.add("advlist",function(a){function c(b){return a.$.contains(a.getBody(),b)}function d(a){return a&&/^(OL|UL|DL)$/.test(a.nodeName)&&c(a)}function e(a,c){var d=[];return c&&b.each(c.split(/[ ,]/),function(a){d.push({text:a.replace(/\-/g," ").replace(/\b\w/g,function(a){return a.toUpperCase()}),data:"default"==a?"":a})}),d}function f(b,c){var d="UL"==b?"InsertUnorderedList":"InsertOrderedList";a.execCommand(d,!1,c===!1?null:{"list-style-type":c})}function g(b){var c=a.dom.getStyle(a.dom.getParent(a.selection.getNode(),"ol,ul"),"listStyleType")||"";b.control.items().each(function(a){a.active(a.settings.data===c)})}var h,i,j=function(a,c){var d=a.settings.plugins?a.settings.plugins:"";return b.inArray(d.split(/[ ,]/),c)!==-1};h=e("OL",a.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman")),i=e("UL",a.getParam("advlist_bullet_styles","default,circle,disc,square"));var k=function(c){return function(){var e=this;a.on("NodeChange",function(a){var f=b.grep(a.parents,d);e.active(f.length>0&&f[0].nodeName===c)})}};j(a,"lists")&&(a.addCommand("ApplyUnorderedListStyle",function(a,b){f("UL",b["list-style-type"])}),a.addCommand("ApplyOrderedListStyle",function(a,b){f("OL",b["list-style-type"])}),a.addButton("numlist",{type:h.length>0?"splitbutton":"button",tooltip:"Numbered list",menu:h,onPostRender:k("OL"),onshow:g,onselect:function(a){f("OL",a.control.settings.data)},onclick:function(){a.execCommand("InsertOrderedList")}}),a.addButton("bullist",{type:i.length>0?"splitbutton":"button",tooltip:"Bullet list",onPostRender:k("UL"),menu:i,onshow:g,onselect:function(a){f("UL",a.control.settings.data)},onclick:function(){a.execCommand("InsertUnorderedList")}}))}),function(){}}),d("0")()}();

+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/anchor/plugin.min.js Целия файл

@@ -1 +1 @@
1
-tinymce.PluginManager.add("anchor",function(n){function e(){var e=n.selection.getNode(),t="";"A"==e.tagName&&(t=e.name||e.id||""),n.windowManager.open({title:"Anchor",body:{type:"textbox",name:"name",size:40,label:"Name",value:t},onsubmit:function(e){n.execCommand("mceInsertContent",!1,n.dom.createHTML("a",{id:e.data.name}))}})}n.addButton("anchor",{icon:"anchor",tooltip:"Anchor",onclick:e,stateSelector:"a:not([href])"}),n.addMenuItem("anchor",{icon:"anchor",text:"Anchor",context:"insert",onclick:e})});
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("3",tinymce.util.Tools.resolve),g("1",["3"],function(a){return a("tinymce.Env")}),g("2",["3"],function(a){return a("tinymce.PluginManager")}),g("0",["1","2"],function(a,b){return b.add("anchor",function(b){var c=function(a){return!a.attr("href")&&(a.attr("id")||a.attr("name"))&&!a.firstChild},d=function(a){return function(b){for(var d=0;d<b.length;d++)c(b[d])&&b[d].attr("contenteditable",a)}},e=function(a){return/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(a)},f=function(){var a=b.selection.getNode(),c="A"==a.tagName&&""===b.dom.getAttrib(a,"href"),d="";c&&(d=a.id||a.name||""),b.windowManager.open({title:"Anchor",body:{type:"textbox",name:"id",size:40,label:"Id",value:d},onsubmit:function(d){var f=d.data.id;return e(f)?void(c?(a.removeAttribute("name"),a.id=f):(b.selection.collapse(!0),b.execCommand("mceInsertContent",!1,b.dom.createHTML("a",{id:f})))):(d.preventDefault(),void b.windowManager.alert("Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."))}})};a.ceFalse&&b.on("PreInit",function(){b.parser.addNodeFilter("a",d("false")),b.serializer.addNodeFilter("a",d(null))}),b.addCommand("mceAnchor",f),b.addButton("anchor",{icon:"anchor",tooltip:"Anchor",onclick:f,stateSelector:"a:not([href])"}),b.addMenuItem("anchor",{icon:"anchor",text:"Anchor",context:"insert",onclick:f})}),function(){}}),d("0")()}();

+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/autolink/plugin.min.js Целия файл

@@ -1 +1 @@
1
-tinymce.PluginManager.add("autolink",function(n){function t(n){o(n,-1,"(",!0)}function e(n){o(n,0,"",!0)}function i(n){o(n,-1,"",!1)}function o(n,t,e){function i(n,t){if(0>t&&(t=0),3==n.nodeType){var e=n.data.length;t>e&&(t=e)}return t}function o(n,t){f.setStart(n,i(n,t))}function r(n,t){f.setEnd(n,i(n,t))}var f,d,a,s,c,l,u,g,h,C;if(f=n.selection.getRng(!0).cloneRange(),f.startOffset<5){if(g=f.endContainer.previousSibling,!g){if(!f.endContainer.firstChild||!f.endContainer.firstChild.nextSibling)return;g=f.endContainer.firstChild.nextSibling}if(h=g.length,o(g,h),r(g,h),f.endOffset<5)return;d=f.endOffset,s=g}else{if(s=f.endContainer,3!=s.nodeType&&s.firstChild){for(;3!=s.nodeType&&s.firstChild;)s=s.firstChild;3==s.nodeType&&(o(s,0),r(s,s.nodeValue.length))}d=1==f.endOffset?2:f.endOffset-1-t}a=d;do o(s,d>=2?d-2:0),r(s,d>=1?d-1:0),d-=1,C=f.toString();while(" "!=C&&""!==C&&160!=C.charCodeAt(0)&&d-2>=0&&C!=e);f.toString()==e||160==f.toString().charCodeAt(0)?(o(s,d),r(s,a),d+=1):0===f.startOffset?(o(s,0),r(s,a)):(o(s,d),r(s,a)),l=f.toString(),"."==l.charAt(l.length-1)&&r(s,a-1),l=f.toString(),u=l.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i),u&&("www."==u[1]?u[1]="http://www.":/@$/.test(u[1])&&!/^mailto:/.test(u[1])&&(u[1]="mailto:"+u[1]),c=n.selection.getBookmark(),n.selection.setRng(f),n.execCommand("createlink",!1,u[1]+u[2]),n.selection.moveToBookmark(c),n.nodeChanged())}var r;return n.on("keydown",function(t){return 13==t.keyCode?i(n):void 0}),tinymce.Env.ie?void n.on("focus",function(){if(!r){r=!0;try{n.execCommand("AutoUrlDetect",!1,!0)}catch(t){}}}):(n.on("keypress",function(e){return 41==e.keyCode?t(n):void 0}),void n.on("keyup",function(t){return 32==t.keyCode?e(n):void 0}))});
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("3",tinymce.util.Tools.resolve),g("1",["3"],function(a){return a("tinymce.Env")}),g("2",["3"],function(a){return a("tinymce.PluginManager")}),g("0",["1","2"],function(a,b){var c=function(a,b){return a===b||" "===a||160===a.charCodeAt(0)};return b.add("autolink",function(b){function d(a){g(a,-1,"(",!0)}function e(a){g(a,0,"",!0)}function f(a){g(a,-1,"",!1)}function g(a,b,d){function e(a,b){if(b<0&&(b=0),3==a.nodeType){var c=a.data.length;b>c&&(b=c)}return b}function f(a,b){1!=a.nodeType||a.hasChildNodes()?h.setStart(a,e(a,b)):h.setStartBefore(a)}function g(a,b){1!=a.nodeType||a.hasChildNodes()?h.setEnd(a,e(a,b)):h.setEndAfter(a)}var h,j,k,l,m,n,o,p,q,r;if("A"!=a.selection.getNode().tagName){if(h=a.selection.getRng(!0).cloneRange(),h.startOffset<5){if(p=h.endContainer.previousSibling,!p){if(!h.endContainer.firstChild||!h.endContainer.firstChild.nextSibling)return;p=h.endContainer.firstChild.nextSibling}if(q=p.length,f(p,q),g(p,q),h.endOffset<5)return;j=h.endOffset,l=p}else{if(l=h.endContainer,3!=l.nodeType&&l.firstChild){for(;3!=l.nodeType&&l.firstChild;)l=l.firstChild;3==l.nodeType&&(f(l,0),g(l,l.nodeValue.length))}j=1==h.endOffset?2:h.endOffset-1-b}k=j;do f(l,j>=2?j-2:0),g(l,j>=1?j-1:0),j-=1,r=h.toString();while(" "!=r&&""!==r&&160!=r.charCodeAt(0)&&j-2>=0&&r!=d);c(h.toString(),d)?(f(l,j),g(l,k),j+=1):0===h.startOffset?(f(l,0),g(l,k)):(f(l,j),g(l,k)),n=h.toString(),"."==n.charAt(n.length-1)&&g(l,k-1),n=h.toString(),o=n.match(i),o&&("www."==o[1]?o[1]="http://www.":/@$/.test(o[1])&&!/^mailto:/.test(o[1])&&(o[1]="mailto:"+o[1]),m=a.selection.getBookmark(),a.selection.setRng(h),a.execCommand("createlink",!1,o[1]+o[2]),a.settings.default_link_target&&a.dom.setAttrib(a.selection.getNode(),"target",a.settings.default_link_target),a.selection.moveToBookmark(m),a.nodeChanged())}}var h,i=/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i;return b.settings.autolink_pattern&&(i=b.settings.autolink_pattern),b.on("keydown",function(a){if(13==a.keyCode)return f(b)}),a.ie?void b.on("focus",function(){if(!h){h=!0;try{b.execCommand("AutoUrlDetect",!1,!0)}catch(a){}}}):(b.on("keypress",function(a){if(41==a.keyCode)return d(b)}),void b.on("keyup",function(a){if(32==a.keyCode)return e(b)}))}),function(){}}),d("0")()}();

+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/autoresize/plugin.min.js Целия файл

@@ -1 +1 @@
1
-tinymce.PluginManager.add("autoresize",function(e){function t(){return e.plugins.fullscreen&&e.plugins.fullscreen.isFullscreen()}function i(o){var r,s,g,m,l,d,u,h,f,c,_,p,y=tinymce.DOM;if(s=e.getDoc()){if(g=s.body,m=s.documentElement,l=n.autoresize_min_height,!g||o&&"setcontent"===o.type&&o.initial||t())return void(g&&m&&(g.style.overflowY="auto",m.style.overflowY="auto"));u=e.dom.getStyle(g,"margin-top",!0),h=e.dom.getStyle(g,"margin-bottom",!0),f=e.dom.getStyle(g,"padding-top",!0),c=e.dom.getStyle(g,"padding-bottom",!0),_=e.dom.getStyle(g,"border-top-width",!0),p=e.dom.getStyle(g,"border-bottom-width",!0),d=g.offsetHeight+parseInt(u,10)+parseInt(h,10)+parseInt(f,10)+parseInt(c,10)+parseInt(_,10)+parseInt(p,10),(isNaN(d)||0>=d)&&(d=tinymce.Env.ie?g.scrollHeight:tinymce.Env.webkit&&0===g.clientHeight?0:g.offsetHeight),d>n.autoresize_min_height&&(l=d),n.autoresize_max_height&&d>n.autoresize_max_height?(l=n.autoresize_max_height,g.style.overflowY="auto",m.style.overflowY="auto"):(g.style.overflowY="hidden",m.style.overflowY="hidden",g.scrollTop=0),l!==a&&(r=l-a,y.setStyle(e.iframeElement,"height",l+"px"),a=l,tinymce.isWebKit&&0>r&&i(o))}}function o(e,t,n){setTimeout(function(){i({}),e--?o(e,t,n):n&&n()},t)}var n=e.settings,a=0;e.settings.inline||(n.autoresize_min_height=parseInt(e.getParam("autoresize_min_height",e.getElement().offsetHeight),10),n.autoresize_max_height=parseInt(e.getParam("autoresize_max_height",0),10),e.on("init",function(){var t=e.getParam("autoresize_overflow_padding",1);e.dom.setStyles(e.getBody(),{paddingBottom:e.getParam("autoresize_bottom_margin",50),paddingLeft:t,paddingRight:t})}),e.on("nodechange setcontent keyup FullscreenStateChanged",i),e.getParam("autoresize_on_init",!0)&&e.on("init",function(){o(20,100,function(){o(5,1e3)})}),e.addCommand("mceAutoResize",i))});
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("5",tinymce.util.Tools.resolve),g("1",["5"],function(a){return a("tinymce.dom.DOMUtils")}),g("2",["5"],function(a){return a("tinymce.Env")}),g("3",["5"],function(a){return a("tinymce.PluginManager")}),g("4",["5"],function(a){return a("tinymce.util.Delay")}),g("0",["1","2","3","4"],function(a,b,c,d){var e=a.DOM;return c.add("autoresize",function(a){function c(){return a.plugins.fullscreen&&a.plugins.fullscreen.isFullscreen()}function f(d){var g,j,k,l,m,n,o,p,q,r,s,t;if(j=a.getDoc()){if(k=j.body,l=j.documentElement,m=h.autoresize_min_height,!k||d&&"setcontent"===d.type&&d.initial||c())return void(k&&l&&(k.style.overflowY="auto",l.style.overflowY="auto"));o=a.dom.getStyle(k,"margin-top",!0),p=a.dom.getStyle(k,"margin-bottom",!0),q=a.dom.getStyle(k,"padding-top",!0),r=a.dom.getStyle(k,"padding-bottom",!0),s=a.dom.getStyle(k,"border-top-width",!0),t=a.dom.getStyle(k,"border-bottom-width",!0),n=k.offsetHeight+parseInt(o,10)+parseInt(p,10)+parseInt(q,10)+parseInt(r,10)+parseInt(s,10)+parseInt(t,10),(isNaN(n)||n<=0)&&(n=b.ie?k.scrollHeight:b.webkit&&0===k.clientHeight?0:k.offsetHeight),n>h.autoresize_min_height&&(m=n),h.autoresize_max_height&&n>h.autoresize_max_height?(m=h.autoresize_max_height,k.style.overflowY="auto",l.style.overflowY="auto"):(k.style.overflowY="hidden",l.style.overflowY="hidden",k.scrollTop=0),m!==i&&(g=m-i,e.setStyle(a.iframeElement,"height",m+"px"),i=m,b.webKit&&g<0&&f(d))}}function g(b,c,e){d.setEditorTimeout(a,function(){f({}),b--?g(b,c,e):e&&e()},c)}var h=a.settings,i=0;a.settings.inline||(h.autoresize_min_height=parseInt(a.getParam("autoresize_min_height",a.getElement().offsetHeight),10),h.autoresize_max_height=parseInt(a.getParam("autoresize_max_height",0),10),a.on("init",function(){var b,c;b=a.getParam("autoresize_overflow_padding",1),c=a.getParam("autoresize_bottom_margin",50),b!==!1&&a.dom.setStyles(a.getBody(),{paddingLeft:b,paddingRight:b}),c!==!1&&a.dom.setStyles(a.getBody(),{paddingBottom:c})}),a.on("nodechange setcontent keyup FullscreenStateChanged",f),a.getParam("autoresize_on_init",!0)&&a.on("init",function(){g(20,100,function(){g(5,1e3)})}),a.addCommand("mceAutoResize",f))}),function(){}}),d("0")()}();

+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/autosave/plugin.min.js Целия файл

@@ -1 +1 @@
1
-tinymce._beforeUnloadHandler=function(){var e;return tinymce.each(tinymce.editors,function(t){t.plugins.autosave&&t.plugins.autosave.storeDraft(),!e&&t.isDirty()&&t.getParam("autosave_ask_before_unload",!0)&&(e=t.translate("You have unsaved changes are you sure you want to navigate away?"))}),e},tinymce.PluginManager.add("autosave",function(e){function t(e,t){var n={s:1e3,m:6e4};return e=/^(\d+)([ms]?)$/.exec(""+(e||t)),(e[2]?n[e[2]]:1)*parseInt(e,10)}function n(){var e=parseInt(v.getItem(c+"time"),10)||0;return(new Date).getTime()-e>m.autosave_retention?(a(!1),!1):!0}function a(t){v.removeItem(c+"draft"),v.removeItem(c+"time"),t!==!1&&e.fire("RemoveDraft")}function r(){!f()&&e.isDirty()&&(v.setItem(c+"draft",e.getContent({format:"raw",no_events:!0})),v.setItem(c+"time",(new Date).getTime()),e.fire("StoreDraft"))}function o(){n()&&(e.setContent(v.getItem(c+"draft"),{format:"raw"}),e.fire("RestoreDraft"))}function i(){d||(setInterval(function(){e.removed||r()},m.autosave_interval),d=!0)}function s(){var t=this;t.disabled(!n()),e.on("StoreDraft RestoreDraft RemoveDraft",function(){t.disabled(!n())}),i()}function u(){e.undoManager.beforeChange(),o(),a(),e.undoManager.add()}function f(t){var n=e.settings.forced_root_block;return t=tinymce.trim("undefined"==typeof t?e.getBody().innerHTML:t),""===t||new RegExp("^<"+n+"[^>]*>(( |&nbsp;|[ 	]|<br[^>]*>)+?|)</"+n+">|<br>$","i").test(t)}var c,d,m=e.settings,v=tinymce.util.LocalStorage;c=m.autosave_prefix||"tinymce-autosave-{path}{query}-{id}-",c=c.replace(/\{path\}/g,document.location.pathname),c=c.replace(/\{query\}/g,document.location.search),c=c.replace(/\{id\}/g,e.id),m.autosave_interval=t(m.autosave_interval,"30s"),m.autosave_retention=t(m.autosave_retention,"20m"),e.addButton("restoredraft",{title:"Restore last draft",onclick:u,onPostRender:s}),e.addMenuItem("restoredraft",{text:"Restore last draft",onclick:u,onPostRender:s,context:"file"}),e.settings.autosave_restore_when_empty!==!1&&(e.on("init",function(){n()&&f()&&o()}),e.on("saveContent",function(){a()})),window.onbeforeunload=tinymce._beforeUnloadHandler,this.hasDraft=n,this.storeDraft=r,this.restoreDraft=o,this.removeDraft=a,this.isEmpty=f});
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("6",tinymce.util.Tools.resolve),g("1",["6"],function(a){return a("tinymce.EditorManager")}),g("2",["6"],function(a){return a("tinymce.PluginManager")}),g("3",["6"],function(a){return a("tinymce.util.LocalStorage")}),g("4",["6"],function(a){return a("tinymce.util.Tools")}),h("5",window),g("0",["1","2","3","4","5"],function(a,b,c,d,e){return a._beforeUnloadHandler=function(){var b;return d.each(a.get(),function(a){a.plugins.autosave&&a.plugins.autosave.storeDraft(),!b&&a.isDirty()&&a.getParam("autosave_ask_before_unload",!0)&&(b=a.translate("You have unsaved changes are you sure you want to navigate away?"))}),b},b.add("autosave",function(b){function f(a,b){var c={s:1e3,m:6e4};return a=/^(\d+)([ms]?)$/.exec(""+(a||b)),(a[2]?c[a[2]]:1)*parseInt(a,10)}function g(){var a=parseInt(c.getItem(o+"time"),10)||0;return!((new Date).getTime()-a>q.autosave_retention)||(h(!1),!1)}function h(a){c.removeItem(o+"draft"),c.removeItem(o+"time"),a!==!1&&b.fire("RemoveDraft")}function i(){!n()&&b.isDirty()&&(c.setItem(o+"draft",b.getContent({format:"raw",no_events:!0})),c.setItem(o+"time",(new Date).getTime()),b.fire("StoreDraft"))}function j(){g()&&(b.setContent(c.getItem(o+"draft"),{format:"raw"}),b.fire("RestoreDraft"))}function k(){p||(setInterval(function(){b.removed||i()},q.autosave_interval),p=!0)}function l(){var a=this;a.disabled(!g()),b.on("StoreDraft RestoreDraft RemoveDraft",function(){a.disabled(!g())}),k()}function m(){b.undoManager.beforeChange(),j(),h(),b.undoManager.add()}function n(a){var c=b.settings.forced_root_block;return a=d.trim("undefined"==typeof a?b.getBody().innerHTML:a),""===a||new RegExp("^<"+c+"[^>]*>((\xa0|&nbsp;|[ \t]|<br[^>]*>)+?|)</"+c+">|<br>$","i").test(a)}var o,p,q=b.settings;o=q.autosave_prefix||"tinymce-autosave-{path}{query}-{id}-",o=o.replace(/\{path\}/g,document.location.pathname),o=o.replace(/\{query\}/g,document.location.search),o=o.replace(/\{id\}/g,b.id),q.autosave_interval=f(q.autosave_interval,"30s"),q.autosave_retention=f(q.autosave_retention,"20m"),b.addButton("restoredraft",{title:"Restore last draft",onclick:m,onPostRender:l}),b.addMenuItem("restoredraft",{text:"Restore last draft",onclick:m,onPostRender:l,context:"file"}),b.settings.autosave_restore_when_empty!==!1&&(b.on("init",function(){g()&&n()&&j()}),b.on("saveContent",function(){h()})),e.onbeforeunload=a._beforeUnloadHandler,this.hasDraft=g,this.storeDraft=i,this.restoreDraft=j,this.removeDraft=h,this.isEmpty=n}),function(){}}),d("0")()}();

+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/bbcode/plugin.min.js Целия файл

@@ -1 +1 @@
1
-!function(){tinymce.create("tinymce.plugins.BBCodePlugin",{init:function(o){var e=this,t=o.getParam("bbcode_dialect","punbb").toLowerCase();o.on("beforeSetContent",function(o){o.content=e["_"+t+"_bbcode2html"](o.content)}),o.on("postProcess",function(o){o.set&&(o.content=e["_"+t+"_bbcode2html"](o.content)),o.get&&(o.content=e["_"+t+"_html2bbcode"](o.content))})},getInfo:function(){return{longname:"BBCode Plugin",author:"Moxiecode Systems AB",authorurl:"http://www.tinymce.com",infourl:"http://www.tinymce.com/wiki.php/Plugin:bbcode"}},_punbb_html2bbcode:function(o){function e(e,t){o=o.replace(e,t)}return o=tinymce.trim(o),e(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]"),e(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),e(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),e(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),e(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),e(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]"),e(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]"),e(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]"),e(/<font>(.*?)<\/font>/gi,"$1"),e(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]"),e(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]"),e(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]"),e(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),e(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),e(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),e(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),e(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),e(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),e(/<\/(strong|b)>/gi,"[/b]"),e(/<(strong|b)>/gi,"[b]"),e(/<\/(em|i)>/gi,"[/i]"),e(/<(em|i)>/gi,"[i]"),e(/<\/u>/gi,"[/u]"),e(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]"),e(/<u>/gi,"[u]"),e(/<blockquote[^>]*>/gi,"[quote]"),e(/<\/blockquote>/gi,"[/quote]"),e(/<br \/>/gi,"\n"),e(/<br\/>/gi,"\n"),e(/<br>/gi,"\n"),e(/<p>/gi,""),e(/<\/p>/gi,"\n"),e(/&nbsp;|\u00a0/gi," "),e(/&quot;/gi,'"'),e(/&lt;/gi,"<"),e(/&gt;/gi,">"),e(/&amp;/gi,"&"),o},_punbb_bbcode2html:function(o){function e(e,t){o=o.replace(e,t)}return o=tinymce.trim(o),e(/\n/gi,"<br />"),e(/\[b\]/gi,"<strong>"),e(/\[\/b\]/gi,"</strong>"),e(/\[i\]/gi,"<em>"),e(/\[\/i\]/gi,"</em>"),e(/\[u\]/gi,"<u>"),e(/\[\/u\]/gi,"</u>"),e(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>'),e(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>'),e(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />'),e(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font color="$1">$2</font>'),e(/\[code\](.*?)\[\/code\]/gi,'<span class="codeStyle">$1</span>&nbsp;'),e(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span>&nbsp;'),o}}),tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)}();
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("3",tinymce.util.Tools.resolve),g("1",["3"],function(a){return a("tinymce.PluginManager")}),g("2",["3"],function(a){return a("tinymce.util.Tools")}),g("0",["1","2"],function(a,b){return a.add("bbcode",function(){return{init:function(a){var b=this,c=a.getParam("bbcode_dialect","punbb").toLowerCase();a.on("beforeSetContent",function(a){a.content=b["_"+c+"_bbcode2html"](a.content)}),a.on("postProcess",function(a){a.set&&(a.content=b["_"+c+"_bbcode2html"](a.content)),a.get&&(a.content=b["_"+c+"_html2bbcode"](a.content))})},getInfo:function(){return{longname:"BBCode Plugin",author:"Ephox Corp",authorurl:"http://www.tinymce.com",infourl:"http://www.tinymce.com/wiki.php/Plugin:bbcode"}},_punbb_html2bbcode:function(a){function c(b,c){a=a.replace(b,c)}return a=b.trim(a),c(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]"),c(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),c(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),c(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),c(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),c(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]"),c(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]"),c(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]"),c(/<font>(.*?)<\/font>/gi,"$1"),c(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]"),c(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]"),c(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]"),c(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),c(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),c(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),c(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),c(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),c(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),c(/<\/(strong|b)>/gi,"[/b]"),c(/<(strong|b)>/gi,"[b]"),c(/<\/(em|i)>/gi,"[/i]"),c(/<(em|i)>/gi,"[i]"),c(/<\/u>/gi,"[/u]"),c(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]"),c(/<u>/gi,"[u]"),c(/<blockquote[^>]*>/gi,"[quote]"),c(/<\/blockquote>/gi,"[/quote]"),c(/<br \/>/gi,"\n"),c(/<br\/>/gi,"\n"),c(/<br>/gi,"\n"),c(/<p>/gi,""),c(/<\/p>/gi,"\n"),c(/&nbsp;|\u00a0/gi," "),c(/&quot;/gi,'"'),c(/&lt;/gi,"<"),c(/&gt;/gi,">"),c(/&amp;/gi,"&"),a},_punbb_bbcode2html:function(a){function c(b,c){a=a.replace(b,c)}return a=b.trim(a),c(/\n/gi,"<br />"),c(/\[b\]/gi,"<strong>"),c(/\[\/b\]/gi,"</strong>"),c(/\[i\]/gi,"<em>"),c(/\[\/i\]/gi,"</em>"),c(/\[u\]/gi,"<u>"),c(/\[\/u\]/gi,"</u>"),c(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>'),c(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>'),c(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />'),c(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font color="$1">$2</font>'),c(/\[code\](.*?)\[\/code\]/gi,'<span class="codeStyle">$1</span>&nbsp;'),c(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span>&nbsp;'),a}}}),function(){}}),d("0")()}();

Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/charmap/plugin.min.js


+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/code/plugin.min.js Целия файл

@@ -1 +1 @@
1
-tinymce.PluginManager.add("code",function(e){function o(){var o=e.windowManager.open({title:"Source code",body:{type:"textbox",name:"code",multiline:!0,minWidth:e.getParam("code_dialog_width",600),minHeight:e.getParam("code_dialog_height",Math.min(tinymce.DOM.getViewPort().h-200,500)),spellcheck:!1,style:"direction: ltr; text-align: left"},onSubmit:function(o){e.focus(),e.undoManager.transact(function(){e.setContent(o.data.code)}),e.selection.setCursorLocation(),e.nodeChanged()}});o.find("#code").value(e.getContent({source_view:!0}))}e.addCommand("mceCodeEditor",o),e.addButton("code",{icon:"code",tooltip:"Source code",onclick:o}),e.addMenuItem("code",{icon:"code",text:"Source code",context:"tools",onclick:o})});
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("3",tinymce.util.Tools.resolve),g("1",["3"],function(a){return a("tinymce.dom.DOMUtils")}),g("2",["3"],function(a){return a("tinymce.PluginManager")}),g("0",["1","2"],function(a,b){return b.add("code",function(b){function c(){var c=b.windowManager.open({title:"Source code",body:{type:"textbox",name:"code",multiline:!0,minWidth:b.getParam("code_dialog_width",600),minHeight:b.getParam("code_dialog_height",Math.min(a.DOM.getViewPort().h-200,500)),spellcheck:!1,style:"direction: ltr; text-align: left"},onSubmit:function(a){b.focus(),b.undoManager.transact(function(){b.setContent(a.data.code)}),b.selection.setCursorLocation(),b.nodeChanged()}});c.find("#code").value(b.getContent({source_view:!0}))}b.addCommand("mceCodeEditor",c),b.addButton("code",{icon:"code",tooltip:"Source code",onclick:c}),b.addMenuItem("code",{icon:"code",text:"Source code",context:"tools",onclick:c})}),function(){}}),d("0")()}();

+ 138 - 0
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/codesample/css/prism.css Целия файл

@@ -0,0 +1,138 @@
1
+/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript */
2
+/**
3
+ * prism.js default theme for JavaScript, CSS and HTML
4
+ * Based on dabblet (http://dabblet.com)
5
+ * @author Lea Verou
6
+ */
7
+
8
+code[class*="language-"],
9
+pre[class*="language-"] {
10
+  color: black;
11
+  text-shadow: 0 1px white;
12
+  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
13
+  direction: ltr;
14
+  text-align: left;
15
+  white-space: pre;
16
+  word-spacing: normal;
17
+  word-break: normal;
18
+  word-wrap: normal;
19
+  line-height: 1.5;
20
+
21
+  -moz-tab-size: 4;
22
+  -o-tab-size: 4;
23
+  tab-size: 4;
24
+
25
+  -webkit-hyphens: none;
26
+  -moz-hyphens: none;
27
+  -ms-hyphens: none;
28
+  hyphens: none;
29
+}
30
+
31
+pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
32
+code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
33
+  text-shadow: none;
34
+  background: #b3d4fc;
35
+}
36
+
37
+pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
38
+code[class*="language-"]::selection, code[class*="language-"] ::selection {
39
+  text-shadow: none;
40
+  background: #b3d4fc;
41
+}
42
+
43
+@media print {
44
+  code[class*="language-"],
45
+  pre[class*="language-"] {
46
+    text-shadow: none;
47
+  }
48
+}
49
+
50
+/* Code blocks */
51
+pre[class*="language-"] {
52
+  padding: 1em;
53
+  margin: .5em 0;
54
+  overflow: auto;
55
+}
56
+
57
+:not(pre) > code[class*="language-"],
58
+pre[class*="language-"] {
59
+  background: #f5f2f0;
60
+}
61
+
62
+/* Inline code */
63
+:not(pre) > code[class*="language-"] {
64
+  padding: .1em;
65
+  border-radius: .3em;
66
+}
67
+
68
+.token.comment,
69
+.token.prolog,
70
+.token.doctype,
71
+.token.cdata {
72
+  color: slategray;
73
+}
74
+
75
+.token.punctuation {
76
+  color: #999;
77
+}
78
+
79
+.namespace {
80
+  opacity: .7;
81
+}
82
+
83
+.token.property,
84
+.token.tag,
85
+.token.boolean,
86
+.token.number,
87
+.token.constant,
88
+.token.symbol,
89
+.token.deleted {
90
+  color: #905;
91
+}
92
+
93
+.token.selector,
94
+.token.attr-name,
95
+.token.string,
96
+.token.char,
97
+.token.builtin,
98
+.token.inserted {
99
+  color: #690;
100
+}
101
+
102
+.token.operator,
103
+.token.entity,
104
+.token.url,
105
+.language-css .token.string,
106
+.style .token.string {
107
+  color: #a67f59;
108
+  background: hsla(0, 0%, 100%, .5);
109
+}
110
+
111
+.token.atrule,
112
+.token.attr-value,
113
+.token.keyword {
114
+  color: #07a;
115
+}
116
+
117
+.token.function {
118
+  color: #DD4A68;
119
+}
120
+
121
+.token.regex,
122
+.token.important,
123
+.token.variable {
124
+  color: #e90;
125
+}
126
+
127
+.token.important,
128
+.token.bold {
129
+  font-weight: bold;
130
+}
131
+.token.italic {
132
+  font-style: italic;
133
+}
134
+
135
+.token.entity {
136
+  cursor: help;
137
+}
138
+

Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/codesample/plugin.min.js


+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/colorpicker/plugin.min.js Целия файл

@@ -1 +1 @@
1
-tinymce.PluginManager.add("colorpicker",function(e){function n(n,a){function i(e){var n=new tinymce.util.Color(e),a=n.toRgb();l.fromJSON({r:a.r,g:a.g,b:a.b,hex:n.toHex().substr(1)}),t(n.toHex())}function t(e){l.find("#preview")[0].getEl().style.background=e}var l=e.windowManager.open({title:"Color",items:{type:"container",layout:"flex",direction:"row",align:"stretch",padding:5,spacing:10,items:[{type:"colorpicker",value:a,onchange:function(){var e=this.rgb();l&&(l.find("#r").value(e.r),l.find("#g").value(e.g),l.find("#b").value(e.b),l.find("#hex").value(this.value().substr(1)),t(this.value()))}},{type:"form",padding:0,labelGap:5,defaults:{type:"textbox",size:7,value:"0",flex:1,spellcheck:!1,onchange:function(){var e,n,a=l.find("colorpicker")[0];return e=this.name(),n=this.value(),"hex"==e?(n="#"+n,i(n),void a.value(n)):(n={r:l.find("#r").value(),g:l.find("#g").value(),b:l.find("#b").value()},a.value(n),void i(n))}},items:[{name:"r",label:"R",autofocus:1},{name:"g",label:"G"},{name:"b",label:"B"},{name:"hex",label:"#",value:"000000"},{name:"preview",type:"container",border:1}]}]},onSubmit:function(){n("#"+this.toJSON().hex)}});i(a)}e.settings.color_picker_callback||(e.settings.color_picker_callback=n)});
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("3",tinymce.util.Tools.resolve),g("1",["3"],function(a){return a("tinymce.PluginManager")}),g("2",["3"],function(a){return a("tinymce.util.Color")}),g("0",["1","2"],function(a,b){return a.add("colorpicker",function(a){function c(c,d){function e(a){var c=new b(a),d=c.toRgb();g.fromJSON({r:d.r,g:d.g,b:d.b,hex:c.toHex().substr(1)}),f(c.toHex())}function f(a){g.find("#preview")[0].getEl().style.background=a}var g=a.windowManager.open({title:"Color",items:{type:"container",layout:"flex",direction:"row",align:"stretch",padding:5,spacing:10,items:[{type:"colorpicker",value:d,onchange:function(){var a=this.rgb();g&&(g.find("#r").value(a.r),g.find("#g").value(a.g),g.find("#b").value(a.b),g.find("#hex").value(this.value().substr(1)),f(this.value()))}},{type:"form",padding:0,labelGap:5,defaults:{type:"textbox",size:7,value:"0",flex:1,spellcheck:!1,onchange:function(){var a,b,c=g.find("colorpicker")[0];return a=this.name(),b=this.value(),"hex"==a?(b="#"+b,e(b),void c.value(b)):(b={r:g.find("#r").value(),g:g.find("#g").value(),b:g.find("#b").value()},c.value(b),void e(b))}},items:[{name:"r",label:"R",autofocus:1},{name:"g",label:"G"},{name:"b",label:"B"},{name:"hex",label:"#",value:"000000"},{name:"preview",type:"container",border:1}]}]},onSubmit:function(){c("#"+this.toJSON().hex)}});e(d)}a.settings.color_picker_callback||(a.settings.color_picker_callback=c)}),function(){}}),d("0")()}();

Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/contextmenu/plugin.min.js


+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/directionality/plugin.min.js Целия файл

@@ -1 +1 @@
1
-tinymce.PluginManager.add("directionality",function(t){function e(e){var i,n=t.dom,r=t.selection.getSelectedBlocks();r.length&&(i=n.getAttrib(r[0],"dir"),tinymce.each(r,function(t){n.getParent(t.parentNode,"*[dir='"+e+"']",n.getRoot())||(i!=e?n.setAttrib(t,"dir",e):n.setAttrib(t,"dir",null))}),t.nodeChanged())}function i(t){var e=[];return tinymce.each("h1 h2 h3 h4 h5 h6 div p".split(" "),function(i){e.push(i+"[dir="+t+"]")}),e.join(",")}t.addCommand("mceDirectionLTR",function(){e("ltr")}),t.addCommand("mceDirectionRTL",function(){e("rtl")}),t.addButton("ltr",{title:"Left to right",cmd:"mceDirectionLTR",stateSelector:i("ltr")}),t.addButton("rtl",{title:"Right to left",cmd:"mceDirectionRTL",stateSelector:i("rtl")})});
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("3",tinymce.util.Tools.resolve),g("1",["3"],function(a){return a("tinymce.PluginManager")}),g("2",["3"],function(a){return a("tinymce.util.Tools")}),g("0",["1","2"],function(a,b){return a.add("directionality",function(a){function c(c){var d,e=a.dom,f=a.selection.getSelectedBlocks();f.length&&(d=e.getAttrib(f[0],"dir"),b.each(f,function(a){e.getParent(a.parentNode,"*[dir='"+c+"']",e.getRoot())||(d!=c?e.setAttrib(a,"dir",c):e.setAttrib(a,"dir",null))}),a.nodeChanged())}function d(a){var c=[];return b.each("h1 h2 h3 h4 h5 h6 div p".split(" "),function(b){c.push(b+"[dir="+a+"]")}),c.join(",")}a.addCommand("mceDirectionLTR",function(){c("ltr")}),a.addCommand("mceDirectionRTL",function(){c("rtl")}),a.addButton("ltr",{title:"Left to right",cmd:"mceDirectionLTR",stateSelector:d("ltr")}),a.addButton("rtl",{title:"Right to left",cmd:"mceDirectionRTL",stateSelector:d("rtl")})}),function(){}}),d("0")()}();

+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/emoticons/plugin.min.js Целия файл

@@ -1 +1 @@
1
-tinymce.PluginManager.add("emoticons",function(t,e){function a(){var t;return t='<table role="list" class="mce-grid">',tinymce.each(i,function(a){t+="<tr>",tinymce.each(a,function(a){var i=e+"/img/smiley-"+a+".gif";t+='<td><a href="#" data-mce-url="'+i+'" data-mce-alt="'+a+'" tabindex="-1" role="option" aria-label="'+a+'"><img src="'+i+'" style="width: 18px; height: 18px" role="presentation" /></a></td>'}),t+="</tr>"}),t+="</table>"}var i=[["cool","cry","embarassed","foot-in-mouth"],["frown","innocent","kiss","laughing"],["money-mouth","sealed","smile","surprised"],["tongue-out","undecided","wink","yell"]];t.addButton("emoticons",{type:"panelbutton",panel:{role:"application",autohide:!0,html:a,onclick:function(e){var a=t.dom.getParent(e.target,"a");a&&(t.insertContent('<img src="'+a.getAttribute("data-mce-url")+'" alt="'+a.getAttribute("data-mce-alt")+'" />'),this.hide())}},tooltip:"Emoticons"})});
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("3",tinymce.util.Tools.resolve),g("1",["3"],function(a){return a("tinymce.PluginManager")}),g("2",["3"],function(a){return a("tinymce.util.Tools")}),g("0",["1","2"],function(a,b){return a.add("emoticons",function(a,c){function d(){var a;return a='<table role="list" class="mce-grid">',b.each(e,function(d){a+="<tr>",b.each(d,function(b){var d=c+"/img/smiley-"+b+".gif";a+='<td><a href="#" data-mce-url="'+d+'" data-mce-alt="'+b+'" tabindex="-1" role="option" aria-label="'+b+'"><img src="'+d+'" style="width: 18px; height: 18px" role="presentation" /></a></td>'}),a+="</tr>"}),a+="</table>"}var e=[["cool","cry","embarassed","foot-in-mouth"],["frown","innocent","kiss","laughing"],["money-mouth","sealed","smile","surprised"],["tongue-out","undecided","wink","yell"]];a.addButton("emoticons",{type:"panelbutton",panel:{role:"application",autohide:!0,html:d,onclick:function(b){var c=a.dom.getParent(b.target,"a");c&&(a.insertContent('<img src="'+c.getAttribute("data-mce-url")+'" alt="'+c.getAttribute("data-mce-alt")+'" />'),this.hide())}},tooltip:"Emoticons"})}),function(){}}),d("0")()}();

+ 0 - 8
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/example/dialog.html Целия файл

@@ -1,8 +0,0 @@
1
-<!DOCTYPE html>
2
-<html>
3
-<body>
4
-	<h3>Custom dialog</h3>
5
-	Input some text: <input id="content">
6
-	<button onclick="top.tinymce.activeEditor.windowManager.getWindows()[0].close();">Close window</button>
7
-</body>
8
-</html>

+ 0 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/example/plugin.min.js Целия файл

@@ -1 +0,0 @@
1
-tinymce.PluginManager.add("example",function(t,e){t.addButton("example",{text:"My button",icon:!1,onclick:function(){t.windowManager.open({title:"Example plugin",body:[{type:"textbox",name:"title",label:"Title"}],onsubmit:function(e){t.insertContent("Title: "+e.data.title)}})}}),t.addMenuItem("example",{text:"Example plugin",context:"tools",onclick:function(){t.windowManager.open({title:"TinyMCE site",url:e+"/dialog.html",width:600,height:400,buttons:[{text:"Insert",onclick:function(){var e=t.windowManager.getWindows()[0];t.insertContent(e.getContentWindow().document.getElementById("content").value),e.close()}},{text:"Close",onclick:"close"}]})}})});

+ 0 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/example_dependency/plugin.min.js Целия файл

@@ -1 +0,0 @@
1
-tinymce.PluginManager.add("example_dependency",function(){},["example"]);

Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/fullpage/plugin.min.js


+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/fullscreen/plugin.min.js Целия файл

@@ -1 +1 @@
1
-tinymce.PluginManager.add("fullscreen",function(e){function t(){var e,t,n=window,i=document,l=i.body;return l.offsetWidth&&(e=l.offsetWidth,t=l.offsetHeight),n.innerWidth&&n.innerHeight&&(e=n.innerWidth,t=n.innerHeight),{w:e,h:t}}function n(){function n(){d.setStyle(a,"height",t().h-(h.clientHeight-a.clientHeight))}var u,h,a,f,m=document.body,g=document.documentElement;s=!s,h=e.getContainer(),u=h.style,a=e.getContentAreaContainer().firstChild,f=a.style,s?(i=f.width,l=f.height,f.width=f.height="100%",c=u.width,o=u.height,u.width=u.height="",d.addClass(m,"mce-fullscreen"),d.addClass(g,"mce-fullscreen"),d.addClass(h,"mce-fullscreen"),d.bind(window,"resize",n),n(),r=n):(f.width=i,f.height=l,c&&(u.width=c),o&&(u.height=o),d.removeClass(m,"mce-fullscreen"),d.removeClass(g,"mce-fullscreen"),d.removeClass(h,"mce-fullscreen"),d.unbind(window,"resize",r)),e.fire("FullscreenStateChanged",{state:s})}var i,l,r,c,o,s=!1,d=tinymce.DOM;return e.settings.inline?void 0:(e.on("init",function(){e.addShortcut("Ctrl+Alt+F","",n)}),e.on("remove",function(){r&&d.unbind(window,"resize",r)}),e.addCommand("mceFullScreen",n),e.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Ctrl+Alt+F",selectable:!0,onClick:n,onPostRender:function(){var t=this;e.on("FullscreenStateChanged",function(e){t.active(e.state)})},context:"view"}),e.addButton("fullscreen",{tooltip:"Fullscreen",shortcut:"Ctrl+Alt+F",onClick:n,onPostRender:function(){var t=this;e.on("FullscreenStateChanged",function(e){t.active(e.state)})}}),{isFullscreen:function(){return s}})});
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("3",tinymce.util.Tools.resolve),g("1",["3"],function(a){return a("tinymce.dom.DOMUtils")}),g("2",["3"],function(a){return a("tinymce.PluginManager")}),g("0",["1","2"],function(a,b){var c=a.DOM;return b.add("fullscreen",function(a){function b(){var a,b,c=window,d=document,e=d.body;return e.offsetWidth&&(a=e.offsetWidth,b=e.offsetHeight),c.innerWidth&&c.innerHeight&&(a=c.innerWidth,b=c.innerHeight),{w:a,h:b}}function d(){var a=c.getViewPort();return{x:a.x,y:a.y}}function e(a){window.scrollTo(a.x,a.y)}function f(){function f(){c.setStyle(p,"height",b().h-(o.clientHeight-p.clientHeight))}var n,o,p,q,r=document.body,s=document.documentElement;m=!m,o=a.getContainer(),n=o.style,p=a.getContentAreaContainer().firstChild,q=p.style,m?(l=d(),g=q.width,h=q.height,q.width=q.height="100%",j=n.width,k=n.height,n.width=n.height="",c.addClass(r,"mce-fullscreen"),c.addClass(s,"mce-fullscreen"),c.addClass(o,"mce-fullscreen"),c.bind(window,"resize",f),f(),i=f):(q.width=g,q.height=h,j&&(n.width=j),k&&(n.height=k),c.removeClass(r,"mce-fullscreen"),c.removeClass(s,"mce-fullscreen"),c.removeClass(o,"mce-fullscreen"),c.unbind(window,"resize",i),e(l)),a.fire("FullscreenStateChanged",{state:m})}var g,h,i,j,k,l,m=!1;if(!a.settings.inline)return a.on("init",function(){a.addShortcut("Ctrl+Shift+F","",f)}),a.on("remove",function(){i&&c.unbind(window,"resize",i)}),a.addCommand("mceFullScreen",f),a.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Ctrl+Shift+F",selectable:!0,onClick:function(){f(),a.focus()},onPostRender:function(){var b=this;a.on("FullscreenStateChanged",function(a){b.active(a.state)})},context:"view"}),a.addButton("fullscreen",{tooltip:"Fullscreen",shortcut:"Ctrl+Shift+F",onClick:f,onPostRender:function(){var b=this;a.on("FullscreenStateChanged",function(a){b.active(a.state)})}}),{isFullscreen:function(){return m}}}),function(){}}),d("0")()}();

BIN
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/help/img/logo.png Целия файл


Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/help/plugin.min.js


+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/hr/plugin.min.js Целия файл

@@ -1 +1 @@
1
-tinymce.PluginManager.add("hr",function(n){n.addCommand("InsertHorizontalRule",function(){n.execCommand("mceInsertContent",!1,"<hr />")}),n.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"}),n.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})});
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("2",tinymce.util.Tools.resolve),g("1",["2"],function(a){return a("tinymce.PluginManager")}),g("0",["1"],function(a){return a.add("hr",function(a){a.addCommand("InsertHorizontalRule",function(){a.execCommand("mceInsertContent",!1,"<hr />")}),a.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"}),a.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})}),function(){}}),d("0")()}();

Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/image/plugin.min.js


Файловите разлики са ограничени, защото са твърде много
+ 2 - 0
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/imagetools/plugin.min.js


+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/importcss/plugin.min.js Целия файл

@@ -1 +1 @@
1
-tinymce.PluginManager.add("importcss",function(t){function e(t){return"string"==typeof t?function(e){return-1!==e.indexOf(t)}:t instanceof RegExp?function(e){return t.test(e)}:t}function n(e,n){function i(t,e){var c,o=t.href;if(o&&n(o,e)){s(t.imports,function(t){i(t,!0)});try{c=t.cssRules||t.rules}catch(a){}s(c,function(t){t.styleSheet?i(t.styleSheet,!0):t.selectorText&&s(t.selectorText.split(","),function(t){r.push(tinymce.trim(t))})})}}var r=[],c={};s(t.contentCSS,function(t){c[t]=!0}),n||(n=function(t,e){return e||c[t]});try{s(e.styleSheets,function(t){i(t)})}catch(o){}return r}function i(e){var n,i=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(e);if(i){var r=i[1],s=i[2].substr(1).split(".").join(" "),c=tinymce.makeMap("a,img");return i[1]?(n={title:e},t.schema.getTextBlockElements()[r]?n.block=r:t.schema.getBlockElements()[r]||c[r.toLowerCase()]?n.selector=r:n.inline=r):i[2]&&(n={inline:"span",title:e.substr(1),classes:s}),t.settings.importcss_merge_classes!==!1?n.classes=s:n.attributes={"class":s},n}}var r=this,s=tinymce.each;t.on("renderFormatsMenu",function(c){var o=t.settings,a={},l=o.importcss_selector_converter||i,f=e(o.importcss_selector_filter),m=c.control;t.settings.importcss_append||m.items().remove();var u=[];tinymce.each(o.importcss_groups,function(t){t=tinymce.extend({},t),t.filter=e(t.filter),u.push(t)}),s(n(c.doc||t.getDoc(),e(o.importcss_file_filter)),function(e){if(-1===e.indexOf(".mce-")&&!a[e]&&(!f||f(e))){var n,i=l.call(r,e);if(i){var s=i.name||tinymce.DOM.uniqueId();if(u)for(var c=0;c<u.length;c++)if(!u[c].filter||u[c].filter(e)){u[c].item||(u[c].item={text:u[c].title,menu:[]}),n=u[c].item.menu;break}t.formatter.register(s,i);var o=tinymce.extend({},m.settings.itemDefaults,{text:i.title,format:s});n?n.push(o):m.add(o)}a[e]=!0}}),s(u,function(t){m.add(t.item)}),c.control.renderNew()}),r.convertSelectorToFormat=i});
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("6",tinymce.util.Tools.resolve),g("1",["6"],function(a){return a("tinymce.EditorManager")}),g("2",["6"],function(a){return a("tinymce.dom.DOMUtils")}),g("3",["6"],function(a){return a("tinymce.Env")}),g("4",["6"],function(a){return a("tinymce.PluginManager")}),g("5",["6"],function(a){return a("tinymce.util.Tools")}),g("0",["1","2","3","4","5"],function(a,b,c,d,e){return d.add("importcss",function(d){function f(a){var b=c.cacheSuffix;return"string"==typeof a&&(a=a.replace("?"+b,"").replace("&"+b,"")),a}function g(b){var c=d.settings,e=c.skin!==!1&&(c.skin||"lightgray");if(e){var f=c.skin_url;return f=f?d.documentBaseURI.toAbsolute(f):a.baseURL+"/skins/"+e,b===f+"/content"+(d.inline?".inline":"")+".min.css"}return!1}function h(a){return"string"==typeof a?function(b){return b.indexOf(a)!==-1}:a instanceof RegExp?function(b){return a.test(b)}:a}function i(a,b){function c(a,d){var i,j=a.href;if(j=f(j),j&&b(j,d)&&!g(j)){r(a.imports,function(a){c(a,!0)});try{i=a.cssRules||a.rules}catch(a){}r(i,function(a){a.styleSheet?c(a.styleSheet,!0):a.selectorText&&r(a.selectorText.split(","),function(a){h.push(e.trim(a))})})}}var h=[],i={};r(d.contentCSS,function(a){i[a]=!0}),b||(b=function(a,b){return b||i[a]});try{r(a.styleSheets,function(a){c(a)})}catch(a){}return h}function j(a){var b,c=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(a);if(c){var f=c[1],g=c[2].substr(1).split(".").join(" "),h=e.makeMap("a,img");return c[1]?(b={title:a},d.schema.getTextBlockElements()[f]?b.block=f:d.schema.getBlockElements()[f]||h[f.toLowerCase()]?b.selector=f:b.inline=f):c[2]&&(b={inline:"span",title:a.substr(1),classes:g}),d.settings.importcss_merge_classes!==!1?b.classes=g:b.attributes={"class":g},b}}function k(a,b){return e.grep(a,function(a){return!a.filter||a.filter(b)})}function l(a){return e.map(a,function(a){return e.extend({},a,{original:a,selectors:{},filter:h(a.filter),item:{text:a.title,menu:[]}})})}function m(a,b){return null===b||a.settings.importcss_exclusive!==!1}function n(a,b,c){return!(m(d,b)?a in c:a in b.selectors)}function o(a,b,c){m(d,b)?c[a]=!0:b.selectors[a]=!0}function p(a,b,c){var e,f=d.settings;return e=c&&c.selector_converter?c.selector_converter:f.importcss_selector_converter?f.importcss_selector_converter:j,e.call(a,b,c)}var q=this,r=e.each;d.on("renderFormatsMenu",function(a){var c=d.settings,f={},g=h(c.importcss_selector_filter),j=a.control,m=l(c.importcss_groups),s=function(a,c){if(n(a,c,f)){o(a,c,f);var g=p(q,a,c);if(g){var h=g.name||b.DOM.uniqueId();return d.formatter.register(h,g),e.extend({},j.settings.itemDefaults,{text:g.title,format:h})}}return null};d.settings.importcss_append||j.items().remove(),r(i(a.doc||d.getDoc(),h(c.importcss_file_filter)),function(a){if(a.indexOf(".mce-")===-1&&(!g||g(a))){var b=k(m,a);if(b.length>0)e.each(b,function(b){var c=s(a,b);c&&b.item.menu.push(c)});else{var c=s(a,null);c&&j.add(c)}}}),r(m,function(a){a.item.menu.length>0&&j.add(a.item)}),a.control.renderNew()}),q.convertSelectorToFormat=j}),function(){}}),d("0")()}();

+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/insertdatetime/plugin.min.js Целия файл

@@ -1 +1 @@
1
-tinymce.PluginManager.add("insertdatetime",function(e){function t(t,a){function n(e,t){if(e=""+e,e.length<t)for(var a=0;a<t-e.length;a++)e="0"+e;return e}return a=a||new Date,t=t.replace("%D","%m/%d/%Y"),t=t.replace("%r","%I:%M:%S %p"),t=t.replace("%Y",""+a.getFullYear()),t=t.replace("%y",""+a.getYear()),t=t.replace("%m",n(a.getMonth()+1,2)),t=t.replace("%d",n(a.getDate(),2)),t=t.replace("%H",""+n(a.getHours(),2)),t=t.replace("%M",""+n(a.getMinutes(),2)),t=t.replace("%S",""+n(a.getSeconds(),2)),t=t.replace("%I",""+((a.getHours()+11)%12+1)),t=t.replace("%p",""+(a.getHours()<12?"AM":"PM")),t=t.replace("%B",""+e.translate(m[a.getMonth()])),t=t.replace("%b",""+e.translate(c[a.getMonth()])),t=t.replace("%A",""+e.translate(d[a.getDay()])),t=t.replace("%a",""+e.translate(i[a.getDay()])),t=t.replace("%%","%")}function a(a){var n=t(a);if(e.settings.insertdatetime_element){var r;r=t(/%[HMSIp]/.test(a)?"%Y-%m-%dT%H:%M":"%Y-%m-%d"),n='<time datetime="'+r+'">'+n+"</time>";var i=e.dom.getParent(e.selection.getStart(),"time");if(i)return void e.dom.setOuterHTML(i,n)}e.insertContent(n)}var n,r,i="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),d="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),c="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),m="January February March April May June July August September October November December".split(" "),u=[];e.addCommand("mceInsertDate",function(){a(e.getParam("insertdatetime_dateformat",e.translate("%Y-%m-%d")))}),e.addCommand("mceInsertTime",function(){a(e.getParam("insertdatetime_timeformat",e.translate("%H:%M:%S")))}),e.addButton("insertdatetime",{type:"splitbutton",title:"Insert date/time",onclick:function(){a(n||r)},menu:u}),tinymce.each(e.settings.insertdatetime_formats||["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"],function(e){r||(r=e),u.push({text:t(e),onclick:function(){n=e,a(e)}})}),e.addMenuItem("insertdatetime",{icon:"date",text:"Insert date/time",menu:u,context:"insert"})});
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("3",tinymce.util.Tools.resolve),g("1",["3"],function(a){return a("tinymce.PluginManager")}),g("2",["3"],function(a){return a("tinymce.util.Tools")}),g("0",["1","2"],function(a,b){return a.add("insertdatetime",function(a){function c(b,c){function d(a,b){if(a=""+a,a.length<b)for(var c=0;c<b-a.length;c++)a="0"+a;return a}return c=c||new Date,b=b.replace("%D","%m/%d/%Y"),b=b.replace("%r","%I:%M:%S %p"),b=b.replace("%Y",""+c.getFullYear()),b=b.replace("%y",""+c.getYear()),b=b.replace("%m",d(c.getMonth()+1,2)),b=b.replace("%d",d(c.getDate(),2)),b=b.replace("%H",""+d(c.getHours(),2)),b=b.replace("%M",""+d(c.getMinutes(),2)),b=b.replace("%S",""+d(c.getSeconds(),2)),b=b.replace("%I",""+((c.getHours()+11)%12+1)),b=b.replace("%p",""+(c.getHours()<12?"AM":"PM")),b=b.replace("%B",""+a.translate(j[c.getMonth()])),b=b.replace("%b",""+a.translate(i[c.getMonth()])),b=b.replace("%A",""+a.translate(h[c.getDay()])),b=b.replace("%a",""+a.translate(g[c.getDay()])),b=b.replace("%%","%")}function d(b){var d=c(b);if(a.settings.insertdatetime_element){var e;e=c(/%[HMSIp]/.test(b)?"%Y-%m-%dT%H:%M":"%Y-%m-%d"),d='<time datetime="'+e+'">'+d+"</time>";var f=a.dom.getParent(a.selection.getStart(),"time");if(f)return void a.dom.setOuterHTML(f,d)}a.insertContent(d)}var e,f,g="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),h="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),i="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),j="January February March April May June July August September October November December".split(" "),k=[];a.addCommand("mceInsertDate",function(){d(a.getParam("insertdatetime_dateformat",a.translate("%Y-%m-%d")))}),a.addCommand("mceInsertTime",function(){d(a.getParam("insertdatetime_timeformat",a.translate("%H:%M:%S")))}),a.addButton("insertdatetime",{type:"splitbutton",title:"Insert date/time",onclick:function(){d(e||f)},menu:k}),b.each(a.settings.insertdatetime_formats||["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"],function(a){f||(f=a),k.push({text:c(a),onclick:function(){e=a,d(a)}})}),a.addMenuItem("insertdatetime",{icon:"date",text:"Date/time",menu:k,context:"insert"})}),function(){}}),d("0")()}();

+ 0 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/layer/plugin.min.js Целия файл

@@ -1 +0,0 @@
1
-tinymce.PluginManager.add("layer",function(e){function t(e){do if(e.className&&-1!=e.className.indexOf("mceItemLayer"))return e;while(e=e.parentNode)}function o(t){var o=e.dom;tinymce.each(o.select("div,p",t),function(e){/^(absolute|relative|fixed)$/i.test(e.style.position)&&(e.hasVisual?o.addClass(e,"mceItemVisualAid"):o.removeClass(e,"mceItemVisualAid"),o.addClass(e,"mceItemLayer"))})}function d(o){var d,n,a=[],i=t(e.selection.getNode()),s=-1,l=-1;for(n=[],tinymce.walk(e.getBody(),function(e){1==e.nodeType&&/^(absolute|relative|static)$/i.test(e.style.position)&&n.push(e)},"childNodes"),d=0;d<n.length;d++)a[d]=n[d].style.zIndex?parseInt(n[d].style.zIndex,10):0,0>s&&n[d]==i&&(s=d);if(0>o){for(d=0;d<a.length;d++)if(a[d]<a[s]){l=d;break}l>-1?(n[s].style.zIndex=a[l],n[l].style.zIndex=a[s]):a[s]>0&&(n[s].style.zIndex=a[s]-1)}else{for(d=0;d<a.length;d++)if(a[d]>a[s]){l=d;break}l>-1?(n[s].style.zIndex=a[l],n[l].style.zIndex=a[s]):n[s].style.zIndex=a[s]+1}e.execCommand("mceRepaint")}function n(){var t=e.dom,o=t.getPos(t.getParent(e.selection.getNode(),"*")),d=e.getBody();e.dom.add(d,"div",{style:{position:"absolute",left:o.x,top:o.y>20?o.y:20,width:100,height:100},"class":"mceItemVisualAid mceItemLayer"},e.selection.getContent()||e.getLang("layer.content")),tinymce.Env.ie&&t.setHTML(d,d.innerHTML)}function a(){var o=t(e.selection.getNode());o||(o=e.dom.getParent(e.selection.getNode(),"DIV,P,IMG")),o&&("absolute"==o.style.position.toLowerCase()?(e.dom.setStyles(o,{position:"",left:"",top:"",width:"",height:""}),e.dom.removeClass(o,"mceItemVisualAid"),e.dom.removeClass(o,"mceItemLayer")):(o.style.left||(o.style.left="20px"),o.style.top||(o.style.top="20px"),o.style.width||(o.style.width=o.width?o.width+"px":"100px"),o.style.height||(o.style.height=o.height?o.height+"px":"100px"),o.style.position="absolute",e.dom.setAttrib(o,"data-mce-style",""),e.addVisual(e.getBody())),e.execCommand("mceRepaint"),e.nodeChanged())}e.addCommand("mceInsertLayer",n),e.addCommand("mceMoveForward",function(){d(1)}),e.addCommand("mceMoveBackward",function(){d(-1)}),e.addCommand("mceMakeAbsolute",function(){a()}),e.addButton("moveforward",{title:"layer.forward_desc",cmd:"mceMoveForward"}),e.addButton("movebackward",{title:"layer.backward_desc",cmd:"mceMoveBackward"}),e.addButton("absolute",{title:"layer.absolute_desc",cmd:"mceMakeAbsolute"}),e.addButton("insertlayer",{title:"layer.insertlayer_desc",cmd:"mceInsertLayer"}),e.on("init",function(){tinymce.Env.ie&&e.getDoc().execCommand("2D-Position",!1,!0)}),e.on("mouseup",function(o){var d=t(o.target);d&&e.dom.setAttrib(d,"data-mce-style","")}),e.on("mousedown",function(o){var d,n=o.target,a=e.getDoc();tinymce.Env.gecko&&(t(n)?"on"!==a.designMode&&(a.designMode="on",n=a.body,d=n.parentNode,d.removeChild(n),d.appendChild(n)):"on"==a.designMode&&(a.designMode="off"))}),e.on("NodeChange",o)});

+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/legacyoutput/plugin.min.js Целия файл

@@ -1 +1 @@
1
-!function(e){e.on("AddEditor",function(e){e.editor.settings.inline_styles=!1}),e.PluginManager.add("legacyoutput",function(t,n,i){t.on("init",function(){var n="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",i=e.explode(t.settings.font_size_style_values),a=t.schema;t.formatter.register({alignleft:{selector:n,attributes:{align:"left"}},aligncenter:{selector:n,attributes:{align:"center"}},alignright:{selector:n,attributes:{align:"right"}},alignjustify:{selector:n,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all"},{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all"},{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all"},{inline:"span",styles:{textDecoration:"underline"},exact:!0}],strikethrough:[{inline:"strike",remove:"all"},{inline:"span",styles:{textDecoration:"line-through"},exact:!0}],fontname:{inline:"font",attributes:{face:"%value"}},fontsize:{inline:"font",attributes:{size:function(t){return e.inArray(i,t.value)+1}}},forecolor:{inline:"font",attributes:{color:"%value"}},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"}}}),e.each("b,i,u,strike".split(","),function(e){a.addValidElements(e+"[*]")}),a.getElementRule("font")||a.addValidElements("font[face|size|color|style]"),e.each(n.split(","),function(e){var t=a.getElementRule(e);t&&(t.attributes.align||(t.attributes.align={},t.attributesOrder.push("align")))})}),t.addButton("fontsizeselect",function(){var e=[],n="8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6 36pt=7",i=t.settings.fontsize_formats||n;return t.$.each(i.split(" "),function(t,n){var i=n,a=n,o=n.split("=");o.length>1&&(i=o[0],a=o[1]),e.push({text:i,value:a})}),{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:e,fixedWidth:!0,onPostRender:function(){var e=this;t.on("NodeChange",function(){var n;n=t.dom.getParent(t.selection.getNode(),"font"),e.value(n?n.size:"")})},onclick:function(e){e.control.settings.value&&t.execCommand("FontSize",!1,e.control.settings.value)}}}),t.addButton("fontselect",function(){function e(e){e=e.replace(/;$/,"").split(";");for(var t=e.length;t--;)e[t]=e[t].split("=");return e}var n="Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",a=[],o=e(t.settings.font_formats||n);return i.each(o,function(e,t){a.push({text:{raw:t[0]},value:t[1],textStyle:-1==t[1].indexOf("dings")?"font-family:"+t[1]:""})}),{type:"listbox",text:"Font Family",tooltip:"Font Family",values:a,fixedWidth:!0,onPostRender:function(){var e=this;t.on("NodeChange",function(){var n;n=t.dom.getParent(t.selection.getNode(),"font"),e.value(n?n.face:"")})},onselect:function(e){e.control.settings.value&&t.execCommand("FontName",!1,e.control.settings.value)}}})})}(tinymce);
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("3",tinymce.util.Tools.resolve),g("1",["3"],function(a){return a("tinymce.PluginManager")}),g("2",["3"],function(a){return a("tinymce.util.Tools")}),g("0",["1","2"],function(a,b){return a.add("legacyoutput",function(a,c,d){a.settings.inline_styles=!1,a.on("init",function(){var c="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",d=b.explode(a.settings.font_size_style_values),e=a.schema;a.formatter.register({alignleft:{selector:c,attributes:{align:"left"}},aligncenter:{selector:c,attributes:{align:"center"}},alignright:{selector:c,attributes:{align:"right"}},alignjustify:{selector:c,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all"},{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all"},{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all"},{inline:"span",styles:{textDecoration:"underline"},exact:!0}],strikethrough:[{inline:"strike",remove:"all"},{inline:"span",styles:{textDecoration:"line-through"},exact:!0}],fontname:{inline:"font",attributes:{face:"%value"}},fontsize:{inline:"font",attributes:{size:function(a){return b.inArray(d,a.value)+1}}},forecolor:{inline:"font",attributes:{color:"%value"}},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"}}}),b.each("b,i,u,strike".split(","),function(a){e.addValidElements(a+"[*]")}),e.getElementRule("font")||e.addValidElements("font[face|size|color|style]"),b.each(c.split(","),function(a){var b=e.getElementRule(a);b&&(b.attributes.align||(b.attributes.align={},b.attributesOrder.push("align")))})}),a.addButton("fontsizeselect",function(){var b=[],c="8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6 36pt=7",d=a.settings.fontsizeFormats||c;return a.$.each(d.split(" "),function(a,c){var d=c,e=c,f=c.split("=");f.length>1&&(d=f[0],e=f[1]),b.push({text:d,value:e})}),{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:b,fixedWidth:!0,onPostRender:function(){var b=this;a.on("NodeChange",function(){var c;c=a.dom.getParent(a.selection.getNode(),"font"),c?b.value(c.size):b.value("")})},onclick:function(b){b.control.settings.value&&a.execCommand("FontSize",!1,b.control.settings.value)}}}),a.addButton("fontselect",function(){function b(a){a=a.replace(/;$/,"").split(";");for(var b=a.length;b--;)a[b]=a[b].split("=");return a}var c="Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats",e=[],f=b(a.settings.font_formats||c);return d.each(f,function(a,b){e.push({text:{raw:b[0]},value:b[1],textStyle:b[1].indexOf("dings")==-1?"font-family:"+b[1]:""})}),{type:"listbox",text:"Font Family",tooltip:"Font Family",values:e,fixedWidth:!0,onPostRender:function(){var b=this;a.on("NodeChange",function(){var c;c=a.dom.getParent(a.selection.getNode(),"font"),c?b.value(c.face):b.value("")})},onselect:function(b){b.control.settings.value&&a.execCommand("FontName",!1,b.control.settings.value)}}})}),function(){}}),d("0")()}();

Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/link/plugin.min.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/lists/plugin.min.js


BIN
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/media/moxieplayer.swf Целия файл


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/media/plugin.min.js


+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/nonbreaking/plugin.min.js Целия файл

@@ -1 +1 @@
1
-tinymce.PluginManager.add("nonbreaking",function(n){var e=n.getParam("nonbreaking_force_tab");if(n.addCommand("mceNonBreaking",function(){n.insertContent(n.plugins.visualchars&&n.plugins.visualchars.state?'<span class="mce-nbsp">&nbsp;</span>':"&nbsp;"),n.dom.setAttrib(n.dom.select("span.mce-nbsp"),"data-mce-bogus","1")}),n.addButton("nonbreaking",{title:"Nonbreaking space",cmd:"mceNonBreaking"}),n.addMenuItem("nonbreaking",{text:"Nonbreaking space",cmd:"mceNonBreaking",context:"insert"}),e){var a=+e>1?+e:3;n.on("keydown",function(e){if(9==e.keyCode){if(e.shiftKey)return;e.preventDefault();for(var t=0;a>t;t++)n.execCommand("mceNonBreaking")}})}});
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("2",tinymce.util.Tools.resolve),g("1",["2"],function(a){return a("tinymce.PluginManager")}),g("0",["1"],function(a){return a.add("nonbreaking",function(a){var b=a.getParam("nonbreaking_force_tab"),c=function(a,b){for(var c="",d=0;d<b;d++)c+=a;return c},d=function(b){var d=a.plugins.visualchars&&a.plugins.visualchars.state?'<span class="mce-nbsp">&nbsp;</span>':"&nbsp;";a.insertContent(c(d,b)),a.dom.setAttrib(a.dom.select("span.mce-nbsp"),"data-mce-bogus","1")};if(a.addCommand("mceNonBreaking",function(){d(1)}),a.addButton("nonbreaking",{title:"Nonbreaking space",cmd:"mceNonBreaking"}),a.addMenuItem("nonbreaking",{text:"Nonbreaking space",cmd:"mceNonBreaking",context:"insert"}),b){var e=+b>1?+b:3;a.on("keydown",function(a){if(9==a.keyCode){if(a.shiftKey)return;a.preventDefault(),d(e)}})}}),function(){}}),d("0")()}();

+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/noneditable/plugin.min.js Целия файл

@@ -1 +1 @@
1
-tinymce.PluginManager.add("noneditable",function(e){function t(e){var t;if(1===e.nodeType){if(t=e.getAttribute(u),t&&"inherit"!==t)return t;if(t=e.contentEditable,"inherit"!==t)return t}return null}function n(e){for(var n;e;){if(n=t(e))return"false"===n?e:null;e=e.parentNode}}function r(){function r(e){for(;e;){if(e.id===g)return e;e=e.parentNode}}function a(e){var t;if(e)for(t=new f(e,e),e=t.current();e;e=t.next())if(3===e.nodeType)return e}function i(n,r){var a,i;return"false"===t(n)&&u.isBlock(n)?void s.select(n):(i=u.createRng(),"true"===t(n)&&(n.firstChild||n.appendChild(e.getDoc().createTextNode(" ")),n=n.firstChild,r=!0),a=u.create("span",{id:g,"data-mce-bogus":!0},m),r?n.parentNode.insertBefore(a,n):u.insertAfter(a,n),i.setStart(a.firstChild,1),i.collapse(!0),s.setRng(i),a)}function o(e){var t,n,i,o;if(e)t=s.getRng(!0),t.setStartBefore(e),t.setEndBefore(e),n=a(e),n&&n.nodeValue.charAt(0)==m&&(n=n.deleteData(0,1)),u.remove(e,!0),s.setRng(t);else for(i=r(s.getStart());(e=u.get(g))&&e!==o;)i!==e&&(n=a(e),n&&n.nodeValue.charAt(0)==m&&(n=n.deleteData(0,1)),u.remove(e,!0)),o=e}function l(){function e(e,n){var r,a,i,o,l;if(r=d.startContainer,a=d.startOffset,3==r.nodeType){if(l=r.nodeValue.length,a>0&&l>a||(n?a==l:0===a))return}else{if(!(a<r.childNodes.length))return n?null:e;var u=!n&&a>0?a-1:a;r=r.childNodes[u],r.hasChildNodes()&&(r=r.firstChild)}for(i=new f(r,e);o=i[n?"prev":"next"]();){if(3===o.nodeType&&o.nodeValue.length>0)return;if("true"===t(o))return o}return e}var r,a,l,d,u;o(),l=s.isCollapsed(),r=n(s.getStart()),a=n(s.getEnd()),(r||a)&&(d=s.getRng(!0),l?(r=r||a,(u=e(r,!0))?i(u,!0):(u=e(r,!1))?i(u,!1):s.select(r)):(d=s.getRng(!0),r&&d.setStartBefore(r),a&&d.setEndAfter(a),s.setRng(d)))}function d(a){function i(e,t){for(;e=e[t?"previousSibling":"nextSibling"];)if(3!==e.nodeType||e.nodeValue.length>0)return e}function d(e,t){s.select(e),s.collapse(t)}function g(a){function i(e){for(var t=d;t;){if(t===e)return;t=t.parentNode}u.remove(e),l()}function o(){var r,o,l=e.schema.getNonEmptyElements();for(o=new tinymce.dom.TreeWalker(d,e.getBody());(r=a?o.prev():o.next())&&!l[r.nodeName.toLowerCase()]&&!(3===r.nodeType&&tinymce.trim(r.nodeValue).length>0);)if("false"===t(r))return i(r),!0;return n(r)?!0:!1}var f,d,c,g;if(s.isCollapsed()){if(f=s.getRng(!0),d=f.startContainer,c=f.startOffset,d=r(d)||d,g=n(d))return i(g),!1;if(3==d.nodeType&&(a?c>0:c<d.nodeValue.length))return!0;if(1==d.nodeType&&(d=d.childNodes[c]||d),o())return!1}return!0}var m,p,v,E,h=a.keyCode;if(v=s.getStart(),E=s.getEnd(),m=n(v)||n(E),m&&(112>h||h>124)&&h!=c.DELETE&&h!=c.BACKSPACE){if((tinymce.isMac?a.metaKey:a.ctrlKey)&&(67==h||88==h||86==h))return;if(a.preventDefault(),h==c.LEFT||h==c.RIGHT){var y=h==c.LEFT;if(e.dom.isBlock(m)){var T=y?m.previousSibling:m.nextSibling,C=new f(T,T),b=y?C.prev():C.next();d(b,!y)}else d(m,y)}}else if(h==c.LEFT||h==c.RIGHT||h==c.BACKSPACE||h==c.DELETE){if(p=r(v)){if(h==c.LEFT||h==c.BACKSPACE)if(m=i(p,!0),m&&"false"===t(m)){if(a.preventDefault(),h!=c.LEFT)return void u.remove(m);d(m,!0)}else o(p);if(h==c.RIGHT||h==c.DELETE)if(m=i(p),m&&"false"===t(m)){if(a.preventDefault(),h!=c.RIGHT)return void u.remove(m);d(m,!1)}else o(p)}if((h==c.BACKSPACE||h==c.DELETE)&&!g(h==c.BACKSPACE))return a.preventDefault(),!1}}var u=e.dom,s=e.selection,g="mce_noneditablecaret",m="";e.on("mousedown",function(n){var r=e.selection.getNode();"false"===t(r)&&r==n.target&&l()}),e.on("mouseup keyup",l),e.on("keydown",d)}function a(t){var n=l.length,r=t.content,a=tinymce.trim(o);if("raw"!=t.format){for(;n--;)r=r.replace(l[n],function(t){var n=arguments,i=n[n.length-2];return i>0&&'"'==r.charAt(i-1)?t:'<span class="'+a+'" data-mce-content="'+e.dom.encode(n[0])+'">'+e.dom.encode("string"==typeof n[1]?n[1]:n[0])+"</span>"});t.content=r}}var i,o,l,f=tinymce.dom.TreeWalker,d="contenteditable",u="data-mce-"+d,c=tinymce.util.VK;i=" "+tinymce.trim(e.getParam("noneditable_editable_class","mceEditable"))+" ",o=" "+tinymce.trim(e.getParam("noneditable_noneditable_class","mceNonEditable"))+" ",l=e.getParam("noneditable_regexp"),l&&!l.length&&(l=[l]),e.on("PreInit",function(){r(),l&&e.on("BeforeSetContent",a),e.parser.addAttributeFilter("class",function(e){for(var t,n,r=e.length;r--;)n=e[r],t=" "+n.attr("class")+" ",-1!==t.indexOf(i)?n.attr(u,"true"):-1!==t.indexOf(o)&&n.attr(u,"false")}),e.serializer.addAttributeFilter(u,function(e){for(var t,n=e.length;n--;)t=e[n],l&&t.attr("data-mce-content")?(t.name="#text",t.type=3,t.raw=!0,t.value=t.attr("data-mce-content")):(t.attr(d,null),t.attr(u,null))}),e.parser.addAttributeFilter(d,function(e){for(var t,n=e.length;n--;)t=e[n],t.attr(u,t.attr(d)),t.attr(d,null)})}),e.on("drop",function(e){n(e.target)&&e.preventDefault()})});
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("3",tinymce.util.Tools.resolve),g("1",["3"],function(a){return a("tinymce.PluginManager")}),g("2",["3"],function(a){return a("tinymce.util.Tools")}),g("0",["1","2"],function(a,b){return a.add("noneditable",function(a){function c(a){return function(b){return(" "+b.attr("class")+" ").indexOf(a)!==-1}}function d(c){function d(b){var c=arguments,d=c[c.length-2],e=d>0?h.charAt(d-1):"";if('"'===e)return b;if(">"===e){var f=h.lastIndexOf("<",d);if(f!==-1){var g=h.substring(f,d);if(g.indexOf('contenteditable="false"')!==-1)return b}}return'<span class="'+i+'" data-mce-content="'+a.dom.encode(c[0])+'">'+a.dom.encode("string"==typeof c[1]?c[1]:c[0])+"</span>"}var e=g.length,h=c.content,i=b.trim(f);if("raw"!=c.format){for(;e--;)h=h.replace(g[e],d);c.content=h}}var e,f,g,h="contenteditable";e=" "+b.trim(a.getParam("noneditable_editable_class","mceEditable"))+" ",f=" "+b.trim(a.getParam("noneditable_noneditable_class","mceNonEditable"))+" ";var i=c(e),j=c(f);g=a.getParam("noneditable_regexp"),g&&!g.length&&(g=[g]),a.on("PreInit",function(){g&&a.on("BeforeSetContent",d),a.parser.addAttributeFilter("class",function(a){for(var b,c=a.length;c--;)b=a[c],i(b)?b.attr(h,"true"):j(b)&&b.attr(h,"false")}),a.serializer.addAttributeFilter(h,function(a){for(var b,c=a.length;c--;)b=a[c],(i(b)||j(b))&&(g&&b.attr("data-mce-content")?(b.name="#text",b.type=3,b.raw=!0,b.value=b.attr("data-mce-content")):b.attr(h,null))})})}),function(){}}),d("0")()}();

+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/pagebreak/plugin.min.js Целия файл

@@ -1 +1 @@
1
-tinymce.PluginManager.add("pagebreak",function(e){var a="mce-pagebreak",t=e.getParam("pagebreak_separator","<!-- pagebreak -->"),n=new RegExp(t.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(e){return"\\"+e}),"gi"),r='<img src="'+tinymce.Env.transparentSrc+'" class="'+a+'" data-mce-resize="false" />';e.addCommand("mcePageBreak",function(){e.insertContent(e.settings.pagebreak_split_block?"<p>"+r+"</p>":r)}),e.addButton("pagebreak",{title:"Page break",cmd:"mcePageBreak"}),e.addMenuItem("pagebreak",{text:"Page break",icon:"pagebreak",cmd:"mcePageBreak",context:"insert"}),e.on("ResolveName",function(t){"IMG"==t.target.nodeName&&e.dom.hasClass(t.target,a)&&(t.name="pagebreak")}),e.on("click",function(t){t=t.target,"IMG"===t.nodeName&&e.dom.hasClass(t,a)&&e.selection.select(t)}),e.on("BeforeSetContent",function(e){e.content=e.content.replace(n,r)}),e.on("PreInit",function(){e.serializer.addNodeFilter("img",function(a){for(var n,r,c=a.length;c--;)if(n=a[c],r=n.attr("class"),r&&-1!==r.indexOf("mce-pagebreak")){var o=n.parent;if(e.schema.getBlockElements()[o.name]&&e.settings.pagebreak_split_block){o.type=3,o.value=t,o.raw=!0,n.remove();continue}n.type=3,n.value=t,n.raw=!0}})})});
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("3",tinymce.util.Tools.resolve),g("1",["3"],function(a){return a("tinymce.PluginManager")}),g("2",["3"],function(a){return a("tinymce.Env")}),g("0",["1","2"],function(a,b){return a.add("pagebreak",function(a){var c="mce-pagebreak",d=a.getParam("pagebreak_separator","<!-- pagebreak -->"),e=new RegExp(d.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(a){return"\\"+a}),"gi"),f='<img src="'+b.transparentSrc+'" class="'+c+'" data-mce-resize="false" data-mce-placeholder />';a.addCommand("mcePageBreak",function(){a.settings.pagebreak_split_block?a.insertContent("<p>"+f+"</p>"):a.insertContent(f)}),a.addButton("pagebreak",{title:"Page break",cmd:"mcePageBreak"}),a.addMenuItem("pagebreak",{text:"Page break",icon:"pagebreak",cmd:"mcePageBreak",context:"insert"}),a.on("ResolveName",function(b){"IMG"==b.target.nodeName&&a.dom.hasClass(b.target,c)&&(b.name="pagebreak")}),a.on("click",function(b){b=b.target,"IMG"===b.nodeName&&a.dom.hasClass(b,c)&&a.selection.select(b)}),a.on("BeforeSetContent",function(a){a.content=a.content.replace(e,f)}),a.on("PreInit",function(){a.serializer.addNodeFilter("img",function(b){for(var c,e,f=b.length;f--;)if(c=b[f],e=c.attr("class"),e&&e.indexOf("mce-pagebreak")!==-1){var g=c.parent;if(a.schema.getBlockElements()[g.name]&&a.settings.pagebreak_split_block){g.type=3,g.value=d,g.raw=!0,c.remove();continue}c.type=3,c.value=d,c.raw=!0}})})}),function(){}}),d("0")()}();

Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/paste/plugin.min.js


+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/preview/plugin.min.js Целия файл

@@ -1 +1 @@
1
-tinymce.PluginManager.add("preview",function(e){var t=e.settings,i=!tinymce.Env.ie;e.addCommand("mcePreview",function(){e.windowManager.open({title:"Preview",width:parseInt(e.getParam("plugin_preview_width","650"),10),height:parseInt(e.getParam("plugin_preview_height","500"),10),html:'<iframe src="javascript:\'\'" frameborder="0"'+(i?' sandbox="allow-scripts"':"")+"></iframe>",buttons:{text:"Close",onclick:function(){this.parent().parent().close()}},onPostRender:function(){var n,a="";a+='<base href="'+e.documentBaseURI.getURI()+'">',tinymce.each(e.contentCSS,function(t){a+='<link type="text/css" rel="stylesheet" href="'+e.documentBaseURI.toAbsolute(t)+'">'});var r=t.body_id||"tinymce";-1!=r.indexOf("=")&&(r=e.getParam("body_id","","hash"),r=r[e.id]||r);var d=t.body_class||"";-1!=d.indexOf("=")&&(d=e.getParam("body_class","","hash"),d=d[e.id]||"");var o=e.settings.directionality?' dir="'+e.settings.directionality+'"':"";if(n="<!DOCTYPE html><html><head>"+a+'</head><body id="'+r+'" class="mce-content-body '+d+'"'+o+">"+e.getContent()+"</body></html>",i)this.getEl("body").firstChild.src="data:text/html;charset=utf-8,"+encodeURIComponent(n);else{var s=this.getEl("body").firstChild.contentWindow.document;s.open(),s.write(n),s.close()}}})}),e.addButton("preview",{title:"Preview",cmd:"mcePreview"}),e.addMenuItem("preview",{text:"Preview",cmd:"mcePreview",context:"view"})});
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("4",tinymce.util.Tools.resolve),g("1",["4"],function(a){return a("tinymce.PluginManager")}),g("2",["4"],function(a){return a("tinymce.Env")}),g("3",["4"],function(a){return a("tinymce.util.Tools")}),g("0",["1","2","3"],function(a,b,c){return a.add("preview",function(a){var d=a.settings,e=!b.ie;a.addCommand("mcePreview",function(){a.windowManager.open({title:"Preview",width:parseInt(a.getParam("plugin_preview_width","650"),10),height:parseInt(a.getParam("plugin_preview_height","500"),10),html:'<iframe src="javascript:\'\'" frameborder="0"'+(e?' sandbox="allow-scripts"':"")+"></iframe>",buttons:{text:"Close",onclick:function(){this.parent().parent().close()}},onPostRender:function(){var b,f="",g=a.dom.encode;f+='<base href="'+g(a.documentBaseURI.getURI())+'">',c.each(a.contentCSS,function(b){f+='<link type="text/css" rel="stylesheet" href="'+g(a.documentBaseURI.toAbsolute(b))+'">'});var h=d.body_id||"tinymce";h.indexOf("=")!=-1&&(h=a.getParam("body_id","","hash"),h=h[a.id]||h);var i=d.body_class||"";i.indexOf("=")!=-1&&(i=a.getParam("body_class","","hash"),i=i[a.id]||"");var j='<script>document.addEventListener && document.addEventListener("click", function(e) {for (var elm = e.target; elm; elm = elm.parentNode) {if (elm.nodeName === "A") {e.preventDefault();}}}, false);</script> ',k=a.settings.directionality?' dir="'+a.settings.directionality+'"':"";if(b="<!DOCTYPE html><html><head>"+f+'</head><body id="'+g(h)+'" class="mce-content-body '+g(i)+'"'+g(k)+">"+a.getContent()+j+"</body></html>",e)this.getEl("body").firstChild.src="data:text/html;charset=utf-8,"+encodeURIComponent(b);else{var l=this.getEl("body").firstChild.contentWindow.document;l.open(),l.write(b),l.close()}}})}),a.addButton("preview",{title:"Preview",cmd:"mcePreview"}),a.addMenuItem("preview",{text:"Preview",cmd:"mcePreview",context:"view"})}),function(){}}),d("0")()}();

+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/print/plugin.min.js Целия файл

@@ -1 +1 @@
1
-tinymce.PluginManager.add("print",function(t){t.addCommand("mcePrint",function(){t.getWin().print()}),t.addButton("print",{title:"Print",cmd:"mcePrint"}),t.addShortcut("Ctrl+P","","mcePrint"),t.addMenuItem("print",{text:"Print",cmd:"mcePrint",icon:"print",shortcut:"Ctrl+P",context:"file"})});
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("2",tinymce.util.Tools.resolve),g("1",["2"],function(a){return a("tinymce.PluginManager")}),g("0",["1"],function(a){return a.add("print",function(a){a.addCommand("mcePrint",function(){a.getWin().print()}),a.addButton("print",{title:"Print",cmd:"mcePrint"}),a.addShortcut("Meta+P","","mcePrint"),a.addMenuItem("print",{text:"Print",cmd:"mcePrint",icon:"print",shortcut:"Meta+P",context:"file"})}),function(){}}),d("0")()}();

+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/save/plugin.min.js Целия файл

@@ -1 +1 @@
1
-tinymce.PluginManager.add("save",function(e){function a(){var a;return a=tinymce.DOM.getParent(e.id,"form"),!e.getParam("save_enablewhendirty",!0)||e.isDirty()?(tinymce.triggerSave(),e.getParam("save_onsavecallback")?void(e.execCallback("save_onsavecallback",e)&&(e.startContent=tinymce.trim(e.getContent({format:"raw"})),e.nodeChanged())):void(a?(e.isNotDirty=!0,(!a.onsubmit||a.onsubmit())&&("function"==typeof a.submit?a.submit():e.windowManager.alert("Error: Form submit field collision.")),e.nodeChanged()):e.windowManager.alert("Error: No form element found."))):void 0}function n(){var a=tinymce.trim(e.startContent);return e.getParam("save_oncancelcallback")?void e.execCallback("save_oncancelcallback",e):(e.setContent(a),e.undoManager.clear(),void e.nodeChanged())}function t(){var a=this;e.on("nodeChange",function(){a.disabled(e.getParam("save_enablewhendirty",!0)&&!e.isDirty())})}e.addCommand("mceSave",a),e.addCommand("mceCancel",n),e.addButton("save",{icon:"save",text:"Save",cmd:"mceSave",disabled:!0,onPostRender:t}),e.addButton("cancel",{text:"Cancel",icon:!1,cmd:"mceCancel",disabled:!0,onPostRender:t}),e.addShortcut("ctrl+s","","mceSave")});
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("5",tinymce.util.Tools.resolve),g("1",["5"],function(a){return a("tinymce.PluginManager")}),g("2",["5"],function(a){return a("tinymce.dom.DOMUtils")}),g("3",["5"],function(a){return a("tinymce.EditorManager")}),g("4",["5"],function(a){return a("tinymce.util.Tools")}),g("0",["1","2","3","4"],function(a,b,c,d){return a.add("save",function(a){function e(){var d;if(d=b.DOM.getParent(a.id,"form"),!a.getParam("save_enablewhendirty",!0)||a.isDirty())return c.triggerSave(),a.getParam("save_onsavecallback")?(a.execCallback("save_onsavecallback",a),void a.nodeChanged()):void(d?(a.setDirty(!1),d.onsubmit&&!d.onsubmit()||("function"==typeof d.submit?d.submit():f(a.translate("Error: Form submit field collision."))),a.nodeChanged()):f(a.translate("Error: No form element found.")))}function f(b){a.notificationManager.open({text:b,type:"error"})}function g(){var b=d.trim(a.startContent);return a.getParam("save_oncancelcallback")?void a.execCallback("save_oncancelcallback",a):(a.setContent(b),a.undoManager.clear(),void a.nodeChanged())}function h(){var b=this;a.on("nodeChange dirty",function(){b.disabled(a.getParam("save_enablewhendirty",!0)&&!a.isDirty())})}a.addCommand("mceSave",e),a.addCommand("mceCancel",g),a.addButton("save",{icon:"save",text:"Save",cmd:"mceSave",disabled:!0,onPostRender:h}),a.addButton("cancel",{text:"Cancel",icon:!1,cmd:"mceCancel",disabled:!0,onPostRender:h}),a.addShortcut("Meta+S","","mceSave")}),function(){}}),d("0")()}();

Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/searchreplace/plugin.min.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/spellchecker/plugin.min.js


+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/tabfocus/plugin.min.js Целия файл

@@ -1 +1 @@
1
-tinymce.PluginManager.add("tabfocus",function(e){function n(e){9!==e.keyCode||e.ctrlKey||e.altKey||e.metaKey||e.preventDefault()}function t(n){function t(n){function t(e){return"BODY"===e.nodeName||"hidden"!=e.type&&"none"!=e.style.display&&"hidden"!=e.style.visibility&&t(e.parentNode)}function r(e){return e.tabIndex||"INPUT"==e.nodeName||"TEXTAREA"==e.nodeName}function c(e){return!r(e)&&"-1"!=e.getAttribute("tabindex")&&t(e)}if(u=i.select(":input:enabled,*[tabindex]:not(iframe)"),o(u,function(n,t){return n.id==e.id?(a=t,!1):void 0}),n>0){for(d=a+1;d<u.length;d++)if(c(u[d]))return u[d]}else for(d=a-1;d>=0;d--)if(c(u[d]))return u[d];return null}var a,u,c,d;if(!(9!==n.keyCode||n.ctrlKey||n.altKey||n.metaKey)&&(c=r(e.getParam("tab_focus",e.getParam("tabfocus_elements",":prev,:next"))),1==c.length&&(c[1]=c[0],c[0]=":prev"),u=n.shiftKey?":prev"==c[0]?t(-1):i.get(c[0]):":next"==c[1]?t(1):i.get(c[1]))){var y=tinymce.get(u.id||u.name);u.id&&y?y.focus():window.setTimeout(function(){tinymce.Env.webkit||window.focus(),u.focus()},10),n.preventDefault()}}var i=tinymce.DOM,o=tinymce.each,r=tinymce.explode;e.on("init",function(){e.inline&&tinymce.DOM.setAttrib(e.getBody(),"tabIndex",null)}),e.on("keyup",n),tinymce.Env.gecko?e.on("keypress keydown",t):e.on("keydown",t)});
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("7",tinymce.util.Tools.resolve),g("1",["7"],function(a){return a("tinymce.PluginManager")}),g("2",["7"],function(a){return a("tinymce.dom.DOMUtils")}),g("3",["7"],function(a){return a("tinymce.util.Tools")}),g("4",["7"],function(a){return a("tinymce.EditorManager")}),g("5",["7"],function(a){return a("tinymce.util.Delay")}),g("6",["7"],function(a){return a("tinymce.Env")}),g("0",["1","2","3","4","5","6"],function(a,b,c,d,e,f){return a.add("tabfocus",function(a){function g(a){9!==a.keyCode||a.ctrlKey||a.altKey||a.metaKey||a.preventDefault()}function h(b){function g(e){function f(a){return"BODY"===a.nodeName||"hidden"!=a.type&&"none"!=a.style.display&&"hidden"!=a.style.visibility&&f(a.parentNode)}function g(a){return/INPUT|TEXTAREA|BUTTON/.test(a.tagName)&&d.get(b.id)&&a.tabIndex!=-1&&f(a)}if(j=i.select(":input:enabled,*[tabindex]:not(iframe)"),c.each(j,function(b,c){if(b.id==a.id)return h=c,!1}),e>0){for(l=h+1;l<j.length;l++)if(g(j[l]))return j[l]}else for(l=h-1;l>=0;l--)if(g(j[l]))return j[l];return null}var h,j,k,l;if(!(9!==b.keyCode||b.ctrlKey||b.altKey||b.metaKey||b.isDefaultPrevented())&&(k=c.explode(a.getParam("tab_focus",a.getParam("tabfocus_elements",":prev,:next"))),1==k.length&&(k[1]=k[0],k[0]=":prev"),j=b.shiftKey?":prev"==k[0]?g(-1):i.get(k[0]):":next"==k[1]?g(1):i.get(k[1]))){var m=d.get(j.id||j.name);j.id&&m?m.focus():e.setTimeout(function(){f.webkit||window.focus(),j.focus()},10),b.preventDefault()}}var i=b.DOM;a.on("init",function(){a.inline&&i.setAttrib(a.getBody(),"tabIndex",null),a.on("keyup",g),f.gecko?a.on("keypress keydown",h):a.on("keydown",h)})}),function(){}}),d("0")()}();

Файловите разлики са ограничени, защото са твърде много
+ 2 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/table/plugin.min.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/template/plugin.min.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/textcolor/plugin.min.js


+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/textpattern/plugin.min.js Целия файл

@@ -1 +1 @@
1
-tinymce.PluginManager.add("textpattern",function(t){function e(){return l&&(i.sort(function(t,e){return t.start.length>e.start.length?-1:t.start.length<e.start.length?1:0}),l=!1),i}function n(t){for(var n=e(),a=0;a<n.length;a++)if(0===t.indexOf(n[a].start)&&(!n[a].end||t.lastIndexOf(n[a].end)==t.length-n[a].end.length))return n[a]}function a(t,n,a){var r,s,d;for(r=e(),d=0;d<r.length;d++)if(s=r[d],s.end&&t.substr(n-s.end.length-a,s.end.length)==s.end)return s}function r(e){function r(){i=i.splitText(f),i.splitText(l-f-h),i.deleteData(0,m.start.length),i.deleteData(i.data.length-m.end.length,m.end.length)}var s,d,o,i,l,f,g,c,m,h,u;return s=t.selection,d=t.dom,s.isCollapsed()&&(o=s.getRng(!0),i=o.startContainer,l=o.startOffset,g=i.data,h=e?1:0,3==i.nodeType&&(m=a(g,l,h),m&&(f=Math.max(0,l-h),f=g.lastIndexOf(m.start,f-m.end.length-1),-1!==f&&(c=d.createRng(),c.setStart(i,f),c.setEnd(i,l-h),m=n(c.toString()),m&&m.end&&!(i.data.length<=m.start.length+m.end.length)))))?(u=t.formatter.get(m.format),u&&u[0].inline?(r(),t.formatter.apply(m.format,{},i),i):void 0):void 0}function s(){var e,a,r,s,d,o,i,l,f,g,c;if(e=t.selection,a=t.dom,e.isCollapsed()&&(i=a.getParent(e.getStart(),"p"))){for(f=new tinymce.dom.TreeWalker(i,i);d=f.next();)if(3==d.nodeType){s=d;break}if(s){if(l=n(s.data),!l)return;if(g=e.getRng(!0),r=g.startContainer,c=g.startOffset,s==r&&(c=Math.max(0,c-l.start.length)),tinymce.trim(s.data).length==l.start.length)return;l.format&&(o=t.formatter.get(l.format),o&&o[0].block&&(s.deleteData(0,l.start.length),t.formatter.apply(l.format,{},s),g.setStart(r,c),g.collapse(!0),e.setRng(g))),l.cmd&&t.undoManager.transact(function(){s.deleteData(0,l.start.length),t.execCommand(l.cmd)})}}}function d(){var e,n;n=r(),n&&(e=t.dom.createRng(),e.setStart(n,n.data.length),e.setEnd(n,n.data.length),t.selection.setRng(e)),s()}function o(){var e,n,a,s,d;e=r(!0),e&&(d=t.dom,n=e.data.slice(-1),/[\u00a0 ]/.test(n)&&(e.deleteData(e.data.length-1,1),a=d.doc.createTextNode(n),e.nextSibling?d.insertAfter(a,e.nextSibling):e.parentNode.appendChild(a),s=d.createRng(),s.setStart(a,1),s.setEnd(a,1),t.selection.setRng(s)))}var i,l=!0;i=t.settings.textpattern_patterns||[{start:"*",end:"*",format:"italic"},{start:"**",end:"**",format:"bold"},{start:"#",format:"h1"},{start:"##",format:"h2"},{start:"###",format:"h3"},{start:"####",format:"h4"},{start:"#####",format:"h5"},{start:"######",format:"h6"},{start:"1. ",cmd:"InsertOrderedList"},{start:"* ",cmd:"InsertUnorderedList"},{start:"- ",cmd:"InsertUnorderedList"}],t.on("keydown",function(t){13!=t.keyCode||tinymce.util.VK.modifierPressed(t)||d()},!0),t.on("keyup",function(t){32!=t.keyCode||tinymce.util.VK.modifierPressed(t)||o()}),this.getPatterns=e,this.setPatterns=function(t){i=t,l=!0}});
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("7",tinymce.util.Tools.resolve),g("1",["7"],function(a){return a("tinymce.PluginManager")}),g("2",["7"],function(a){return a("tinymce.util.Delay")}),g("3",["7"],function(a){return a("tinymce.util.VK")}),g("8",["7"],function(a){return a("tinymce.dom.TreeWalker")}),g("9",["7"],function(a){return a("tinymce.util.Tools")}),g("a",[],function(){var a=function(a){return a.sort(function(a,b){return a.start.length>b.start.length?-1:a.start.length<b.start.length?1:0})},b=function(a,b){for(var c=0;c<a.length;c++)if(0===b.indexOf(a[c].start)&&(!a[c].end||b.lastIndexOf(a[c].end)===b.length-a[c].end.length))return a[c]},c=function(a,b,c,d){var e=b.substr(c-a.end.length-d,a.end.length);return e===a.end},d=function(a,b,c){return a-b-c.end.length-c.start.length>0},e=function(b,e,f,g){var h,i,j=a(b);for(i=0;i<j.length;i++)if(h=j[i],void 0!==h.end&&c(h,e,f,g)&&d(f,g,h))return h};return{findPattern:b,findEndPattern:e}}),g("4",["8","9","a"],function(a,b,c){var d=function(a,b,c,d,e){return a=d>0?a.splitText(d):a,a.splitText(c-d-e),a.deleteData(0,b.start.length),a.deleteData(a.data.length-b.end.length,b.end.length),a},e=function(a,b,e){var f,g,h,i,j,k,l,m,n,o,p;if(f=a.selection,g=a.dom,f.isCollapsed()&&(h=f.getRng(!0),i=h.startContainer,j=h.startOffset,l=i.data,o=e===!0?1:0,3==i.nodeType&&(n=c.findEndPattern(b,l,j,o),void 0!==n&&(k=Math.max(0,j-o),k=l.lastIndexOf(n.start,k-n.end.length-1),k!==-1&&(m=g.createRng(),m.setStart(i,k),m.setEnd(i,j-o),n=c.findPattern(b,m.toString()),n&&n.end&&!(i.data.length<=n.start.length+n.end.length))))))return p=a.formatter.get(n.format),p&&p[0].inline?(a.undoManager.transact(function(){i=d(i,n,j,k,o),a.formatter.apply(n.format,{},i)}),i):void 0},f=function(d,e){var f,g,h,i,j,k,l,m,n,o,p;if(f=d.selection,g=d.dom,f.isCollapsed()&&(l=g.getParent(f.getStart(),"p"))){for(n=new a(l,l);j=n.next();)if(3==j.nodeType){i=j;break}if(i){if(m=c.findPattern(e,i.data),!m)return;if(o=f.getRng(!0),h=o.startContainer,p=o.startOffset,i==h&&(p=Math.max(0,p-m.start.length)),b.trim(i.data).length==m.start.length)return;m.format&&(k=d.formatter.get(m.format),k&&k[0].block&&(i.deleteData(0,m.start.length),d.formatter.apply(m.format,{},i),o.setStart(h,p),o.collapse(!0),f.setRng(o))),m.cmd&&d.undoManager.transact(function(){i.deleteData(0,m.start.length),d.execCommand(m.cmd)})}}};return{applyInlineFormat:e,applyBlockFormat:f}}),g("5",["3","4"],function(a,b){function c(a,c){var d,e;e=b.applyInlineFormat(a,c,!1),e&&(d=a.dom.createRng(),d.setStart(e,e.data.length),d.setEnd(e,e.data.length),a.selection.setRng(d)),b.applyBlockFormat(a,c)}function d(a,c){var d,e,f,g,h;d=b.applyInlineFormat(a,c,!0),d&&(h=a.dom,e=d.data.slice(-1),/[\u00a0 ]/.test(e)&&(d.deleteData(d.data.length-1,1),f=h.doc.createTextNode(e),d.nextSibling?h.insertAfter(f,d.nextSibling):d.parentNode.appendChild(f),g=h.createRng(),g.setStart(f,1),g.setEnd(f,1),a.selection.setRng(g)))}var e=function(a,b,c){for(var d=0;d<a.length;d++)if(c(a[d],b))return!0},f=function(b,c){return e(b,c,function(b,c){return b===c.keyCode&&a.modifierPressed(c)===!1})},g=function(a,b){return e(a,b,function(a,b){return a.charCodeAt(0)===b.charCode})};return{handleEnter:c,handleInlineKey:d,checkCharCode:g,checkKeyCode:f}}),g("6",[],function(){var a=[{start:"*",end:"*",format:"italic"},{start:"**",end:"**",format:"bold"},{start:"#",format:"h1"},{start:"##",format:"h2"},{start:"###",format:"h3"},{start:"####",format:"h4"},{start:"#####",format:"h5"},{start:"######",format:"h6"},{start:"1. ",cmd:"InsertOrderedList"},{start:"* ",cmd:"InsertUnorderedList"},{start:"- ",cmd:"InsertUnorderedList"}],b=function(b){return void 0!==b.textpattern_patterns?b.textpattern_patterns:a};return{getPatterns:b}}),g("0",["1","2","3","4","5","6"],function(a,b,c,d,e,f){return a.add("textpattern",function(a){var d=f.getPatterns(a.settings),g=[",",".",";",":","!","?"],h=[32];a.on("keydown",function(b){13!==b.keyCode||c.modifierPressed(b)||e.handleEnter(a,d)},!0),a.on("keyup",function(b){e.checkKeyCode(h,b)&&e.handleInlineKey(a,d)}),a.on("keypress",function(c){e.checkCharCode(g,c)&&b.setEditorTimeout(a,function(){e.handleInlineKey(a,d)})}),this.setPatterns=function(a){d=a},this.getPatterns=function(){return d}}),function(){}}),d("0")()}();

+ 1 - 0
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/toc/plugin.min.js Целия файл

@@ -0,0 +1 @@
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("4",tinymce.util.Tools.resolve),g("1",["4"],function(a){return a("tinymce.PluginManager")}),g("2",["4"],function(a){return a("tinymce.util.I18n")}),g("3",["4"],function(a){return a("tinymce.util.Tools")}),g("0",["1","2","3"],function(a,b,c){return a.add("toc",function(a){function d(b){return!!b&&a.schema.isValidChild("div",b)}function e(b){return b&&a.dom.is(b,"."+n.className)&&a.getBody().contains(b)}function f(){var b=this;b.disabled(a.readonly||!h()),a.on("LoadContent SetContent change",function(){b.disabled(a.readonly||!h())})}function g(a){var b,c=[];for(b=1;b<=a;b++)c.push("h"+b);return c.join(",")}function h(){return!(!n||!i(n).length)}function i(b){var d=g(b.depth),e=o(d);return e.length&&/^h[1-9]$/i.test(b.headerTag)&&(e=e.filter(function(c,d){return!a.dom.hasClass(d.parentNode,b.className)})),c.map(e,function(a){return a.id||(a.id=r()),{id:a.id,level:parseInt(a.nodeName.replace(/^H/i,""),10),title:o.text(a)}})}function j(a){var b,c=9;for(b=0;b<a.length;b++)if(a[b].level<c&&(c=a[b].level),1==c)return c;return c}function k(b,c){var d="<"+b+' contenteditable="true">',e="</"+b+">";return d+a.dom.encode(c)+e}function l(a){var b=m(a);return'<div class="'+a.className+'" contenteditable="false">'+b+"</div>"}function m(a){var c,d,e,f,g="",h=i(a),l=j(h)-1;if(!h.length)return"";for(g+=k(a.headerTag,b.translate("Table of Contents")),c=0;c<h.length;c++){if(e=h[c],f=h[c+1]&&h[c+1].level,l===e.level)g+="<li>";else for(d=l;d<e.level;d++)g+="<ul><li>";if(g+='<a href="#'+e.id+'">'+e.title+"</a>",f!==e.level&&f)for(d=e.level;d>f;d--)g+="</li></ul><li>";else g+="</li>",f||(g+="</ul>");l=e.level}return g}var n,o=a.$,p={depth:3,headerTag:"h2",className:"mce-toc"},q=function(a){var b=0;return function(){var c=(new Date).getTime().toString(32);return a+c+(b++).toString(32)}},r=q("mcetoc_");a.on("PreInit",function(){var b=a.settings,c=parseInt(b.toc_depth,10)||0;n={depth:c>=1&&c<=9?c:p.depth,headerTag:d(b.toc_header)?b.toc_header:p.headerTag,className:b.toc_class?a.dom.encode(b.toc_class):p.className}}),a.on("PreProcess",function(a){var b=o("."+n.className,a.node);b.length&&(b.removeAttr("contentEditable"),b.find("[contenteditable]").removeAttr("contentEditable"))}),a.on("SetContent",function(){var a=o("."+n.className);a.length&&(a.attr("contentEditable",!1),a.children(":first-child").attr("contentEditable",!0))});var s=function(b){return!b.length||a.dom.getParents(b[0],".mce-offscreen-selection").length>0};a.addCommand("mceInsertToc",function(){var b=o("."+n.className);s(b)?a.insertContent(l(n)):a.execCommand("mceUpdateToc")}),a.addCommand("mceUpdateToc",function(){var b=o("."+n.className);b.length&&a.undoManager.transact(function(){b.html(m(n))})}),a.addButton("toc",{tooltip:"Table of Contents",cmd:"mceInsertToc",icon:"toc",onPostRender:f}),a.addButton("tocupdate",{tooltip:"Update",cmd:"mceUpdateToc",icon:"reload"}),a.addContextToolbar(e,"tocupdate"),a.addMenuItem("toc",{text:"Table of Contents",context:"insert",cmd:"mceInsertToc",onPostRender:f})}),function(){}}),d("0")()}();

+ 96 - 77
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/visualblocks/css/visualblocks.css Целия файл

@@ -1,135 +1,154 @@
1 1
 .mce-visualblocks p {
2
-	padding-top: 10px;
3
-	border: 1px dashed #BBB;
4
-	margin-left: 3px;
5
-	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
2
+  padding-top: 10px;
3
+  border: 1px dashed #BBB;
4
+  margin-left: 3px;
5
+  background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
6
+  background-repeat: no-repeat;
6 7
 }
7 8
 
8 9
 .mce-visualblocks h1 {
9
-	padding-top: 10px;
10
-	border: 1px dashed #BBB;
11
-	margin-left: 3px;
12
-	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
10
+  padding-top: 10px;
11
+  border: 1px dashed #BBB;
12
+  margin-left: 3px;
13
+  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
14
+  background-repeat: no-repeat;
13 15
 }
14 16
 
15 17
 .mce-visualblocks h2 {
16
-	padding-top: 10px;
17
-	border: 1px dashed #BBB;
18
-	margin-left: 3px;
19
-	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
18
+  padding-top: 10px;
19
+  border: 1px dashed #BBB;
20
+  margin-left: 3px;
21
+  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
22
+  background-repeat: no-repeat;
20 23
 }
21 24
 
22 25
 .mce-visualblocks h3 {
23
-	padding-top: 10px;
24
-	border: 1px dashed #BBB;
25
-	margin-left: 3px;
26
-	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
26
+  padding-top: 10px;
27
+  border: 1px dashed #BBB;
28
+  margin-left: 3px;
29
+  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
30
+  background-repeat: no-repeat;
27 31
 }
28 32
 
29 33
 .mce-visualblocks h4 {
30
-	padding-top: 10px;
31
-	border: 1px dashed #BBB;
32
-	margin-left: 3px;
33
-	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
34
+  padding-top: 10px;
35
+  border: 1px dashed #BBB;
36
+  margin-left: 3px;
37
+  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
38
+  background-repeat: no-repeat;
34 39
 }
35 40
 
36 41
 .mce-visualblocks h5 {
37
-	padding-top: 10px;
38
-	border: 1px dashed #BBB;
39
-	margin-left: 3px;
40
-	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
42
+  padding-top: 10px;
43
+  border: 1px dashed #BBB;
44
+  margin-left: 3px;
45
+  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
46
+  background-repeat: no-repeat;
41 47
 }
42 48
 
43 49
 .mce-visualblocks h6 {
44
-	padding-top: 10px;
45
-	border: 1px dashed #BBB;
46
-	margin-left: 3px;
47
-	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
50
+  padding-top: 10px;
51
+  border: 1px dashed #BBB;
52
+  margin-left: 3px;
53
+  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
54
+  background-repeat: no-repeat;
48 55
 }
49 56
 
50
-.mce-visualblocks div {
51
-	padding-top: 10px;
52
-	border: 1px dashed #BBB;
53
-	margin-left: 3px;
54
-	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
57
+.mce-visualblocks div:not([data-mce-bogus]) {
58
+  padding-top: 10px;
59
+  border: 1px dashed #BBB;
60
+  margin-left: 3px;
61
+  background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
62
+  background-repeat: no-repeat;
55 63
 }
56 64
 
57 65
 .mce-visualblocks section {
58
-	padding-top: 10px;
59
-	border: 1px dashed #BBB;
60
-	margin: 0 0 1em 3px;
61
-	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
66
+  padding-top: 10px;
67
+  border: 1px dashed #BBB;
68
+  margin: 0 0 1em 3px;
69
+  background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
70
+  background-repeat: no-repeat;
62 71
 }
63 72
 
64 73
 .mce-visualblocks article {
65
-	padding-top: 10px;
66
-	border: 1px dashed #BBB;
67
-	margin: 0 0 1em 3px;
68
-	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
74
+  padding-top: 10px;
75
+  border: 1px dashed #BBB;
76
+  margin: 0 0 1em 3px;
77
+  background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
78
+  background-repeat: no-repeat;
69 79
 }
70 80
 
71 81
 .mce-visualblocks blockquote {
72
-	padding-top: 10px;
73
-	border: 1px dashed #BBB;
74
-	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
82
+  padding-top: 10px;
83
+  border: 1px dashed #BBB;
84
+  background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
85
+  background-repeat: no-repeat;
75 86
 }
76 87
 
77 88
 .mce-visualblocks address {
78
-	padding-top: 10px;
79
-	border: 1px dashed #BBB;
80
-	margin: 0 0 1em 3px;
81
-	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
89
+  padding-top: 10px;
90
+  border: 1px dashed #BBB;
91
+  margin: 0 0 1em 3px;
92
+  background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
93
+  background-repeat: no-repeat;
82 94
 }
83 95
 
84 96
 .mce-visualblocks pre {
85
-	padding-top: 10px;
86
-	border: 1px dashed #BBB;
87
-	margin-left: 3px;
88
-	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
97
+  padding-top: 10px;
98
+  border: 1px dashed #BBB;
99
+  margin-left: 3px;
100
+  background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
101
+  background-repeat: no-repeat;
89 102
 }
90 103
 
91 104
 .mce-visualblocks figure {
92
-	padding-top: 10px;
93
-	border: 1px dashed #BBB;
94
-	margin: 0 0 1em 3px;
95
-	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
105
+  padding-top: 10px;
106
+  border: 1px dashed #BBB;
107
+  margin: 0 0 1em 3px;
108
+  background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
109
+  background-repeat: no-repeat;
96 110
 }
97 111
 
98 112
 .mce-visualblocks hgroup {
99
-	padding-top: 10px;
100
-	border: 1px dashed #BBB;
101
-	margin: 0 0 1em 3px;
102
-	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
113
+  padding-top: 10px;
114
+  border: 1px dashed #BBB;
115
+  margin: 0 0 1em 3px;
116
+  background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
117
+  background-repeat: no-repeat;
103 118
 }
104 119
 
105 120
 .mce-visualblocks aside {
106
-	padding-top: 10px;
107
-	border: 1px dashed #BBB;
108
-	margin: 0 0 1em 3px;
109
-	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
121
+  padding-top: 10px;
122
+  border: 1px dashed #BBB;
123
+  margin: 0 0 1em 3px;
124
+  background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
125
+  background-repeat: no-repeat;
110 126
 }
111 127
 
112 128
 .mce-visualblocks figcaption {
113
-	border: 1px dashed #BBB;
129
+  border: 1px dashed #BBB;
114 130
 }
115 131
 
116 132
 .mce-visualblocks ul {
117
-	padding-top: 10px;
118
-	border: 1px dashed #BBB;
119
-	margin: 0 0 1em 3px;
120
-	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)
133
+  padding-top: 10px;
134
+  border: 1px dashed #BBB;
135
+  margin: 0 0 1em 3px;
136
+  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
137
+  background-repeat: no-repeat;
121 138
 }
122 139
 
123 140
 .mce-visualblocks ol {
124
-	padding-top: 10px;
125
-	border: 1px dashed #BBB;
126
-	margin: 0 0 1em 3px;
127
-	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
141
+  padding-top: 10px;
142
+  border: 1px dashed #BBB;
143
+  margin: 0 0 1em 3px;
144
+  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
145
+  background-repeat: no-repeat;
128 146
 }
129 147
 
130 148
 .mce-visualblocks dl {
131
-	padding-top: 10px;
132
-	border: 1px dashed #BBB;
133
-	margin: 0 0 1em 3px;
134
-	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
149
+  padding-top: 10px;
150
+  border: 1px dashed #BBB;
151
+  margin: 0 0 1em 3px;
152
+  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
153
+  background-repeat: no-repeat;
135 154
 }

+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/visualblocks/plugin.min.js Целия файл

@@ -1 +1 @@
1
-tinymce.PluginManager.add("visualblocks",function(e,s){function o(){var s=this;s.active(a),e.on("VisualBlocks",function(){s.active(e.dom.hasClass(e.getBody(),"mce-visualblocks"))})}var l,t,a;window.NodeList&&(e.addCommand("mceVisualBlocks",function(){var o,c=e.dom;l||(l=c.uniqueId(),o=c.create("link",{id:l,rel:"stylesheet",href:s+"/css/visualblocks.css"}),e.getDoc().getElementsByTagName("head")[0].appendChild(o)),e.on("PreviewFormats AfterPreviewFormats",function(s){a&&c.toggleClass(e.getBody(),"mce-visualblocks","afterpreviewformats"==s.type)}),c.toggleClass(e.getBody(),"mce-visualblocks"),a=e.dom.hasClass(e.getBody(),"mce-visualblocks"),t&&t.active(c.hasClass(e.getBody(),"mce-visualblocks")),e.fire("VisualBlocks")}),e.addButton("visualblocks",{title:"Show blocks",cmd:"mceVisualBlocks",onPostRender:o}),e.addMenuItem("visualblocks",{text:"Show blocks",cmd:"mceVisualBlocks",onPostRender:o,selectable:!0,context:"view",prependToContext:!0}),e.on("init",function(){e.settings.visualblocks_default_state&&e.execCommand("mceVisualBlocks",!1,null,{skip_focus:!0})}),e.on("remove",function(){e.dom.removeClass(e.getBody(),"mce-visualblocks")}))});
1
+!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("2",tinymce.util.Tools.resolve),g("1",["2"],function(a){return a("tinymce.PluginManager")}),g("0",["1"],function(a){return a.add("visualblocks",function(a,b){function c(){var b=this;b.active(f),a.on("VisualBlocks",function(){b.active(a.dom.hasClass(a.getBody(),"mce-visualblocks"))})}var d,e,f;window.NodeList&&(a.addCommand("mceVisualBlocks",function(){var c,g=a.dom;d||(d=g.uniqueId(),c=g.create("link",{id:d,rel:"stylesheet",href:b+"/css/visualblocks.css"}),a.getDoc().getElementsByTagName("head")[0].appendChild(c)),a.on("PreviewFormats AfterPreviewFormats",function(b){f&&g.toggleClass(a.getBody(),"mce-visualblocks","afterpreviewformats"==b.type)}),g.toggleClass(a.getBody(),"mce-visualblocks"),f=a.dom.hasClass(a.getBody(),"mce-visualblocks"),e&&e.active(g.hasClass(a.getBody(),"mce-visualblocks")),a.fire("VisualBlocks")}),a.addButton("visualblocks",{title:"Show blocks",cmd:"mceVisualBlocks",onPostRender:c}),a.addMenuItem("visualblocks",{text:"Show blocks",cmd:"mceVisualBlocks",onPostRender:c,selectable:!0,context:"view",prependToContext:!0}),a.on("init",function(){a.settings.visualblocks_default_state&&a.execCommand("mceVisualBlocks",!1,null,{skip_focus:!0})}),a.on("remove",function(){a.dom.removeClass(a.getBody(),"mce-visualblocks")}))}),function(){}}),d("0")()}();

Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/visualchars/plugin.min.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/plugins/wordcount/plugin.min.js


+ 0 - 147
tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/Variables.less Целия файл

@@ -1,147 +0,0 @@
1
-// Variables
2
-// Syntax: <control>-(<sub control>)-<bg|border|text>-(<state>)-(<extra>);
3
-// Example: @btn-primary-bg-hover-hlight;
4
-
5
-@prefix:                         mce;
6
-
7
-// Default font
8
-@font-family:                    "Helvetica Neue", Helvetica, Arial, sans-serif;
9
-@font-size:                      14px;
10
-@line-height:                    20px;
11
-@has-gradients:                  false;
12
-@has-radius:                     true;
13
-@has-boxshadow:                  false;
14
-
15
-// Text colors
16
-@text:                           #333333;
17
-@text-inverse:                   #ffffff;
18
-@text-disabled:                  #aaaaaa;
19
-@text-shadow:                    0 1px 1px hsla(hue(@text-inverse), saturation(@text-inverse), lightness(@text-inverse), 0.75);
20
-@text-error:                     #aa0000;
21
-
22
-// Button
23
-@btn-text:                       #333333;
24
-@btn-text-shadow:                #ffffff;
25
-@btn-border-top:                 rgba(0,0,0,0.1);
26
-@btn-border-right:               rgba(0,0,0,0.1);
27
-@btn-border-bottom:              rgba(0,0,0,0.25);
28
-@btn-border-left:                rgba(0,0,0,0.25);
29
-@btn-split-border:               #bdbdbd;
30
-@btn-caret-border:               @btn-text;
31
-@btn-text-disabled:              @text-disabled;
32
-@btn-box-shadow:                 inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
33
-@btn-box-shadow-active:          inset 0 2px 4px rgba(0, 0, 0, .15), 0 1px 2px rgba(0, 0, 0, .05);
34
-@btn-box-disabled-opacity:       0.4;
35
-@btn-bg:                         #ffffff;
36
-@btn-bg-hlight:                  #f5f5f5;
37
-@btn-bg-hover:                   darken(@btn-bg, 5%);
38
-@btn-bg-hlight-hover:            darken(@btn-bg-hlight, 5%);
39
-
40
-@btn-primary-bg:                 #0088cc;
41
-@btn-primary-bg-hlight:          #0044cc;
42
-@btn-primary-bg-hover:           darken(@btn-primary-bg, 5%);
43
-@btn-primary-bg-hover-hlight:    darken(@btn-primary-bg-hlight, 5%);
44
-@btn-primary-text:               #ffffff;
45
-@btn-primary-text-shadow:        #333333;
46
-@btn-primary-border-top:         mix(@btn-border-top, @btn-primary-bg, 50%);
47
-@btn-primary-border-right:       mix(@btn-border-right, @btn-primary-bg, 50%);
48
-@btn-primary-border-bottom:      mix(@btn-border-bottom, @btn-primary-bg, 50%);
49
-@btn-primary-border-left:        mix(@btn-border-left, @btn-primary-bg, 50%);
50
-
51
-// Menu
52
-@menuitem-text:                  #333333;
53
-@menu-bg:                        #FFF;
54
-@menu-border:                    #333;
55
-@menubar-border:                 mix(@panel-border, @panel-bg, 60%);
56
-@menuitem-text-inverse:          #ffffff;
57
-@menubar-bg-active:              darken(@btn-bg, 10%);
58
-@menuitem-bg-hover:              #0081C2;
59
-@menuitem-bg-selected:           #0088cc;
60
-@menuitem-bg-selected-hlight:    #0077b3;
61
-@menuitem-bg-disabled:           #CCC;
62
-@menuitem-caret:                 @menuitem-text;
63
-@menuitem-caret-selected:        @menuitem-text-inverse;
64
-@menuitem-separator-top:         #cbcbcb;
65
-@menuitem-separator-bottom:      #ffffff;
66
-@menuitem-bg-active:             #c8def4;
67
-@menuitem-text-active:           #333333;
68
-@menuitem-preview-border-active: #aaaaaa;
69
-
70
-// Panel
71
-@panel-border:                   #52bef0;
72
-@panel-bg:                       #ffffff;
73
-@panel-bg-hlight:                #FFF;
74
-
75
-// Tabs
76
-@tab-border:                     #c5c5c5;
77
-@tab-bg:                         #e3e3e3;
78
-@tab-bg-hover:                   #fdfdfd;
79
-@tab-bg-active:                  #fdfdfd;
80
-
81
-// Tooltip
82
-@tooltip-bg:                     #000;
83
-@tooltip-text:                   white;
84
-@tooltip-font-size:              11px;
85
-
86
-// Window
87
-@window-border:                  #ffffff;
88
-@window-head-border:             @window-border;
89
-@window-head-close:              mix(@text, @window-bg, 60%);
90
-@window-head-close-hover:        mix(@text, @window-bg, 40%);
91
-@window-foot-border:             @window-border;
92
-@window-foot-bg:                 @window-bg;
93
-@window-fullscreen-bg:           #FFF;
94
-@window-modalblock-bg:           #000;
95
-@window-modalblock-opacity:      0.3;
96
-@window-box-shadow:              0 3px 7px rgba(0, 0, 0, 0.3);
97
-@window-bg:                      #ffffff;
98
-@window-title-font-size:         20px;
99
-
100
-// Popover
101
-@popover-bg:                     @window-bg;
102
-@popover-arrow-width:            10px;
103
-@popover-arrow:                  @window-bg;
104
-@popover-arrow-outer-width:      @popover-arrow-width + 1;
105
-@popover-arrow-outer:            rgba(0, 0, 0, 0.25);
106
-
107
-// Floatpanel
108
-@floatpanel-box-shadow:          0 5px 10px rgba(0, 0, 0, .2);
109
-
110
-// Checkbox
111
-@checkbox-bg:                    @btn-bg;
112
-@checkbox-bg-hlight:             @btn-bg-hlight;
113
-@checkbox-box-shadow:            inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
114
-@checkbox-border:                #c5c5c5;
115
-@checkbox-border-focus:          #59a5e1;
116
-
117
-// Path
118
-@path-text:                      @text;
119
-@path-bg-focus:                  #666;
120
-@path-text-focus:                #fff;
121
-
122
-// Textbox
123
-@textbox-text-placeholder:       #aaa;
124
-@textbox-box-shadow:             inset 0 1px 1px rgba(0, 0, 0, 0.075);
125
-@textbox-bg:                     #ffffff;
126
-@textbox-border:                 #b3e7ff;
127
-@textbox-border-focus:           #59a5e1;
128
-
129
-// Throbber
130
-@throbber-bg:                    #fff url('img/loader.gif') no-repeat center center;
131
-
132
-// Combobox
133
-@combobox-border:                @textbox-border;
134
-
135
-// Colorpicker
136
-@colorpicker-border:             @textbox-border;
137
-@colorpicker-hue-bg:             #fff;
138
-@colorpicker-hue-border:         #333;
139
-
140
-// Grid
141
-@grid-bg-active:                 @menuitem-bg-active;
142
-@grid-border-active:             #a1a1a1;
143
-@grid-border:                    #d6d6d6;
144
-
145
-// Misc
146
-@colorbtn-backcolor-bg:          #bbbbbb;
147
-@iframe-border:                  @panel-border;

+ 0 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/content.inline.min.css Целия файл

@@ -1 +0,0 @@
1
-.mce-object{border:1px dotted #3A3A3A;background:#d5d5d5 url(img/object.gif) no-repeat center}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0px}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3A3A3A;background:#d5d5d5 url(img/anchor.gif) no-repeat center}.mce-nbsp{background:#AAA}hr{cursor:default}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px solid #F00;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td.mce-item-selected,th.mce-item-selected{background-color:#3399ff !important}.mce-edit-focus{outline:1px dotted #333}

+ 0 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/content.min.css Целия файл

@@ -1 +0,0 @@
1
-body{background-color:#FFFFFF;color:#000000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;scrollbar-3dlight-color:#F0F0EE;scrollbar-arrow-color:#676662;scrollbar-base-color:#F0F0EE;scrollbar-darkshadow-color:#DDDDDD;scrollbar-face-color:#E0E0DD;scrollbar-highlight-color:#F0F0EE;scrollbar-shadow-color:#F0F0EE;scrollbar-track-color:#F5F5F5}td,th{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px}.mce-object{border:1px dotted #3A3A3A;background:#d5d5d5 url(img/object.gif) no-repeat center}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0px}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3A3A3A;background:#d5d5d5 url(img/anchor.gif) no-repeat center}.mce-nbsp{background:#AAA}hr{cursor:default}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px solid #F00;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td.mce-item-selected,th.mce-item-selected{background-color:#3399ff !important}.mce-edit-focus{outline:1px dotted #333}

+ 0 - 1
tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/fonts/readme.md Целия файл

@@ -1 +0,0 @@
1
-Icons are generated and provided by the http://icomoon.io service.

BIN
tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/fonts/tinymce-small.eot Целия файл


Файловите разлики са ограничени, защото са твърде много
+ 0 - 1043
tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/fonts/tinymce-small.json


+ 0 - 62
tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/fonts/tinymce-small.svg Целия файл

@@ -1,62 +0,0 @@
1
-<?xml version="1.0" standalone="no"?>
2
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
-<svg xmlns="http://www.w3.org/2000/svg">
4
-<metadata>Generated by IcoMoon</metadata>
5
-<defs>
6
-<font id="tinymce-small" horiz-adv-x="512">
7
-<font-face units-per-em="512" ascent="480" descent="-32" />
8
-<missing-glyph horiz-adv-x="512" />
9
-<glyph unicode="&#x20;" d="" horiz-adv-x="256" />
10
-<glyph unicode="&#xe000;" d="M480 40v295.969l-111.969 112.031h-296.031c-22.091 0-40-17.908-40-40v-368c0-22.092 17.909-40 40-40h368c22.092 0 40 17.908 40 40zM288 384h32v-96h-32v96zM352 64h-192v127.941c0.017 0.021 0.038 0.041 0.058 0.059h191.885c0.020-0.018 0.041-0.038 0.058-0.059l-0.001-127.941zM416 64h-32v128c0 17.6-14.4 32-32 32h-192c-17.6 0-32-14.4-32-32v-128h-32v320h32v-96c0-17.6 14.4-32 32-32h160c17.6 0 32 14.4 32 32v85.505l64-64.036v-245.469z" />
11
-<glyph unicode="&#xe001;" d="M425.373 358.627l-66.746 66.745c-12.444 12.446-37.027 22.628-54.627 22.628h-208c-17.6 0-32-14.4-32-32v-384c0-17.6 14.4-32 32-32h320c17.6 0 32 14.4 32 32v272c0 17.6-10.183 42.182-22.627 54.627zM402.745 336.001c3.396-3.398 6.896-9.581 9.447-16.001h-92.192v92.193c6.42-2.55 12.602-6.050 16-9.448l66.745-66.744zM415.942 32h-319.885c-0.020 0.017-0.041 0.038-0.057 0.058v383.885c0.017 0.020 0.038 0.041 0.057 0.057h191.943v-128h128v-255.942c-0.017-0.020-0.038-0.041-0.058-0.058z" />
12
-<glyph unicode="&#xe002;" d="M512 183.771v80.458l-79.572 7.957c-4.093 15.021-10.044 29.274-17.605 42.49l52.298 63.919-56.526 56.525-63.918-52.298c-13.217 7.562-27.471 13.513-42.491 17.604l-7.957 79.574h-80.458l-7.957-79.573c-15.021-4.093-29.274-10.043-42.49-17.604l-63.919 52.297-56.525-56.525 52.298-63.918c-7.562-13.216-13.513-27.47-17.605-42.49l-79.573-7.958v-80.458l79.573-7.957c4.093-15.021 10.043-29.274 17.605-42.491l-52.298-63.918 56.524-56.524 63.919 52.298c13.216-7.562 27.47-13.514 42.49-17.605l7.958-79.574h80.458l7.957 79.572c15.021 4.093 29.274 10.044 42.491 17.605l63.918-52.298 56.524 56.524-52.298 63.918c7.562 13.217 13.514 27.471 17.605 42.49l79.574 7.96zM352 192l-64-64h-64l-64 64v64l64 64h64l64-64v-64z" />
13
-<glyph unicode="&#xe003;" d="M32 384h448v-64h-448zM32 192h448v-64h-448zM32 288h288v-64h-288zM32 96h288v-64h-288z" />
14
-<glyph unicode="&#xe004;" d="M32 384h448v-64h-448zM32 192h448v-64h-448zM128 288h256v-64h-256zM128 96h256v-64h-256z" />
15
-<glyph unicode="&#xe005;" d="M32 384h448v-64h-448zM32 192h448v-64h-448zM192 288h288v-64h-288zM192 96h288v-64h-288z" />
16
-<glyph unicode="&#xe006;" d="M32 384h448v-64h-448zM32 192h448v-64h-448zM32 288h448v-64h-448zM32 96h448v-64h-448z" />
17
-<glyph unicode="&#xe007;" d="M432.204 144.934c-23.235 23.235-53.469 34.002-80.541 31.403l-31.663 31.663 96 96c0 0 64 64 0 128l-160-160-160 160c-64-64 0-128 0-128l96-96-31.663-31.663c-27.072 2.599-57.305-8.169-80.54-31.403-37.49-37.49-42.556-93.209-11.313-124.45 31.241-31.241 86.96-26.177 124.45 11.313 23.235 23.234 34.001 53.469 31.403 80.54l31.663 31.663 31.664-31.664c-2.598-27.072 8.168-57.305 31.403-80.539 37.489-37.49 93.209-42.556 124.449-11.313 31.244 31.241 26.178 86.959-11.312 124.45zM176.562 100.711c-1.106-12.166-7.51-24.913-17.57-34.973-11.106-11.107-25.54-17.738-38.609-17.738-5.262 0-12.649 1.114-17.958 6.424-10.703 10.702-8.688 36.566 11.313 56.568 11.106 11.107 25.54 17.738 38.609 17.738 5.262 0 12.649-1.114 17.958-6.424 6.556-6.555 6.735-16.344 6.257-21.595zM256 176c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM409.576 54.424c-5.31-5.31-12.696-6.424-17.958-6.424-13.069 0-27.503 6.631-38.609 17.738-10.061 10.060-16.464 22.807-17.569 34.973-0.479 5.251-0.3 15.040 6.257 21.596 5.309 5.311 12.695 6.424 17.958 6.424 13.068 0 27.503-6.631 38.608-17.737 20.002-20.004 22.016-45.868 11.313-56.57z" />
18
-<glyph unicode="&#xe008;" d="M352 288v80c0 8.8-7.2 16-16 16h-80v32c0 17.6-14.4 32-32 32h-64c-17.602 0-32-14.4-32-32v-32h-80c-8.801 0-16-7.2-16-16v-256c0-8.8 7.199-16 16-16h112v-96h192l96 96v192h-96zM160 415.943c0.017 0.019 0.036 0.039 0.057 0.057h63.884c0.021-0.018 0.041-0.038 0.059-0.057v-31.943h-64v31.943zM96 320v32h192v-32h-192zM352 45.255v50.745h50.745l-50.745-50.745zM416 128h-96v-96h-128v224h224v-128z" />
19
-<glyph unicode="&#xe009;" d="M444 288h-28v128h32v32h-160v-32h32v-128h-128v128h32v32h-160v-32h32v-128h-28c-19.8 0-36-16.2-36-36v-216c0-19.8 16.2-36 36-36h120c19.8 0 36 16.2 36 36v156h64v-156c0-19.8 16.2-36 36-36h120c19.8 0 36 16.2 36 36v216c0 19.8-16.2 36-36 36zM174 32h-92c-9.9 0-18 7.2-18 16s8.1 16 18 16h92c9.9 0 18-7.2 18-16s-8.1-16-18-16zM272 224h-32c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16zM430 32h-92c-9.9 0-18 7.2-18 16s8.1 16 18 16h92c9.9 0 18-7.2 18-16s-8.1-16-18-16z" />
20
-<glyph unicode="&#xe00a;" d="M192 416h288v-64h-288zM192 256h288v-64h-288zM192 96h288v-64h-288zM64 384c0-17.673 14.327-32 32-32s32 14.327 32 32c0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32zM64 224c0-17.673 14.327-32 32-32s32 14.327 32 32c0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32zM64 64c0-17.673 14.327-32 32-32s32 14.327 32 32c0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32z" />
21
-<glyph unicode="&#xe00b;" d="M192 416h288v-64h-288zM192 256h288v-64h-288zM192 96h288v-64h-288zM160 215v73h-32v160h-64v-32h32v-128h-32v-32h64v-25l-64-30v-73h64v-32h-64v-32h64v-32h-64v-32h96v160h-64v25z" />
22
-<glyph unicode="&#xe00c;" d="M32 384h448v-64h-448zM192 192h288v-64h-288zM192 288h288v-64h-288zM32 96h448v-64h-448zM32 288l112-80-112-80z" />
23
-<glyph unicode="&#xe00d;" d="M32 384h448v-64h-448zM32 192h288v-64h-288zM32 288h288v-64h-288zM32 96h448v-64h-448zM480 288l-112-80 112-80z" />
24
-<glyph unicode="&#xe00e;" d="M128.214 267.637c52.9 0 95.786-45.585 95.786-101.819 0-56.232-42.886-101.818-95.786-101.818-52.901 0-95.786 45.585-95.786 101.818l-0.428 14.546c0 112.465 85.77 203.636 191.572 203.636v-58.182c-36.55 0-70.913-15.13-96.758-42.602-4.977-5.289-9.517-10.917-13.612-16.828 4.892 0.82 9.903 1.249 15.012 1.249zM384.214 267.637c52.9 0 95.786-45.585 95.786-101.819 0-56.232-42.886-101.818-95.786-101.818-52.901 0-95.786 45.585-95.786 101.818l-0.428 14.546c0 112.465 85.77 203.636 191.572 203.636v-58.182c-36.55 0-70.913-15.13-96.758-42.602-4.978-5.289-9.518-10.917-13.612-16.828 4.892 0.82 9.903 1.249 15.012 1.249z" />
25
-<glyph unicode="&#xe00f;" d="M352 0c29.5 99.5 67.453 227.633-128 223.048v-111.048l-168.001 168 168.001 168v-108.663c234.046 6.1 272-179.337 128-339.337z" />
26
-<glyph unicode="&#xe010;" d="M288 339.337v108.663l168.001-168-168.001-168v111.048c-195.453 4.585-157.5-123.548-128-223.048-144 160-106.046 345.437 128 339.337z" />
27
-<glyph unicode="&#xe011;" d="M463.637 364.892l-66.745 66.744c-10.552 10.552-24.616 16.364-39.599 16.364s-29.047-5.812-39.598-16.363l-82.746-82.745c-21.834-21.834-21.834-57.362 0-79.196l1.373-1.373 33.941 33.941-1.373 1.373c-3.066 3.066-3.066 8.247 0 11.313l82.746 82.746c2.005 2.004 4.404 2.304 5.656 2.304s3.651-0.299 5.656-2.305l66.745-66.744c3.066-3.067 3.066-8.249 0.001-11.314l-82.747-82.747c-2.004-2.004-4.403-2.304-5.655-2.304s-3.651 0.3-5.656 2.306l-1.373 1.373-33.94-33.942 1.371-1.371c10.553-10.554 24.615-16.364 39.6-16.364s29.047 5.812 39.598 16.363l82.747 82.746c21.831 21.833 21.831 57.36-0.002 79.195zM275.678 179.678l-33.941-33.941 1.373-1.373c2.004-2.004 2.305-4.403 2.305-5.655 0-1.253-0.299-3.651-2.303-5.657l-82.747-82.745c-2.005-2.005-4.405-2.305-5.657-2.305s-3.652 0.3-5.657 2.305l-66.746 66.743c-2.005 2.005-2.305 4.405-2.305 5.657s0.299 3.65 2.305 5.656l82.745 82.744c2.005 2.006 4.405 2.306 5.657 2.306s3.652-0.3 5.657-2.306l1.373-1.371 33.941 33.94-1.373 1.373c-10.552 10.552-24.615 16.363-39.598 16.363s-29.046-5.812-39.598-16.363l-82.744-82.743c-10.553-10.552-16.365-24.617-16.365-39.599s5.812-29.047 16.363-39.599l66.745-66.745c10.553-10.551 24.616-16.363 39.599-16.363s29.046 5.812 39.598 16.363l82.747 82.746c10.552 10.552 16.361 24.615 16.361 39.598s-5.812 29.047-16.363 39.598l-1.372 1.373zM176 125c-4.862 0-9.725 1.855-13.435 5.564-7.42 7.42-7.42 19.449 0 26.869l160 160c7.42 7.42 19.448 7.42 26.868 0 7.422-7.42 7.422-19.45 0-26.87l-160-160c-3.708-3.708-8.571-5.563-13.433-5.563z" />
28
-<glyph unicode="&#xe012;" d="M463.637 364.892l-66.745 66.744c-10.552 10.552-24.616 16.364-39.599 16.364s-29.047-5.812-39.598-16.363l-82.746-82.745c-21.834-21.834-21.834-57.362 0-79.196l1.373-1.373 33.941 33.941-1.373 1.373c-3.066 3.066-3.066 8.247 0 11.313l82.746 82.746c2.005 2.004 4.404 2.304 5.656 2.304s3.651-0.299 5.656-2.305l66.745-66.744c3.066-3.067 3.066-8.249 0.001-11.314l-82.747-82.747c-2.004-2.004-4.403-2.304-5.655-2.304s-3.651 0.3-5.656 2.306l-1.373 1.373-33.94-33.942 1.371-1.371c10.553-10.554 24.615-16.364 39.6-16.364s29.047 5.812 39.598 16.363l82.747 82.746c21.831 21.833 21.831 57.36-0.002 79.195zM275.678 179.678l-33.941-33.941 1.373-1.373c2.004-2.004 2.305-4.403 2.305-5.655 0-1.253-0.299-3.651-2.303-5.657l-82.747-82.745c-2.005-2.005-4.405-2.305-5.657-2.305s-3.652 0.3-5.657 2.305l-66.746 66.743c-2.005 2.005-2.305 4.405-2.305 5.657s0.299 3.65 2.305 5.656l82.745 82.744c2.005 2.006 4.405 2.306 5.657 2.306s3.652-0.3 5.657-2.306l1.373-1.371 33.941 33.94-1.373 1.373c-10.552 10.552-24.615 16.363-39.598 16.363s-29.046-5.812-39.598-16.363l-82.744-82.743c-10.553-10.552-16.365-24.617-16.365-39.599s5.812-29.047 16.363-39.599l66.745-66.745c10.553-10.551 24.616-16.363 39.599-16.363s29.046 5.812 39.598 16.363l82.747 82.746c10.552 10.552 16.361 24.615 16.361 39.598s-5.812 29.047-16.363 39.598l-1.372 1.373zM400 61c-4.862 0-9.725 1.854-13.435 5.565l-64 63.999c-7.422 7.42-7.422 19.449 0 26.869 7.42 7.422 19.448 7.422 26.868 0l64-64c7.422-7.42 7.422-19.448 0-26.868-3.708-3.711-8.571-5.565-13.433-5.565zM304 0c-8.837 0-16 7.163-16 16v64c0 8.837 7.163 16 16 16s16-7.163 16-16v-64c0-8.837-7.163-16-16-16zM464 160h-64c-8.837 0-16 7.163-16 16s7.163 16 16 16h64c8.837 0 16-7.163 16-16s-7.163-16-16-16zM112 387c4.862 0 9.725-1.854 13.435-5.565l64-64c7.421-7.42 7.421-19.449 0-26.869-7.42-7.422-19.449-7.422-26.869 0l-64 64c-7.421 7.42-7.421 19.449 0 26.869 3.709 3.711 8.572 5.565 13.434 5.565zM208 448c8.837 0 16-7.163 16-16v-64c0-8.837-7.163-16-16-16s-16 7.163-16 16v64c0 8.837 7.163 16 16 16zM48 288h64c8.837 0 16-7.163 16-16s-7.163-16-16-16h-64c-8.837 0-16 7.163-16 16s7.163 16 16 16z" />
29
-<glyph unicode="&#xe013;" d="M128 448v-448l128 128 128-128v448h-256zM352 85.255l-96 96-96-96v330.745h192v-330.745z" />
30
-<glyph unicode="&#xe014;" d="M448 416h-384c-17.6 0-32-14.4-32-32v-320c0-17.6 14.4-32 32-32h384c17.6 0 32 14.4 32 32v320c0 17.6-14.4 32-32 32zM448 64.058c-0.006-0.007-0.015-0.014-0.021-0.021l-95.979 159.963-80-64-112 144-95.984-239.958c-0.005 0.005-0.011 0.011-0.016 0.016v319.885c0.017 0.020 0.038 0.041 0.057 0.057h383.885c0.020-0.017 0.041-0.038 0.058-0.058v-319.884zM320 304c0-26.51 21.49-48 48-48s48 21.49 48 48c0 26.51-21.49 48-48 48-26.51 0-48-21.49-48-48z" />
31
-<glyph unicode="&#xe015;" d="M448 416h-384c-17.6 0-32-14.4-32-32v-320c0-17.6 14.4-32 32-32h384c17.6 0 32 14.4 32 32v320c0 17.6-14.4 32-32 32zM128 64h-64v64h64v-64zM128 192h-64v64h64v-64zM128 320h-64v64h64v-64zM352 64h-192v320h192v-320zM448 64h-64v64h64v-64zM448 192h-64v64h64v-64zM448 320h-64v64h64v-64zM192 320v-192l144 96z" />
32
-<glyph unicode="&#xe016;" d="M224 128h64v-64h-64v64zM352 352c17.673 0 32-14.327 32-32v-83l-114-77h-46v32l96 64v32h-160v64h192zM256 448c-59.833 0-116.083-23.3-158.392-65.608-42.307-42.309-65.608-98.559-65.608-158.392 0-59.832 23.301-116.084 65.608-158.392 42.309-42.308 98.559-65.608 158.392-65.608 59.832 0 116.084 23.3 158.392 65.608 42.308 42.308 65.608 98.56 65.608 158.392 0 59.833-23.3 116.083-65.608 158.392-42.308 42.308-98.56 65.608-158.392 65.608z" />
33
-<glyph unicode="&#xe017;" d="M208 128l-96 96 96 96-32 32-128-128 128-128zM336 352l-32-32 96-96-96-96 32-32 128 128z" />
34
-<glyph unicode="&#xe018;" d="M38.899 327.688l40.707-25.441c25.401 40.557 64.394 71.727 110.604 87.123l-15.183 45.547c-56.874-18.949-104.864-57.313-136.128-107.229zM336.973 434.917l-15.183-45.547c46.211-15.396 85.202-46.566 110.604-87.124l40.706 25.441c-31.263 49.917-79.253 88.281-136.127 107.23zM303.987 127.996c-2.404 0-4.846 0.545-7.143 1.693l-72.844 36.422v105.889c0 8.836 7.164 16 16 16s16-7.164 16-16v-86.111l55.155-27.578c7.903-3.951 11.107-13.562 7.155-21.466-2.802-5.607-8.454-8.848-14.323-8.849zM256 384c-106.039 0-192-85.961-192-192s85.961-192 192-192c106.039 0 192 85.961 192 192 0 106.039-85.961 192-192 192zM256 48c-79.529 0-144 64.471-144 144s64.471 144 144 144c79.529 0 144-64.471 144-144 0-79.529-64.471-144-144-144z" />
35
-<glyph unicode="&#xe019;" d="M32 252.127c22.659 24.96 48.581 46.18 76.636 62.562 45.166 26.372 96.123 40.311 147.364 40.311 51.24 0 102.198-13.939 147.363-40.312 28.056-16.382 53.978-37.602 76.637-62.562v58.716c-16.505 14.059-34.062 26.57-52.434 37.297-52.503 30.657-111.829 46.861-171.566 46.861s-119.064-16.204-171.567-46.86c-18.371-10.727-35.928-23.239-52.433-37.298v-58.715zM256 320c-91.598 0-172.919-50.278-224-128 51.081-77.724 132.402-128 224-128 91.598 0 172.919 50.276 224 128-51.081 77.722-132.402 128-224 128zM256 224c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.674 14.327 32 32 32s32-14.326 32-32zM364.033 131.669c-33.717-19.687-70.064-29.669-108.033-29.669s-74.316 9.982-108.033 29.669c-25.777 15.052-49.308 35.655-69.057 60.331 19.749 24.675 43.28 45.279 69.058 60.33 6.638 3.876 13.379 7.37 20.213 10.491-5.256-11.871-8.181-25.004-8.181-38.821 0-53.020 42.981-96 96-96 53.020 0 96 42.98 96 96 0 13.817-2.925 26.95-8.18 38.821 6.834-3.122 13.575-6.615 20.213-10.491 25.777-15.051 49.308-35.655 69.058-60.33-19.749-24.676-43.28-45.279-69.058-60.331z" />
36
-<glyph unicode="&#xe01a;" d="M325.584 338.083c-12.306 40.981-14.438 45.917-53.584 45.917h-32c-39.809 0-41.332-5.076-54.209-48 0-0.001 0-0.001-0.001-0.002l-71.999-239.998h56.818l28.8 96h113.183l28.8-96h56.815l-72.623 242.083zM218.609 256l19.2 68c5.043 16.809 18.19 15 18.19 15s13.147 1.809 18.19-15h0.002l19.2-68h-74.782z" />
37
-<glyph unicode="&#xe01b;" d="M32 384v-352h448v352h-448zM192 160v64h128v-64h-128zM320 128v-64h-128v64h128zM320 320v-64h-128v64h128zM160 320v-64h-96v64h96zM64 224h96v-64h-96v64zM352 224h96v-64h-96v64zM352 256v64h96v-64h-96zM64 128h96v-64h-96v64zM352 64v64h96v-64h-96z" />
38
-<glyph unicode="&#xe01c;" d="M32 256h448v-64h-448z" />
39
-<glyph unicode="&#xe01d;" d="M32 96h256v-64h-256v64zM384 384h-110.279l-91.883-256h-66.144l91.881 256h-111.575v64h288v-64zM464.887 32l-64.887 64.887-64.887-64.887-31.113 31.113 64.887 64.887-64.887 64.887 31.113 31.113 64.887-64.887 64.887 64.887 31.113-31.113-64.887-64.887 64.887-64.887-31.113-31.113z" />
40
-<glyph unicode="&#xe01e;" d="M384 25v-25h64v-32h-96v73l64 30v25h-64v32h96v-73zM338 352h-68l-94-94-94 94h-68l128-128-128-128h68l94 94 94-94h68l-128 128z" />
41
-<glyph unicode="&#xe01f;" d="M384 377v-25h64v-32h-96v73l64 30v25h-64v32h96v-73zM338 352h-68l-94-94-94 94h-68l128-128-128-128h68l94 94 94-94h68l-128 128z" />
42
-<glyph unicode="&#xe020;" d="M352 64v18.502c75.674 30.814 128 96.91 128 173.498 0 106.039-100.288 192-224 192s-224-85.961-224-192c0-76.588 52.327-142.684 128-173.498v-18.502h-96l-32 48v-112h160v111.406c-50.45 25.681-85.333 80.77-85.333 144.594 0 88.366 66.859 160 149.333 160 82.474 0 149.333-71.634 149.333-160 0-63.824-34.883-118.913-85.333-144.594v-111.406h160v112l-32-48h-96z" />
43
-<glyph unicode="&#xe021;" d="M256 410c49.683 0 96.391-19.347 131.521-54.478s54.479-81.839 54.479-131.522-19.348-96.391-54.479-131.521-81.838-54.479-131.521-54.479-96.391 19.348-131.522 54.479-54.478 81.838-54.478 131.521 19.347 96.391 54.478 131.522 81.839 54.478 131.522 54.478zM256 448c-123.712 0-224-100.288-224-224s100.288-224 224-224 224 100.288 224 224-100.288 224-224 224v0zM160 288c0-17.673 14.327-32 32-32s32 14.327 32 32c0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32zM288 288c0-17.673 14.327-32 32-32s32 14.327 32 32c0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32zM256 152c-50.92 0-96.28 18.437-125.583 47.164 11.563-58.804 63.389-103.164 125.583-103.164 62.194 0 114.020 44.36 125.584 103.164-29.304-28.727-74.664-47.164-125.584-47.164z" />
44
-<glyph unicode="&#xe022;" d="M128 416h256v-64h-256v64zM448 320h-384c-17.6 0-32-14.4-32-32v-128c0-17.6 14.398-32 32-32h64v-96h256v96h64c17.6 0 32 14.4 32 32v128c0 17.6-14.4 32-32 32zM352 64h-192v128h192v-128zM455.2 272c0-12.813-10.387-23.2-23.199-23.2s-23.201 10.387-23.201 23.2 10.389 23.2 23.201 23.2c12.813 0 23.199-10.387 23.199-23.2z" />
45
-<glyph unicode="&#xe023;" d="M240 288l-96 96 64 64h-176v-176l64 64 96-96zM320 240l96 96 64-64v176h-176l64-64-96-96zM272 160l96-96-64-64h176v176l-64-64-96 96zM192 208l-96-96-64 64v-176h176l-64 64 96 96z" />
46
-<glyph unicode="&#xe024;" d="M480 416v32h-96c-17.601 0-32-14.4-32-32v-160c0-7.928 2.929-15.201 7.748-20.807l-151.748-130.193-71 74-41-35 112-144 208 224h64v32h-96v160h96zM128 224h32v192c0 17.6-14.4 32-32 32h-64c-17.6 0-32-14.4-32-32v-192h32v96h64v-96zM64 352v64h64v-64h-64zM320 256v48c0 17.6-4.4 32-22 32 17.6 0 22 14.4 22 32v48c0 17.6-14.4 32-32 32h-96v-224h96c17.6 0 32 14.4 32 32zM224 416h64v-64h-64v64zM224 320h64v-64h-64v64z" />
47
-<glyph unicode="&#xe025;" d="M224 224h-64v64h64v64h64v-64h64v-64h-64v-64h-64v64zM480 192v-160h-448v160h64v-96h320v96h64z" />
48
-<glyph unicode="&#xe026;" d="M256 288h64v-32h-64zM256 96h64v-32h-64zM288 192h64v-32h-64zM384 192v-96h-32v-32h64v128zM192 192h64v-32h-64zM160 96h64v-32h-64zM160 288h64v-32h-64zM96 384v-128h32v96h32v32zM352 256h64v128h-32v-96h-32zM32 448v-448h448v448h-448zM448 32h-384v384h384v-384zM96 192v-128h32v96h32v32zM288 384h64v-32h-64zM192 384h64v-32h-64z" />
49
-<glyph unicode="&#xe027;" d="M408 448l8-192h-320l8 192h16l8-160h256l8 160h16zM104 0l-8 160h320l-8-160h-16l-8 128h-256l-8-128h-16zM32 224h64v-32h-64zM128 224h64v-32h-64zM224 224h64v-32h-64zM320 224h64v-32h-64zM416 224h64v-32h-64z" />
50
-<glyph unicode="&#xe028;" d="M288 448c123.712 0 224-100.288 224-224s-100.288-224-224-224v48c47.012 0 91.209 18.307 124.451 51.549 33.242 33.242 51.549 77.439 51.549 124.451 0 47.011-18.307 91.209-51.549 124.451-33.242 33.242-77.439 51.549-124.451 51.549-47.011 0-91.209-18.307-124.451-51.549-25.57-25.569-42.291-57.623-48.653-92.451h93.104l-112-128-112 128h82.285c15.53 108.551 108.869 192 221.715 192zM384 256v-64h-128v160h64v-96z" />
51
-<glyph unicode="&#xe02a;" d="M312.721 232.909c24.037 19.075 39.279 47.428 39.279 79.091 0 57.438-50.145 104-112 104h-112v-384h144c61.856 0 112 46.562 112 104 0 44.098-29.559 81.781-71.279 96.909zM192 328c0 13.255 10.745 24 24 24h33.602c21.207 0 38.398-21.49 38.398-48s-17.191-48-38.398-48h-57.602v72zM273.6 96h-57.6c-13.255 0-24 10.745-24 24v72h81.6c21.209 0 38.4-21.49 38.4-48s-17.191-48-38.4-48z" />
52
-<glyph unicode="&#xe02b;" d="M416 416v-32h-72l-128-320h72v-32h-224v32h72l128 320h-72v32h224z" />
53
-<glyph unicode="&#xe02c;" d="M96 64h288v-32h-288v32zM320 416v-192c0-15.656-7.35-30.812-20.695-42.676-15.471-13.751-36.534-21.324-59.305-21.324-22.772 0-43.834 7.573-59.304 21.324-13.346 11.864-20.696 27.020-20.696 42.676v192h-64v-192c0-70.691 64.471-128 144-128s144 57.309 144 128v192h-64z" />
54
-<glyph unicode="&#xe02d;" d="M480 224h-132.938c-25.039 17.71-57.215 27.43-91.062 27.43-44.603 0-82.286 25.121-82.286 54.856 0 29.735 37.683 54.857 82.286 54.857 37.529 0 70.154-17.788 79.56-41.143h56.508c-3.965 25.322-18.79 48.984-42.029 66.413-25.44 19.080-58.838 29.587-94.039 29.587-35.202 0-68.598-10.507-94.037-29.587-27.394-20.545-43.106-49.751-43.106-80.127s15.712-59.582 43.106-80.127c0.978-0.733 1.971-1.449 2.973-2.158h-132.936v-32h256.266c29.104-8.553 50.021-28.135 50.021-50.286 0-29.734-37.684-54.855-82.286-54.855-37.53 0-70.154 17.787-79.559 41.143h-56.508c3.965-25.32 18.791-48.984 42.030-66.413 25.438-19.082 58.834-29.59 94.036-29.59 35.201 0 68.599 10.508 94.037 29.587 27.395 20.545 43.104 49.751 43.104 80.127 0 17.649-5.327 34.896-15.147 50.286h102.006v32z" />
55
-<glyph unicode="&#xe02e;" d="M192 416c-61.856 0-112-50.144-112-112s50.144-112 112-112v-160h64v320h32v-320h64v320h64v64h-224z" />
56
-<glyph unicode="&#xe02f;" d="M224 416c-61.856 0-112-50.144-112-112s50.144-112 112-112v-160h64v320h32v-320h64v320h64v64h-224zM32 32l112 96-112 96z" />
57
-<glyph unicode="&#xe030;" d="M160 416c-61.856 0-112-50.144-112-112s50.144-112 112-112v-160h64v320h32v-320h64v320h64v64h-224zM480 224l-112-96 112-96z" />
58
-<glyph unicode="&#xe031;" d="M416 320h-96v32l-96 96h-192v-352h192v-96h288v224l-96 96zM416 274.745l50.745-50.745h-50.745v50.745zM224 402.745l50.745-50.745h-50.745v50.745zM64 416h128v-96h96v-192h-224v288zM480 32h-224v64h64v192h64v-96h96v-160z" />
59
-<glyph unicode="&#xe032;" d="M384 352h32v-32h-32zM320 288h32v-32h-32zM320 224h32v-32h-32zM320 160h32v-32h-32zM256 224h32v-32h-32zM256 160h32v-32h-32zM192 160h32v-32h-32zM384 288h32v-32h-32zM384 224h32v-32h-32zM384 160h32v-32h-32zM384 96h32v-32h-32zM320 96h32v-32h-32zM256 96h32v-32h-32zM192 96h32v-32h-32zM128 96h32v-32h-32z" />
60
-<glyph unicode="&#xe034;" d="M464 416h-208l-16 32h-176l-32-64h448zM420.17 128h43.83l16 224h-448l32-320h178.040c-52.441 18.888-90.040 69.133-90.040 128 0 74.991 61.009 136 136 136 74.99 0 136-61.009 136-136 0-10.839-1.311-21.575-3.83-32zM437.498 55.125l-67.248 55.346c8.727 14.461 13.75 31.407 13.75 49.529 0 53.020-42.98 96-96 96s-96-42.98-96-96 42.98-96 96-96c18.122 0 35.069 5.023 49.529 13.75l55.346-67.248c11.481-13.339 31.059-14.070 43.503-1.626l2.746 2.746c12.444 12.444 11.713 32.022-1.626 43.503zM288 98c-34.242 0-62 27.758-62 62s27.758 62 62 62 62-27.758 62-62-27.758-62-62-62z" />
61
-<glyph unicode="&#xe035;" d="M352 288v80c0 8.8-7.2 16-16 16h-80v32c0 17.6-14.4 32-32 32h-64c-17.602 0-32-14.4-32-32v-32h-80c-8.801 0-16-7.2-16-16v-256c0-8.8 7.199-16 16-16h112v-96h288v288h-96zM160 415.943c0.017 0.019 0.036 0.039 0.057 0.057h63.884c0.021-0.018 0.041-0.038 0.059-0.057v-31.943h-64v31.943zM96 320v32h192v-32h-192zM416 32h-224v224h224v-224zM224 224v-64h16l16 32h32v-96h-24v-32h80v32h-24v96h32l16-32h16v64z" />
62
-</font></defs></svg>

BIN
tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/fonts/tinymce-small.ttf Целия файл


BIN
tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/fonts/tinymce-small.woff Целия файл


BIN
tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/fonts/tinymce.eot Целия файл


Файловите разлики са ограничени, защото са твърде много
+ 0 - 1191
tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/fonts/tinymce.json


+ 0 - 63
tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/fonts/tinymce.svg Целия файл

@@ -1,63 +0,0 @@
1
-<?xml version="1.0" standalone="no"?>
2
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
-<svg xmlns="http://www.w3.org/2000/svg">
4
-<metadata>Generated by IcoMoon</metadata>
5
-<defs>
6
-<font id="tinymce" horiz-adv-x="512">
7
-<font-face units-per-em="512" ascent="480" descent="-32" />
8
-<missing-glyph horiz-adv-x="512" />
9
-<glyph unicode="&#x20;" d="" horiz-adv-x="256" />
10
-<glyph unicode="&#xe000;" d="M448 480h-448v-512h512v448l-64 64zM256 416h64v-128h-64v128zM448 32h-384v384h32v-160h288v160h37.489l26.511-26.509v-357.491z" />
11
-<glyph unicode="&#xe001;" d="M451.716 380.285l-71.432 71.431c-15.556 15.556-46.284 28.284-68.284 28.284h-240c-22 0-40-18-40-40v-432c0-22 18-40 40-40h368c22 0 40 18 40 40v304c0 22-12.728 52.729-28.284 68.285zM429.089 357.657c1.565-1.565 3.125-3.487 4.64-5.657h-81.729v81.728c2.17-1.515 4.092-3.075 5.657-4.64l71.432-71.431zM448 8c0-4.336-3.664-8-8-8h-368c-4.336 0-8 3.664-8 8v432c0 4.336 3.664 8 8 8h240c2.416 0 5.127-0.305 8-0.852v-127.148h127.148c0.547-2.873 0.852-5.583 0.852-8v-304z" />
12
-<glyph unicode="&#xe002;" d="M512 183.771v80.458l-79.572 7.957c-4.093 15.021-10.044 29.274-17.605 42.49l52.298 63.919-56.526 56.525-63.918-52.298c-13.217 7.562-27.471 13.513-42.491 17.604l-7.957 79.574h-80.458l-7.957-79.573c-15.021-4.093-29.274-10.043-42.49-17.604l-63.919 52.297-56.525-56.525 52.298-63.918c-7.562-13.216-13.513-27.47-17.605-42.49l-79.573-7.958v-80.458l79.573-7.957c4.093-15.021 10.043-29.274 17.605-42.491l-52.298-63.918 56.524-56.524 63.919 52.298c13.216-7.562 27.47-13.514 42.49-17.605l7.958-79.574h80.458l7.957 79.572c15.021 4.093 29.274 10.044 42.491 17.605l63.918-52.298 56.524 56.524-52.298 63.918c7.562 13.217 13.514 27.471 17.605 42.49l79.574 7.96zM352 192l-64-64h-64l-64 64v64l64 64h64l64-64v-64z" />
13
-<glyph unicode="&#xe003;" d="M0 448h512v-64h-512zM0 352h320v-64h-320zM0 160h320v-64h-320zM0 256h512v-64h-512zM0 64h512v-64h-512z" />
14
-<glyph unicode="&#xe004;" d="M0 448h512v-64h-512zM96 352h320v-64h-320zM96 160h320v-64h-320zM0 256h512v-64h-512zM0 64h512v-64h-512z" />
15
-<glyph unicode="&#xe005;" d="M0 448h512v-64h-512zM192 352h320v-64h-320zM192 160h320v-64h-320zM0 256h512v-64h-512zM0 64h512v-64h-512z" />
16
-<glyph unicode="&#xe006;" d="M0 448h512v-64h-512zM0 352h512v-64h-512zM0 256h512v-64h-512zM0 160h512v-64h-512zM0 64h512v-64h-512z" />
17
-<glyph unicode="&#xe007;" d="M445.387 125.423c-22.827 22.778-51.864 34.536-78.973 34.536h-14.556l-31.952 32.004 127.81 128.019c31.952 32.005 31.952 96.014 0 128.019l-191.715-192.028-191.716 192.027c-31.952-32.004-31.952-96.014 0-128.019l127.811-128.017-31.953-32.004h-14.557c-27.11 0-56.146-11.759-78.974-34.538-40.811-40.721-46.325-101.242-12.315-135.175 14.985-14.951 35.144-22.247 56.498-22.247 27.108 0 56.145 11.757 78.973 34.536 26.792 26.732 38.371 62 33.542 92.674l32.692 32.744 32.688-32.744c-4.828-30.674 6.753-65.941 33.542-92.674 22.831-22.779 51.866-34.536 78.974-34.536 21.354 0 41.512 7.296 56.497 22.248 34.010 33.933 28.494 94.454-12.316 135.175zM176.512 57.231c-3.849-8.941-9.505-17.173-16.813-24.463-7.318-7.302-15.586-12.959-24.574-16.812-8.066-3.458-16.48-5.284-24.331-5.284-7.573 0-18.306 1.701-26.431 9.806-8.068 8.052-9.76 18.659-9.76 26.144 0 7.771 1.821 16.105 5.263 24.106 3.85 8.942 9.507 17.173 16.813 24.463 7.317 7.303 15.586 12.957 24.575 16.812 8.067 3.457 16.48 5.284 24.332 5.284 7.573 0 18.306-1.7 26.429-9.807 8.067-8.049 9.761-18.658 9.761-26.142 0.001-7.771-1.819-16.108-5.264-24.107zM256.002 146.702c-24.957 0-45.188 20.266-45.188 45.263 0 24.996 20.231 45.26 45.188 45.26s45.186-20.264 45.186-45.26c0-24.999-20.23-45.263-45.186-45.263zM427.636 20.479c-8.124-8.104-18.856-9.806-26.43-9.806-7.852 0-16.265 1.826-24.333 5.284-8.986 3.853-17.254 9.51-24.571 16.812-7.307 7.29-12.963 15.521-16.813 24.463-3.443 7.999-5.263 16.336-5.263 24.106 0 7.483 1.692 18.094 9.76 26.143 8.123 8.104 18.856 9.807 26.43 9.807 7.85 0 16.265-1.827 24.33-5.284 8.989-3.854 17.258-9.509 24.575-16.812 7.305-7.29 12.962-15.521 16.813-24.463 3.442-7.999 5.263-16.335 5.263-24.106-0.001-7.485-1.695-18.093-9.761-26.144z" />
18
-<glyph unicode="&#xe008;" d="M416 320v80c0 8.8-7.2 16-16 16h-112v32c0 17.6-14.4 32-32 32h-64c-17.602 0-32-14.4-32-32v-32h-112c-8.801 0-16-7.2-16-16v-320c0-8.8 7.199-16 16-16h144v-96h224l96 96v256h-96zM192 447.943c0.017 0.019 0.036 0.039 0.057 0.057h63.884c0.021-0.018 0.041-0.038 0.059-0.057v-31.943h-64v31.943zM96 352v32h256v-32h-256zM416 13.255v50.745h50.745l-50.745-50.745zM480 96h-96v-96h-160v288h256v-192z" />
19
-<glyph unicode="&#xe009;" d="M32 480h192v-32h-192zM288 480h192v-32h-192zM476 320h-28v128h-128v-128h-128v128h-128v-128h-28c-19.8 0-36-16.2-36-36v-280c0-19.8 16.2-36 36-36h152c19.8 0 36 16.2 36 36v188h64v-188c0-19.8 16.2-36 36-36h152c19.8 0 36 16.2 36 36v280c0 19.8-16.2 36-36 36zM174 0h-124c-9.9 0-18 7.2-18 16s8.1 16 18 16h124c9.9 0 18-7.2 18-16s-8.1-16-18-16zM272 224h-32c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16zM462 0h-124c-9.9 0-18 7.2-18 16s8.1 16 18 16h124c9.9 0 18-7.2 18-16s-8.1-16-18-16z" />
20
-<glyph unicode="&#xe00a;" d="M192 448h320v-64h-320v64zM192 256h320v-64h-320v64zM192 64h320v-64h-320v64zM0 416c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64zM0 224c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64zM0 32c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64z" />
21
-<glyph unicode="&#xe00b;" d="M192 64h320v-64h-320zM192 256h320v-64h-320zM192 448h320v-64h-320zM96 480v-128h-32v96h-32v32zM64 217v-25h64v-32h-96v73l64 30v25h-64v32h96v-73zM128 128v-160h-96v32h64v32h-64v32h64v32h-64v32z" />
22
-<glyph unicode="&#xe00c;" d="M0 448h512v-64h-512zM192 352h320v-64h-320zM192 256h320v-64h-320zM192 160h320v-64h-320zM0 64h512v-64h-512zM0 128v192l128-96z" />
23
-<glyph unicode="&#xe00d;" d="M0 448h512v-64h-512zM192 352h320v-64h-320zM192 256h320v-64h-320zM192 160h320v-64h-320zM0 64h512v-64h-512zM128 320v-192l-128 96z" />
24
-<glyph unicode="&#xe00e;" d="M112.5 256c61.856 0 112-50.145 112-112 0-61.856-50.144-112-112-112-61.856 0-112 50.144-112 112l-0.5 16c0 123.712 100.288 224 224 224v-64c-42.737 0-82.917-16.643-113.137-46.863-5.817-5.818-11.126-12.008-15.915-18.51 5.719 0.9 11.58 1.373 17.552 1.373zM400.5 256c61.855 0 112-50.145 112-112 0-61.856-50.145-112-112-112-61.855 0-112 50.144-112 112l-0.5 16c0 123.712 100.288 224 224 224v-64c-42.737 0-82.917-16.643-113.137-46.863-5.818-5.818-11.127-12.008-15.916-18.51 5.72 0.9 11.58 1.373 17.553 1.373z" />
25
-<glyph unicode="&#xe00f;" d="M380.931-32c56.863 103.016 66.444 260.153-156.931 254.912v-126.912l-192 192 192 192v-124.186c267.481 6.971 297.285-236.107 156.931-387.814z" />
26
-<glyph unicode="&#xe010;" d="M288 355.814v124.186l192-192-192-192v126.912c-223.375 5.241-213.794-151.896-156.93-254.912-140.356 151.707-110.55 394.785 156.93 387.814z" />
27
-<glyph unicode="&#xe011;" d="M160 128c8.8-8.8 23.637-8.363 32.971 0.971l158.059 158.058c9.334 9.334 9.77 24.171 0.97 32.971s-23.637 8.363-32.971-0.971l-158.058-158.058c-9.334-9.334-9.771-24.171-0.971-32.971zM238.444 142.444c2.28-4.525 3.495-9.58 3.495-14.848 0-8.808-3.372-17.030-9.496-23.154l-81.691-81.691c-6.124-6.124-14.347-9.496-23.154-9.496s-17.030 3.372-23.154 9.496l-49.691 49.691c-6.124 6.124-9.496 14.347-9.496 23.154s3.372 17.030 9.496 23.154l81.691 81.691c6.124 6.124 14.347 9.497 23.154 9.497 5.268 0 10.322-1.215 14.848-3.495l32.669 32.669c-13.935 10.705-30.72 16.080-47.517 16.080-19.993 0-39.986-7.583-55.154-22.751l-81.691-81.691c-30.335-30.335-30.335-79.974 0-110.309l49.691-49.691c15.167-15.166 35.16-22.75 55.153-22.75 19.994 0 39.987 7.584 55.154 22.751l81.691 81.691c27.91 27.91 30.119 72.149 6.672 102.672l-32.67-32.67zM489.249 407.558l-49.691 49.691c-15.167 15.168-35.16 22.751-55.154 22.751-19.993 0-39.986-7.583-55.154-22.751l-81.691-81.691c-27.91-27.91-30.119-72.149-6.671-102.671l32.669 32.67c-2.279 4.525-3.494 9.58-3.494 14.847 0 8.808 3.372 17.030 9.496 23.154l81.691 81.691c6.124 6.124 14.347 9.497 23.154 9.497s17.030-3.373 23.154-9.497l49.691-49.691c6.124-6.124 9.496-14.347 9.496-23.154s-3.372-17.030-9.496-23.154l-81.691-81.691c-6.124-6.124-14.347-9.496-23.154-9.496-5.268 0-10.322 1.215-14.848 3.495l-32.669-32.669c13.936-10.705 30.72-16.080 47.517-16.080 19.994 0 39.987 7.584 55.154 22.751l81.691 81.691c30.335 30.333 30.335 79.972 0 110.307z" />
28
-<glyph unicode="&#xe012;" d="M238.444 142.443c2.28-4.524 3.495-9.579 3.495-14.848 0-8.808-3.372-17.029-9.496-23.154l-81.69-81.69c-6.124-6.124-14.348-9.496-23.154-9.496s-17.030 3.372-23.154 9.496l-49.69 49.69c-6.124 6.125-9.496 14.348-9.496 23.154s3.372 17.030 9.496 23.154l81.69 81.691c6.124 6.123 14.348 9.496 23.154 9.496 5.269 0 10.322-1.215 14.848-3.494l32.669 32.668c-13.935 10.705-30.72 16.080-47.517 16.080-19.993 0-39.986-7.583-55.154-22.751l-81.69-81.691c-30.335-30.335-30.335-79.975 0-110.309l49.69-49.691c15.167-15.166 35.16-22.75 55.153-22.75 19.994 0 39.987 7.584 55.154 22.751l81.69 81.69c27.91 27.91 30.119 72.149 6.672 102.673l-32.67-32.669zM489.248 407.558l-49.69 49.691c-15.167 15.168-35.16 22.751-55.154 22.751-19.993 0-39.985-7.583-55.153-22.751l-81.691-81.691c-27.91-27.91-30.119-72.149-6.671-102.671l32.669 32.67c-2.279 4.525-3.494 9.58-3.494 14.847 0 8.808 3.372 17.030 9.496 23.154l81.691 81.691c6.123 6.124 14.347 9.497 23.153 9.497 8.808 0 17.030-3.373 23.154-9.497l49.69-49.691c6.124-6.124 9.496-14.347 9.496-23.154s-3.372-17.030-9.496-23.154l-81.69-81.691c-6.124-6.124-14.347-9.496-23.154-9.496-5.268 0-10.322 1.215-14.848 3.495l-32.669-32.669c13.936-10.705 30.72-16.080 47.517-16.080 19.994 0 39.987 7.584 55.154 22.752l81.69 81.69c30.336 30.333 30.336 79.972 0 110.307zM116.684 340.688l-95.997 95.997 22.628 22.628 95.997-95.997zM192 480h32v-96h-32zM0 288h96v-32h-96zM395.316 107.312l95.998-95.998-22.628-22.628-95.998 95.998zM288 64h32v-96h-32zM416 192h96v-32h-96z" />
29
-<glyph unicode="&#xe013;" d="M96 480v-512l160 160 160-160v512h-320zM384 45.255l-128 128-128-128v402.745h256v-402.745z" />
30
-<glyph unicode="&#xe014;" d="M0 416v-416h512v416h-512zM480 32h-448v352h448v-352zM352 304c0 26.51 21.49 48 48 48s48-21.49 48-48c0-26.51-21.49-48-48-48-26.51 0-48 21.49-48 48zM448 64h-384l96 256 128-160 64 48z" />
31
-<glyph unicode="&#xe015;" d="M0 416v-384h512v384h-512zM96 64h-64v64h64v-64zM96 192h-64v64h64v-64zM96 320h-64v64h64v-64zM384 64h-256v320h256v-320zM480 64h-64v64h64v-64zM480 192h-64v64h64v-64zM480 320h-64v64h64v-64zM192 320v-192l128 96z" />
32
-<glyph unicode="&#xe016;" d="M224 128h64v-64h-64zM352 352c17.673 0 32-14.327 32-32v-96l-96-64h-64v32l96 64v32h-160v64h192zM256 432c-55.559 0-107.792-21.636-147.078-60.922s-60.922-91.519-60.922-147.078c0-55.559 21.636-107.792 60.922-147.078 39.286-39.286 91.519-60.922 147.078-60.922 55.559 0 107.792 21.636 147.078 60.922 39.286 39.286 60.922 91.519 60.922 147.078 0 55.559-21.636 107.792-60.922 147.078-39.286 39.286-91.519 60.922-147.078 60.922zM256 480v0c141.385 0 256-114.615 256-256s-114.615-256-256-256c-141.385 0-256 114.615-256 256 0 141.385 114.615 256 256 256z" />
33
-<glyph unicode="&#xe017;" d="M160 352l-128-128 128-128h64l-128 128 128 128zM352 352h-64l128-128-128-128h64l128 128z" />
34
-<glyph unicode="&#xe018;" d="M256 384c-106.038 0-192-85.961-192-192s85.961-192 192-192c106.037 0 192 85.961 192 192s-85.963 192-192 192zM357.822 90.177c-27.196-27.198-63.358-42.177-101.822-42.177s-74.625 14.979-101.823 42.177c-27.198 27.197-42.177 63.359-42.177 101.823s14.979 74.625 42.177 101.823c27.198 27.198 63.359 42.177 101.823 42.177s74.626-14.979 101.821-42.177c27.201-27.198 42.179-63.359 42.179-101.823s-14.979-74.626-42.178-101.823zM162.965 378.069l-21.47 42.939c-49.437-24.768-89.735-65.066-114.503-114.504l42.938-21.47c20.124 40.168 52.866 72.911 93.035 93.035zM442.067 285.035l42.939 21.469c-24.766 49.438-65.063 89.736-114.502 114.504l-21.472-42.939c40.169-20.124 72.912-52.866 93.035-93.034zM256 288h-32v-96c0-5.055 2.35-9.555 6.011-12.486l-0.006-0.008 80-64 19.988 24.988-73.993 59.195v88.311z" />
35
-<glyph unicode="&#xe019;" d="M256 320c-104.684 0-197.622-50.278-256-128 58.378-77.723 151.316-128 256-128 104.684 0 197.622 50.277 256 128-58.378 77.722-151.316 128-256 128zM224 256c17.673 0 32-14.327 32-32s-14.327-32-32-32-32 14.327-32 32 14.327 32 32 32zM386.808 127.352c-19.824-10.129-40.826-17.931-62.423-23.188-22.244-5.418-45.251-8.164-68.385-8.164-23.133 0-46.141 2.746-68.384 8.162-21.597 5.259-42.599 13.061-62.423 23.188-31.51 16.101-60.111 38.205-83.82 64.649 23.709 26.444 52.31 48.55 83.82 64.649 16.168 8.261 33.121 14.973 50.541 20.020-9.944-15.121-15.734-33.217-15.734-52.668 0-53.020 42.981-96 96-96 53.019 0 96 42.98 96 96 0 19.451-5.791 37.547-15.733 52.67 17.419-5.048 34.372-11.76 50.541-20.021 31.511-16.099 60.109-38.204 83.819-64.649-23.71-26.443-52.309-48.55-83.819-64.648zM430.459 358.139c-54.36 27.777-113.056 41.861-174.459 41.861-61.403 0-120.099-14.084-174.459-41.861-29.386-15.016-56.866-33.952-81.541-56.038v-54.603c27.669 29.283 60.347 53.877 96.097 72.145 49.81 25.452 103.609 38.357 159.903 38.357s110.093-12.905 159.902-38.358c35.751-18.268 68.429-42.862 96.098-72.145v54.603c-24.675 22.087-52.154 41.023-81.541 56.039z" />
36
-<glyph unicode="&#xe01a;" d="M161.009 64l28.8 96h132.382l28.8-96h56.816l-95.998 320h-111.618l-96-320h56.818zM237.809 320h36.382l28.8-96h-93.982l28.8 96z" />
37
-<glyph unicode="&#xe01b;" d="M0 448v-448h512v448h-512zM192 160v96h128v-96h-128zM320 128v-96h-128v96h128zM320 384v-96h-128v96h128zM160 384v-96h-128v96h128zM32 256h128v-96h-128v96zM352 256h128v-96h-128v96zM352 288v96h128v-96h-128zM32 128h128v-96h-128v96zM352 32v96h128v-96h-128z" />
38
-<glyph unicode="&#xe01c;" d="M0 256h512v-64h-512z" />
39
-<glyph unicode="&#xe01d;" d="M0 32h288v-64h-288zM96 480h352v-64h-352zM138.694 64l102.344 392.082 61.925-16.164-98.125-375.918zM464.887-32l-64.887 64.887-64.887-64.887-31.113 31.113 64.887 64.887-64.887 64.887 31.113 31.113 64.887-64.887 64.887 64.887 31.113-31.113-64.887-64.887 64.887-64.887z" />
40
-<glyph unicode="&#xe01e;" d="M384 25v-25h64v-32h-96v73l64 30v25h-64v32h96v-73zM338 352h-68l-94-94-94 94h-68l128-128-128-128h68l94 94 94-94h68l-128 128z" />
41
-<glyph unicode="&#xe01f;" d="M384 377v-25h64v-32h-96v73l64 30v25h-64v32h96v-73zM338 352h-68l-94-94-94 94h-68l128-128-128-128h68l94 94 94-94h68l-128 128z" />
42
-<glyph unicode="&#xe020;" d="M352 32h128l32 64v-128h-192v107.107c65.556 28.242 112 98.581 112 180.893 0 107.216-78.799 191.133-176 191.133-97.203 0-176-83.916-176-191.133 0-82.312 46.443-152.651 112-180.893v-107.107h-192v128l32-64h128v16.295c-93.815 33.23-160 113.701-160 207.705 0 123.712 114.615 224 256 224 141.385 0 256-100.288 256-224 0-94.004-66.185-174.475-160-207.705v-16.295z" />
43
-<glyph unicode="&#xe021;" d="M256 480c-141.385 0-256-114.614-256-256 0-141.385 114.614-256 256-256 141.385 0 256 114.615 256 256 0 141.386-114.615 256-256 256zM256 8c-119.293 0-216 96.706-216 216 0 119.293 96.707 216 216 216 119.295 0 216-96.707 216-216 0-119.294-96.705-216-216-216zM192 320c0-17.673-14.327-32-32-32s-32 14.327-32 32 14.327 32 32 32 32-14.327 32-32zM384 320c0-17.673-14.326-32-32-32s-32 14.327-32 32 14.326 32 32 32 32-14.327 32-32zM256 154c70.537 0 131.344 28.766 159.231 61.596-10.436-85.61-78.144-151.596-159.231-151.596-81.059 0-148.749 66.013-159.222 151.584 27.893-32.823 88.693-61.584 159.222-61.584z" />
44
-<glyph unicode="&#xe022;" d="M128 448h256v-64h-256zM480 352h-448c-17.6 0-32-14.4-32-32v-160c0-17.6 14.398-32 32-32h96v-128h256v128h96c17.6 0 32 14.4 32 32v160c0 17.6-14.4 32-32 32zM352 32h-192v160h192v-160zM487.2 304c0-12.813-10.387-23.2-23.199-23.2-12.813 0-23.201 10.387-23.201 23.2s10.388 23.2 23.201 23.2c12.813 0 23.199-10.387 23.199-23.2z" />
45
-<glyph unicode="&#xe023;" d="M512 480v-192l-69.13 69.13-106-106-53.74 53.74 106 106-69.13 69.13zM122.87 410.87l106-106-53.74-53.74-106 106-69.13-69.13v192h192zM442.87 90.87l69.13 69.13v-192h-192l69.13 69.13-106 106 53.74 53.74zM228.87 143.13l-106-106 69.13-69.13h-192v192l69.13-69.13 106 106z" />
46
-<glyph unicode="&#xe024;" d="M64 352h64v-96h32v192c0 17.6-14.4 32-32 32h-64c-17.6 0-32-14.4-32-32v-192h32v96zM64 448h64v-64h-64v64zM480 448v32h-96c-17.601 0-32-14.4-32-32v-160c0-17.6 14.399-32 32-32h96v32h-96v160h96zM320 400v48c0 17.6-14.4 32-32 32h-96v-224h96c17.6 0 32 14.4 32 32v48c0 17.6-4.4 32-22 32 17.6 0 22 14.4 22 32zM288 288h-64v64h64v-64zM288 384h-64v64h64v-64zM416 192l-208-224-112 144 41 35 71-74 176 151z" />
47
-<glyph unicode="&#xe025;" d="M224 192h-96v64h96v96h64v-96h96v-64h-96v-96h-64zM512 160v-192h-512v192h64v-128h384v128z" />
48
-<glyph unicode="&#xe026;" d="M192 384h64v-32h-64zM288 384h64v-32h-64zM448 384v-128h-96v32h64v64h-32v32zM160 288h64v-32h-64zM256 288h64v-32h-64zM96 352v-64h32v-32h-64v128h96v-32zM192 192h64v-32h-64zM288 192h64v-32h-64zM448 192v-128h-96v32h64v64h-32v32zM160 96h64v-32h-64zM256 96h64v-32h-64zM96 160v-64h32v-32h-64v128h96v-32zM480 448h-448v-448h448v448zM512 480v0-512h-512v512h512z" />
49
-<glyph unicode="&#xe027;" d="M0 224h64v-32h-64zM96 224h96v-32h-96zM224 224h64v-32h-64zM320 224h96v-32h-96zM448 224h64v-32h-64zM440 480l8-224h-384l8 224h16l8-192h320l8 192zM72-32l-8 192h384l-8-192h-16l-8 160h-320l-8-160z" />
50
-<glyph unicode="&#xe028;" d="M288 448c123.712 0 224-100.288 224-224s-100.288-224-224-224v48c47.012 0 91.209 18.307 124.451 51.549 33.242 33.242 51.549 77.439 51.549 124.451 0 47.011-18.307 91.209-51.549 124.451-33.242 33.242-77.439 51.549-124.451 51.549-47.011 0-91.209-18.307-124.451-51.549-25.57-25.569-42.291-57.623-48.653-92.451h93.104l-112-128-112 128h82.285c15.53 108.551 108.869 192 221.715 192zM384 256v-64h-128v160h64v-96z" />
51
-<glyph unicode="&#xe02a;" d="M353.94 237.674c18.749 22.271 30.060 51.004 30.060 82.326 0 70.58-57.421 128-128 128h-160v-448h192c70.579 0 128 57.421 128 128 0 46.478-24.899 87.248-62.060 109.674zM192 384h50.75c27.984 0 50.75-28.71 50.75-64s-22.766-64-50.75-64h-50.75v128zM271.5 64h-79.5v128h79.5c29.225 0 53-28.71 53-64s-23.775-64-53-64z" />
52
-<glyph unicode="&#xe02b;" d="M448 448v-32h-64l-160-384h64v-32h-224v32h64l160 384h-64v32z" />
53
-<glyph unicode="&#xe02c;" d="M352 448h64v-208c0-79.529-71.634-144-160-144-88.365 0-160 64.471-160 144v208h64v-208c0-20.083 9.119-39.352 25.677-54.253 18.448-16.602 43.423-25.747 70.323-25.747 26.9 0 51.875 9.145 70.323 25.747 16.558 14.901 25.677 34.17 25.677 54.253v208zM96 64h320v-64h-320z" />
54
-<glyph unicode="&#xe02d;" d="M365.71 221.482c31.96-23.969 50.29-58.043 50.29-93.482s-18.33-69.513-50.29-93.482c-29.679-22.259-68.642-34.518-109.71-34.518-41.069 0-80.031 12.259-109.71 34.518-31.96 23.969-50.29 58.043-50.29 93.482h64c0-34.691 43.963-64 96-64s96 29.309 96 64c0 34.691-43.963 64-96 64-41.069 0-80.031 12.259-109.71 34.518-31.96 23.97-50.29 58.043-50.29 93.482 0 35.439 18.33 69.512 50.29 93.482 29.679 22.259 68.641 34.518 109.71 34.518 41.068 0 80.031-12.259 109.71-34.518 31.96-23.97 50.29-58.043 50.29-93.482h-64c0 34.691-43.963 64-96 64-52.037 0-96-29.309-96-64 0-34.691 43.963-64 96-64 41.068 0 80.031-12.259 109.71-34.518zM0 224h512v-32h-512z" />
55
-<glyph unicode="&#xe02e;" d="M192 448h256v-64h-64v-384h-64v384h-64v-384h-64v224c-61.856 0-112 50.144-112 112s50.144 112 112 112z" />
56
-<glyph unicode="&#xe02f;" d="M224 448h256v-64h-64v-384h-64v384h-64v-384h-64v224c-61.856 0-112 50.144-112 112s50.144 112 112 112zM32 256l128-112-128-112z" />
57
-<glyph unicode="&#xe030;" d="M128 448h256v-64h-64v-384h-64v384h-64v-384h-64v224c-61.856 0-112 50.144-112 112s50.144 112 112 112zM480 32l-128 112 128 112z" />
58
-<glyph unicode="&#xe031;" d="M416 352h-96v32l-96 96h-224v-384h192v-128h320v288l-96 96zM416 306.745l50.745-50.745h-50.745v50.745zM224 434.745l50.745-50.745h-50.745v50.745zM32 448h160v-96h96v-224h-256v320zM480 0h-256v96h96v224h64v-96h96v-224z" />
59
-<glyph unicode="&#xe032;" d="M384 352h32v-32h-32zM320 288h32v-32h-32zM320 224h32v-32h-32zM320 160h32v-32h-32zM256 224h32v-32h-32zM256 160h32v-32h-32zM192 160h32v-32h-32zM384 288h32v-32h-32zM384 224h32v-32h-32zM384 160h32v-32h-32zM384 96h32v-32h-32zM320 96h32v-32h-32zM256 96h32v-32h-32zM192 96h32v-32h-32zM128 96h32v-32h-32z" />
60
-<glyph unicode="&#xe033;" d="M64 208l144-144 240 240-64 64-176-176-80 80z" />
61
-<glyph unicode="&#xe034;" d="M464 416h-208l-16 32h-176l-32-64h448zM452.17 128h37.43l22.4 224h-512l32-320h242.040c-52.441 18.888-90.040 69.133-90.040 128 0 74.991 61.009 136 136 136 74.99 0 136-61.009 136-136 0-10.839-1.311-21.575-3.83-32zM501.498 23.125l-99.248 87.346c8.727 14.46 13.75 31.407 13.75 49.529 0 53.020-42.98 96-96 96s-96-42.98-96-96 42.98-96 96-96c18.122 0 35.069 5.023 49.529 13.75l87.346-99.248c11.481-13.339 31.059-14.070 43.503-1.626l2.746 2.746c12.444 12.444 11.713 32.022-1.626 43.503zM320 98c-34.242 0-62 27.758-62 62s27.758 62 62 62 62-27.758 62-62-27.758-62-62-62z" />
62
-<glyph unicode="&#xe035;" d="M256 224v-64h16l16 32h32v-128h-24v-32h112v32h-24v128h32l16-32h16v64zM416 320v80c0 8.8-7.2 16-16 16h-112v32c0 17.6-14.4 32-32 32h-64c-17.602 0-32-14.4-32-32v-32h-112c-8.801 0-16-7.2-16-16v-320c0-8.8 7.199-16 16-16h144v-96h320v352h-96zM192 447.943c0.017 0.019 0.036 0.039 0.057 0.057h63.884c0.021-0.018 0.041-0.038 0.059-0.057v-31.943h-64v31.943zM96 352v32h256v-32h-256zM480 0h-256v288h256v-288z" />
63
-</font></defs></svg>

BIN
tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/fonts/tinymce.ttf Целия файл


BIN
tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/fonts/tinymce.woff Целия файл


BIN
tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/img/anchor.gif Целия файл


+ 0 - 0
tracim/tracim/public/assets/tinymce/js/tinymce/skins/custom/img/loader.gif Целия файл


Някои файлове не бяха показани, защото твърде много файлове са промени