xmt_froala 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +28 -0
- data/Rakefile +2 -0
- data/app/assets/javascripts/xmt_froala.js +31 -0
- data/app/assets/stylesheets/xmt_froala.css +17 -0
- data/app/controllers/xmt_froala/application_controller.rb +5 -0
- data/app/controllers/xmt_froala/assets_controller.rb +94 -0
- data/app/models/xmt_froala/asset_uploader.rb +107 -0
- data/app/models/xmt_froala/file_uploader.rb +10 -0
- data/app/models/xmt_froala/flash_uploader.rb +10 -0
- data/app/models/xmt_froala/image_uploader.rb +10 -0
- data/app/models/xmt_froala/media_uploader.rb +10 -0
- data/config/routes.rb +6 -0
- data/lib/generators/xmt_froala/install/USAGE +10 -0
- data/lib/generators/xmt_froala/install/install_generator.rb +23 -0
- data/lib/generators/xmt_froala/install/templates/application.js +17 -0
- data/lib/generators/xmt_froala/install/templates/xmt_froala.rb +29 -0
- data/lib/generators/xmt_froala/migration/USAGE +14 -0
- data/lib/generators/xmt_froala/migration/migration_generator.rb +36 -0
- data/lib/generators/xmt_froala/migration/templates/migration/migration.rb +18 -0
- data/lib/generators/xmt_froala/migration/templates/models/active_record/xmt_froala/asset.rb +14 -0
- data/lib/generators/xmt_froala/migration/templates/models/active_record/xmt_froala/file.rb +3 -0
- data/lib/generators/xmt_froala/migration/templates/models/active_record/xmt_froala/flash.rb +3 -0
- data/lib/generators/xmt_froala/migration/templates/models/active_record/xmt_froala/image.rb +3 -0
- data/lib/generators/xmt_froala/migration/templates/models/active_record/xmt_froala/media.rb +3 -0
- data/lib/generators/xmt_froala/migration/templates/models/mongoid/xmt_froala/asset.rb +27 -0
- data/lib/generators/xmt_froala/migration/templates/models/mongoid/xmt_froala/file.rb +3 -0
- data/lib/generators/xmt_froala/migration/templates/models/mongoid/xmt_froala/flash.rb +3 -0
- data/lib/generators/xmt_froala/migration/templates/models/mongoid/xmt_froala/image.rb +3 -0
- data/lib/generators/xmt_froala/migration/templates/models/mongoid/xmt_froala/media.rb +3 -0
- data/lib/tasks/xmt_froala_tasks.rake +9 -0
- data/lib/xmt_froala.rb +65 -0
- data/lib/xmt_froala/active_record.rb +14 -0
- data/lib/xmt_froala/engine.rb +32 -0
- data/lib/xmt_froala/formtastic.rb +12 -0
- data/lib/xmt_froala/helper.rb +105 -0
- data/lib/xmt_froala/simple_form.rb +11 -0
- data/lib/xmt_froala/version.rb +3 -0
- data/vendor/assets/javascripts/xmt_froala/froala_editor.js +0 -0
- data/vendor/assets/javascripts/xmt_froala/languages/ar.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/bs.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/cs.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/da.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/de.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/en_ca.js +262 -0
- data/vendor/assets/javascripts/xmt_froala/languages/en_gb.js +262 -0
- data/vendor/assets/javascripts/xmt_froala/languages/es.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/et.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/fa.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/fi.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/fr.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/he.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/hr.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/hu.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/id.js +319 -0
- data/vendor/assets/javascripts/xmt_froala/languages/it.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/ja.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/ko.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/me.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/nb.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/nl.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/pl.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/pt_br.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/pt_pt.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/ro.js +319 -0
- data/vendor/assets/javascripts/xmt_froala/languages/ru.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/sk.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/sr.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/sv.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/th.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/tr.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/uk.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/languages/vi.js +258 -0
- data/vendor/assets/javascripts/xmt_froala/languages/zh_cn.js +320 -0
- data/vendor/assets/javascripts/xmt_froala/languages/zh_tw.js +318 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/align.js +139 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/align.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/char_counter.js +154 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/char_counter.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/code_beautifier.js +3270 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/code_beautifier.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/code_view.js +393 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/code_view.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/colors.js +492 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/colors.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/draggable.js +459 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/draggable.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/emoticons.js +509 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/emoticons.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/entities.js +121 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/entities.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/file.js +736 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/file.min.js +239 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/font_family.js +182 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/font_family.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/font_size.js +118 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/font_size.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/forms.js +430 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/forms.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/fullscreen.js +274 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/fullscreen.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/help.js +216 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/help.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/image.js +3323 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/image.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/image_manager.js +1056 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/image_manager.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/inline_style.js +94 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/inline_style.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/line_breaker.js +537 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/line_breaker.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/link.js +1157 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/link.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/lists.js +462 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/lists.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/paragraph_format.js +290 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/paragraph_format.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/paragraph_style.js +144 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/paragraph_style.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/plain_paste.js +96 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/print.js +137 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/print.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/quick_format.js +89 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/quick_insert.js +478 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/quick_insert.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/quote.js +141 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/quote.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/save.js +189 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/save.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/special_characters.js +781 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/special_characters.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/table.js +4194 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/table.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/url.js +194 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/url.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/video.js +2342 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/video.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/word_paste.js +1403 -0
- data/vendor/assets/javascripts/xmt_froala/plugins/word_paste.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/third_party/embedly.js +543 -0
- data/vendor/assets/javascripts/xmt_froala/third_party/embedly.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/third_party/image_aviary.js +163 -0
- data/vendor/assets/javascripts/xmt_froala/third_party/image_aviary.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/third_party/spell_checker.js +222 -0
- data/vendor/assets/javascripts/xmt_froala/third_party/spell_checker.min.js +7 -0
- data/vendor/assets/javascripts/xmt_froala/xmt_froala.js +15172 -0
- data/vendor/assets/stylesheets/xmt_froala/css/font-awesome.css +2546 -0
- data/vendor/assets/stylesheets/xmt_froala/css/froala_editor.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/froala_editor.pkgd.css +2902 -0
- data/vendor/assets/stylesheets/xmt_froala/css/froala_editor.pkgd.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/froala_style.css +413 -0
- data/vendor/assets/stylesheets/xmt_froala/css/froala_style.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/char_counter.css +57 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/char_counter.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/code_view.css +112 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/code_view.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/colors.css +155 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/colors.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/draggable.css +43 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/draggable.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/emoticons.css +42 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/emoticons.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/file.css +146 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/file.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/fullscreen.css +28 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/fullscreen.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/help.css +52 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/help.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/image.css +244 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/image.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/image_manager.css +266 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/image_manager.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/line_breaker.css +37 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/line_breaker.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/quick_insert.css +70 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/quick_insert.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/special_characters.css +51 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/special_characters.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/table.css +181 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/table.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/video.css +231 -0
- data/vendor/assets/stylesheets/xmt_froala/css/plugins/video.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/themes/dark.css +1281 -0
- data/vendor/assets/stylesheets/xmt_froala/css/themes/dark.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/themes/gray.css +1281 -0
- data/vendor/assets/stylesheets/xmt_froala/css/themes/gray.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/themes/red.css +1281 -0
- data/vendor/assets/stylesheets/xmt_froala/css/themes/red.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/themes/royal.css +1281 -0
- data/vendor/assets/stylesheets/xmt_froala/css/themes/royal.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/third_party/embedly.css +64 -0
- data/vendor/assets/stylesheets/xmt_froala/css/third_party/embedly.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/third_party/spell_checker.css +72 -0
- data/vendor/assets/stylesheets/xmt_froala/css/third_party/spell_checker.min.css +7 -0
- data/vendor/assets/stylesheets/xmt_froala/css/xmt_froala.css +1423 -0
- data/vendor/assets/stylesheets/xmt_froala/fonts/FontAwesome.otf +0 -0
- data/vendor/assets/stylesheets/xmt_froala/fonts/fontawesome-webfont.eot +0 -0
- data/vendor/assets/stylesheets/xmt_froala/fonts/fontawesome-webfont.svg +2671 -0
- data/vendor/assets/stylesheets/xmt_froala/fonts/fontawesome-webfont.ttf +0 -0
- data/vendor/assets/stylesheets/xmt_froala/fonts/fontawesome-webfont.woff +0 -0
- data/vendor/assets/stylesheets/xmt_froala/fonts/fontawesome-webfont.woff2 +0 -0
- metadata +273 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
Description:
|
|
2
|
+
Copy model, migration and uploader to your application.
|
|
3
|
+
|
|
4
|
+
Example:
|
|
5
|
+
rails generate rails_kindeditor:migration
|
|
6
|
+
|
|
7
|
+
This will create:
|
|
8
|
+
app/models/kindeditor/asset.rb
|
|
9
|
+
app/models/kindeditor/file.rb
|
|
10
|
+
app/models/kindeditor/flash.rb
|
|
11
|
+
app/models/kindeditor/image.rb
|
|
12
|
+
app/models/kindeditor/media.rb
|
|
13
|
+
db/migrate/xxxxxxxxx_create_kindeditor_assets.rb
|
|
14
|
+
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module XmtFroala
|
|
2
|
+
class MigrationGenerator < Rails::Generators::Base
|
|
3
|
+
include Rails::Generators::Migration
|
|
4
|
+
source_root File.expand_path('../templates', __FILE__)
|
|
5
|
+
desc "Copy model and migration to your application."
|
|
6
|
+
class_option :orm, :type => :string, :aliases => "-o", :default => "active_record", :desc => "ORM options: active_record or mongoid"
|
|
7
|
+
|
|
8
|
+
def copy_files
|
|
9
|
+
orm = options[:orm].to_s
|
|
10
|
+
orm = "active_record" unless %w{active_record mongoid}.include?(orm)
|
|
11
|
+
%w(asset file flash image media).each do |file|
|
|
12
|
+
copy_model(orm, file)
|
|
13
|
+
end
|
|
14
|
+
if Rails.version < '4.0.0' && Rails.version >= '3.0.0' # insert code for rails3
|
|
15
|
+
insert_into_file "app/models/xmt_froala/asset.rb", " attr_accessible :asset\n", :after => "before_save :update_asset_attributes\n"
|
|
16
|
+
end
|
|
17
|
+
if orm == "active_record"
|
|
18
|
+
migration_template "migration/migration.rb", "db/migrate/create_xmt_froala_assets.rb"
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def self.next_migration_number(dirname)
|
|
23
|
+
if ActiveRecord::Base.timestamped_migrations
|
|
24
|
+
Time.now.utc.strftime("%Y%m%d%H%M%S")
|
|
25
|
+
else
|
|
26
|
+
"%.3d" % (current_migration_number(dirname) + 1)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
def copy_model(orm, name)
|
|
32
|
+
template "models/#{orm}/xmt_froala/#{name}.rb", "app/models/xmt_froala/#{name}.rb"
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
class CreateXmFroalaAssets < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
create_table :xmt_froala_assets do |t|
|
|
4
|
+
t.string :asset
|
|
5
|
+
t.integer :file_size
|
|
6
|
+
t.string :file_type
|
|
7
|
+
t.integer :owner_id
|
|
8
|
+
t.string :owner_type
|
|
9
|
+
t.string :asset_type # list by xmt_froala: image, file, media, flash
|
|
10
|
+
t.timestamps
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def self.down
|
|
15
|
+
drop_table :xmt_froala_assets
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
class XmtFroala::Asset < ActiveRecord::Base
|
|
2
|
+
self.table_name = 'kindeditor_assets'
|
|
3
|
+
mount_uploader :asset, XmtFroala::AssetUploader
|
|
4
|
+
validates_presence_of :asset
|
|
5
|
+
before_save :update_asset_attributes
|
|
6
|
+
|
|
7
|
+
private
|
|
8
|
+
def update_asset_attributes
|
|
9
|
+
if asset.present? && asset_changed?
|
|
10
|
+
self.file_size = asset.file.size
|
|
11
|
+
self.file_type = asset.file.content_type
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'carrierwave/mongoid'
|
|
2
|
+
|
|
3
|
+
class XmtFroala::Asset
|
|
4
|
+
include Mongoid::Document
|
|
5
|
+
include Mongoid::Timestamps
|
|
6
|
+
|
|
7
|
+
field :file_size, :type => Integer
|
|
8
|
+
field :file_type, :type => String
|
|
9
|
+
field :owner_id, :type => Integer
|
|
10
|
+
field :asset_type, :type => String
|
|
11
|
+
|
|
12
|
+
mount_uploader :asset, XmtFroala::AssetUploader
|
|
13
|
+
validates_presence_of :asset
|
|
14
|
+
before_save :update_asset_attributes
|
|
15
|
+
|
|
16
|
+
def self.collection_name
|
|
17
|
+
:xmt_froala_assets
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
def update_asset_attributes
|
|
22
|
+
if asset.present? && asset_changed?
|
|
23
|
+
self.file_size = asset.file.size
|
|
24
|
+
self.file_type = asset.file.content_type
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
namespace :xmtfroala do
|
|
2
|
+
desc "copy froalaeditor into public folder"
|
|
3
|
+
task :assets do
|
|
4
|
+
puts "copying froalaeditor into public/assets folder ..."
|
|
5
|
+
dest_path = "#{Rails.root}/public/assets"
|
|
6
|
+
FileUtils.mkdir_p dest_path
|
|
7
|
+
FileUtils.cp_r "#{XmtFroala.root_path}/app/assets/javascripts/xmt_froala/", dest_path
|
|
8
|
+
end
|
|
9
|
+
end
|
data/lib/xmt_froala.rb
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
require 'xmt_froala/engine'
|
|
2
|
+
require 'xmt_froala/helper'
|
|
3
|
+
require 'xmt_froala/active_record'
|
|
4
|
+
require 'carrierwave'
|
|
5
|
+
require 'mini_magick'
|
|
6
|
+
|
|
7
|
+
module XmtFroala
|
|
8
|
+
|
|
9
|
+
mattr_accessor :upload_dir
|
|
10
|
+
@@upload_dir = 'uploads'
|
|
11
|
+
|
|
12
|
+
mattr_accessor :upload_image_ext
|
|
13
|
+
@@upload_image_ext = %w[gif jpg jpeg png bmp]
|
|
14
|
+
|
|
15
|
+
mattr_accessor :upload_flash_ext
|
|
16
|
+
@@upload_flash_ext = %w[swf flv]
|
|
17
|
+
|
|
18
|
+
mattr_accessor :upload_media_ext
|
|
19
|
+
@@upload_media_ext = %w[f4v flv mp3 mp4 ogg webm]
|
|
20
|
+
|
|
21
|
+
mattr_accessor :upload_file_ext
|
|
22
|
+
@@upload_file_ext = %w[doc docx xls xlsx ppt htm html txt zip rar gz bz2]
|
|
23
|
+
|
|
24
|
+
mattr_accessor :image_resize_to_limit
|
|
25
|
+
|
|
26
|
+
mattr_accessor :asset_url_prefix
|
|
27
|
+
|
|
28
|
+
def self.base_path
|
|
29
|
+
self.asset_url_prefix ? "#{self.asset_url_prefix}/xmt_froala/" : '/assets/xmt_froala/'
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def self.root_path
|
|
33
|
+
@root_path ||= Pathname.new(File.dirname(File.expand_path('../', __FILE__)))
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def self.assets
|
|
37
|
+
Dir[root_path.join('vendor/assets/javascripts/xmt_froala/**', '*.js')].inject([]) do |assets, path|
|
|
38
|
+
assets << Pathname.new(path).relative_path_from(root_path.join('vendor/assets/javascripts')).to_s
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
Dir[root_path.join('vendor/assets/stylesheets/xmt_froala/**', '*.css')].inject([]) do |assets, path|
|
|
42
|
+
assets << Pathname.new(path).relative_path_from(root_path.join('vendor/assets/stylesheets')).to_s
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def self.upload_store_dir
|
|
47
|
+
dirs = upload_dir.gsub(/^\/+/,'').gsub(/\/+$/,'').split('/')
|
|
48
|
+
dirs.each { |dir| dir.gsub!(/\W/, '') }
|
|
49
|
+
dirs.delete('')
|
|
50
|
+
dirs.join('/')
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def self.resize_to_limit
|
|
54
|
+
if !image_resize_to_limit.nil? && image_resize_to_limit.is_a?(Array)
|
|
55
|
+
[image_resize_to_limit[0], image_resize_to_limit[1]]
|
|
56
|
+
else
|
|
57
|
+
[800, 800]
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def self.setup
|
|
62
|
+
yield self
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
if defined?(ActiveRecord)
|
|
2
|
+
ActiveRecord::Base.class_eval do
|
|
3
|
+
def self.has_many_xmtfroala_assets(*args)
|
|
4
|
+
options = args.extract_options!
|
|
5
|
+
asset_name = args[0] ? args[0].to_s : 'assets'
|
|
6
|
+
has_many asset_name.to_sym, :class_name => 'XmtFroala::Asset', :as => :owner, :dependent => options[:dependent]
|
|
7
|
+
|
|
8
|
+
class_name = self.name
|
|
9
|
+
XmtFroala::Asset.class_eval do
|
|
10
|
+
belongs_to :owner, :polymorphic => true
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require "xmt_froala"
|
|
2
|
+
require "rails"
|
|
3
|
+
require "action_controller"
|
|
4
|
+
module XmtFroala
|
|
5
|
+
class Engine < ::Rails::Engine
|
|
6
|
+
|
|
7
|
+
initializer "xmt_froala.assets_precompile" do |app|
|
|
8
|
+
app.config.assets.precompile += XmtFroala.assets
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
initializer "xmt_froala.simple_form_and_formtastic" do
|
|
12
|
+
require "xmt_froala/simple_form" if Object.const_defined?("SimpleForm")
|
|
13
|
+
require "xmt_froala/formtastic" if Object.const_defined?("Formtastic")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
initializer "xmt_froala.helper_and_builder" do
|
|
17
|
+
ActiveSupport.on_load :action_view do
|
|
18
|
+
ActionView::Base.send(:include, XmtFroala::Helper)
|
|
19
|
+
ActionView::Helpers::FormBuilder.send(:include, XmtFroala::Builder)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
initializer "xmt_froala.image_process" do
|
|
24
|
+
unless XmtFroala.image_resize_to_limit.nil?
|
|
25
|
+
XmtFroala::ImageUploader.class_eval do
|
|
26
|
+
include CarrierWave::MiniMagick
|
|
27
|
+
process :resize_to_limit => XmtFroala.resize_to_limit
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
module XmtFroala
|
|
2
|
+
module Helper
|
|
3
|
+
def froalaeditor_tag(name, content = nil, options = {})
|
|
4
|
+
id = sanitize_to_id(name)
|
|
5
|
+
input_html = { :id => id }.merge(options.delete(:input_html) || {})
|
|
6
|
+
input_html[:class] = "#{input_html[:class]} xmt_froala"
|
|
7
|
+
output = ActiveSupport::SafeBuffer.new
|
|
8
|
+
output << text_area_tag(name, content, input_html)
|
|
9
|
+
output << javascript_tag(js_replace(id, options))
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def froalaeditor(name, method, options = {})
|
|
13
|
+
# TODO: Refactory options: 1. kindeditor_option 2. html_option
|
|
14
|
+
input_html = (options.delete(:input_html) || {}).stringify_keys
|
|
15
|
+
output_buffer = ActiveSupport::SafeBuffer.new
|
|
16
|
+
output_buffer << build_text_area_tag(name, method, self, merge_assets_info(options), input_html)
|
|
17
|
+
output_buffer << javascript_tag(js_replace(input_html['id'], options))
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def merge_assets_info(options)
|
|
21
|
+
owner = options.delete(:owner)
|
|
22
|
+
options[:class] = "#{options[:class]} xmt_froala"
|
|
23
|
+
if (!owner.nil?) && (!owner.id.nil?)
|
|
24
|
+
begin
|
|
25
|
+
owner_id = owner.id
|
|
26
|
+
owner_type = owner.class.name
|
|
27
|
+
options.reverse_merge!(owner_id: owner_id, owner_type: owner_type, data: {upload: froalaeditor_upload_json_path(owner_id: owner_id, owner_type: owner_type), filemanager: froalaeditor_file_manager_json_path})
|
|
28
|
+
return options
|
|
29
|
+
end
|
|
30
|
+
else
|
|
31
|
+
options.reverse_merge!(data: {upload: froalaeditor_upload_json_path, filemanager: froalaeditor_file_manager_json_path})
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def froalaeditor_upload_json_path(*args)
|
|
36
|
+
options = args.extract_options!
|
|
37
|
+
owner_id_query_string = options[:owner_id] ? "?owner_id=#{options[:owner_id]}" : ''
|
|
38
|
+
owner_type_query_string = options[:owner_type] ? "&owner_type=#{options[:owner_type]}" : ''
|
|
39
|
+
if owner_id_query_string == '' && owner_type_query_string == ''
|
|
40
|
+
"#{main_app_root_url}xmt_froala/upload"
|
|
41
|
+
else
|
|
42
|
+
"#{main_app_root_url}xmt_froala/upload#{owner_id_query_string}#{owner_type_query_string}"
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def froalaeditor_file_manager_json_path
|
|
47
|
+
"#{main_app_root_url}xmt_froala/filemanager"
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
private
|
|
51
|
+
|
|
52
|
+
def main_app_root_url
|
|
53
|
+
begin
|
|
54
|
+
main_app.root_url.slice(0, main_app.root_url.rindex(main_app.root_path)) + '/'
|
|
55
|
+
rescue
|
|
56
|
+
'/'
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def js_replace(dom_id, options = {})
|
|
61
|
+
editor_id = options[:editor_id].nil? ? '' : "#{options[:editor_id].to_s.downcase} = "
|
|
62
|
+
upload_url = froalaeditor_upload_json_path(:owner_id => options.delete(:owner_id), :owner_type => options.delete(:owner_type))
|
|
63
|
+
imageUploadURL = upload_url+'&dir=image'
|
|
64
|
+
fileUploadURL = upload_url+'&dir=file'
|
|
65
|
+
videoUploadURL = upload_url+'&dir=media'
|
|
66
|
+
imageManagerLoadURL = froalaeditor_file_manager_json_path+'?path=&order=datetime&dir=image'
|
|
67
|
+
require 'securerandom'
|
|
68
|
+
random_name = SecureRandom.hex;
|
|
69
|
+
"$('##{dom_id}').froalaEditor({
|
|
70
|
+
language: 'zh_cn',
|
|
71
|
+
imageUploadURL: '#{imageUploadURL}',
|
|
72
|
+
imageManagerLoadURL:'#{imageManagerLoadURL}',
|
|
73
|
+
fileUploadURL: '#{fileUploadURL}',
|
|
74
|
+
videoUploadURL: '#{videoUploadURL}'
|
|
75
|
+
});
|
|
76
|
+
"
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def get_options(options)
|
|
80
|
+
upload_url = froalaeditor_upload_json_path(:owner_id => options.delete(:owner_id), :owner_type => options.delete(:owner_type))
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def build_text_area_tag(name, method, template, options, input_html)
|
|
84
|
+
if Rails.version >= '4.0.0'
|
|
85
|
+
text_area_tag = ActionView::Helpers::Tags::TextArea.new(name, method, template, options)
|
|
86
|
+
text_area_tag.send(:add_default_name_and_id, input_html)
|
|
87
|
+
text_area_tag.render
|
|
88
|
+
elsif Rails.version >= '3.1.0'
|
|
89
|
+
text_area_tag = ActionView::Base::InstanceTag.new(name, method, template, options.delete(:object))
|
|
90
|
+
text_area_tag.send(:add_default_name_and_id, input_html)
|
|
91
|
+
text_area_tag.to_text_area_tag(input_html)
|
|
92
|
+
elsif Rails.version >= '3.0.0'
|
|
93
|
+
raise 'Please use xmt_froala v0.2.8 for Rails v3.0.x'
|
|
94
|
+
else
|
|
95
|
+
raise 'Please upgrade your Rails !'
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
module Builder
|
|
101
|
+
def froalaeditor(method, options = {})
|
|
102
|
+
@template.send("froalaeditor", @object_name, method, objectify_options(options))
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module XmtFroala
|
|
2
|
+
module SimpleForm
|
|
3
|
+
class XmtFroalaInput < ::SimpleForm::Inputs::Base
|
|
4
|
+
def input(wrapper_options)
|
|
5
|
+
@builder.froalaeditor(attribute_name, input_html_options)
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
::SimpleForm::FormBuilder.map_type :froalaeditor, :to => XmtFroala::SimpleForm::XmtFroalaInput
|
|
File without changes
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* froala_editor v2.8.1 (https://www.froala.com/wysiwyg-editor)
|
|
3
|
+
* License https://froala.com/wysiwyg-editor/terms/
|
|
4
|
+
* Copyright 2014-2018 Froala Labs
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
(function (factory) {
|
|
8
|
+
if (typeof define === 'function' && define.amd) {
|
|
9
|
+
// AMD. Register as an anonymous module.
|
|
10
|
+
define(['jquery'], factory);
|
|
11
|
+
} else if (typeof module === 'object' && module.exports) {
|
|
12
|
+
// Node/CommonJS
|
|
13
|
+
module.exports = function( root, jQuery ) {
|
|
14
|
+
if ( jQuery === undefined ) {
|
|
15
|
+
// require('jQuery') returns a factory that requires window to
|
|
16
|
+
// build a jQuery instance, we normalize how we use modules
|
|
17
|
+
// that require this pattern but the window provided is a noop
|
|
18
|
+
// if it's defined (how jquery works)
|
|
19
|
+
if ( typeof window !== 'undefined' ) {
|
|
20
|
+
jQuery = require('jquery');
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
jQuery = require('jquery')(root);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return factory(jQuery);
|
|
27
|
+
};
|
|
28
|
+
} else {
|
|
29
|
+
// Browser globals
|
|
30
|
+
factory(window.jQuery);
|
|
31
|
+
}
|
|
32
|
+
}(function ($) {
|
|
33
|
+
/**
|
|
34
|
+
* Arabic
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
$.FE.LANGUAGE['ar'] = {
|
|
38
|
+
translation: {
|
|
39
|
+
// Place holder
|
|
40
|
+
"Type something": "\u0627\u0643\u062a\u0628 \u0634\u064a\u0626\u0627",
|
|
41
|
+
|
|
42
|
+
// Basic formatting
|
|
43
|
+
"Bold": "\u063a\u0627\u0645\u0642",
|
|
44
|
+
"Italic": "\u0645\u0627\u0626\u0644",
|
|
45
|
+
"Underline": "\u062a\u0633\u0637\u064a\u0631",
|
|
46
|
+
"Strikethrough": "\u064a\u062a\u0648\u0633\u0637 \u062e\u0637",
|
|
47
|
+
|
|
48
|
+
// Main buttons
|
|
49
|
+
"Insert": "\u0625\u062f\u0631\u0627\u062c",
|
|
50
|
+
"Delete": "\u062d\u0630\u0641",
|
|
51
|
+
"Cancel": "\u0625\u0644\u063a\u0627\u0621",
|
|
52
|
+
"OK": "\u0645\u0648\u0627\u0641\u0642",
|
|
53
|
+
"Back": "\u0638\u0647\u0631",
|
|
54
|
+
"Remove": "\u0625\u0632\u0627\u0644\u0629",
|
|
55
|
+
"More": "\u0623\u0643\u062b\u0631",
|
|
56
|
+
"Update": "\u0627\u0644\u062a\u062d\u062f\u064a\u062b",
|
|
57
|
+
"Style": "\u0623\u0633\u0644\u0648\u0628",
|
|
58
|
+
|
|
59
|
+
// Font
|
|
60
|
+
"Font Family": "\u0639\u0627\u0626\u0644\u0629 \u0627\u0644\u062e\u0637",
|
|
61
|
+
"Font Size": "\u062d\u062c\u0645 \u0627\u0644\u062e\u0637",
|
|
62
|
+
|
|
63
|
+
// Colors
|
|
64
|
+
"Colors": "\u0627\u0644\u0623\u0644\u0648\u0627\u0646",
|
|
65
|
+
"Background": "\u0627\u0644\u062e\u0644\u0641\u064a\u0629",
|
|
66
|
+
"Text": "\u0627\u0644\u0646\u0635",
|
|
67
|
+
"HEX Color": "عرافة اللون",
|
|
68
|
+
|
|
69
|
+
// Paragraphs
|
|
70
|
+
"Paragraph Format": "\u062a\u0646\u0633\u064a\u0642 \u0627\u0644\u0641\u0642\u0631\u0629",
|
|
71
|
+
"Normal": "\u0637\u0628\u064a\u0639\u064a",
|
|
72
|
+
"Code": "\u0643\u0648\u062f",
|
|
73
|
+
"Heading 1": "\u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646 1",
|
|
74
|
+
"Heading 2": "\u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646 2",
|
|
75
|
+
"Heading 3": "\u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646 3",
|
|
76
|
+
"Heading 4": "\u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646 4",
|
|
77
|
+
|
|
78
|
+
// Style
|
|
79
|
+
"Paragraph Style": "\u0646\u0645\u0637 \u0627\u0644\u0641\u0642\u0631\u0629",
|
|
80
|
+
"Inline Style": "\u0627\u0644\u0646\u0645\u0637 \u0627\u0644\u0645\u0636\u0645\u0646",
|
|
81
|
+
|
|
82
|
+
// Alignment
|
|
83
|
+
"Align": "\u0645\u062d\u0627\u0630\u0627\u0629",
|
|
84
|
+
"Align Left": "\u0645\u062d\u0627\u0630\u0627\u0629 \u0627\u0644\u0646\u0635 \u0644\u0644\u064a\u0633\u0627\u0631",
|
|
85
|
+
"Align Center": "\u062a\u0648\u0633\u064a\u0637",
|
|
86
|
+
"Align Right": "\u0645\u062d\u0627\u0630\u0627\u0629 \u0627\u0644\u0646\u0635 \u0644\u0644\u064a\u0645\u064a\u0646",
|
|
87
|
+
"Align Justify": "\u0636\u0628\u0637",
|
|
88
|
+
"None": "\u0644\u0627 \u0634\u064a\u0621",
|
|
89
|
+
|
|
90
|
+
// Lists
|
|
91
|
+
"Ordered List": "\u0642\u0627\u0626\u0645\u0629 \u0645\u0631\u062a\u0628\u0629",
|
|
92
|
+
"Unordered List": "\u0642\u0627\u0626\u0645\u0629 \u063a\u064a\u0631 \u0645\u0631\u062a\u0628\u0629",
|
|
93
|
+
|
|
94
|
+
// Indent
|
|
95
|
+
"Decrease Indent": "\u0627\u0646\u062e\u0641\u0627\u0636 \u0627\u0644\u0645\u0633\u0627\u0641\u0629 \u0627\u0644\u0628\u0627\u062f\u0626\u0629",
|
|
96
|
+
"Increase Indent": "\u0632\u064a\u0627\u062f\u0629 \u0627\u0644\u0645\u0633\u0627\u0641\u0629 \u0627\u0644\u0628\u0627\u062f\u0626\u0629",
|
|
97
|
+
|
|
98
|
+
// Links
|
|
99
|
+
"Insert Link": "\u0625\u062f\u0631\u0627\u062c \u0631\u0627\u0628\u0637",
|
|
100
|
+
"Open in new tab": "\u0641\u062a\u062d \u0641\u064a \u0639\u0644\u0627\u0645\u0629 \u062a\u0628\u0648\u064a\u0628 \u062c\u062f\u064a\u062f\u0629",
|
|
101
|
+
"Open Link": "\u0627\u0641\u062a\u062d \u0627\u0644\u0631\u0627\u0628\u0637",
|
|
102
|
+
"Edit Link": "\u0627\u0631\u062a\u0628\u0627\u0637 \u062a\u062d\u0631\u064a\u0631",
|
|
103
|
+
"Unlink": "\u062d\u0630\u0641 \u0627\u0644\u0631\u0627\u0628\u0637",
|
|
104
|
+
"Choose Link": "\u0627\u062e\u062a\u064a\u0627\u0631 \u0635\u0644\u0629",
|
|
105
|
+
|
|
106
|
+
// Images
|
|
107
|
+
"Insert Image": "\u0625\u062f\u0631\u0627\u062c \u0635\u0648\u0631\u0629",
|
|
108
|
+
"Upload Image": "\u062a\u062d\u0645\u064a\u0644 \u0635\u0648\u0631\u0629",
|
|
109
|
+
"By URL": "\u0628\u0648\u0627\u0633\u0637\u0629 URL",
|
|
110
|
+
"Browse": "\u062a\u0635\u0641\u062d",
|
|
111
|
+
"Drop image": "\u0625\u0633\u0642\u0627\u0637 \u0635\u0648\u0631\u0629",
|
|
112
|
+
"or click": "\u0623\u0648 \u0627\u0646\u0642\u0631 \u0641\u0648\u0642",
|
|
113
|
+
"Manage Images": "\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0635\u0648\u0631",
|
|
114
|
+
"Loading": "\u062a\u062d\u0645\u064a\u0644",
|
|
115
|
+
"Deleting": "\u062d\u0630\u0641",
|
|
116
|
+
"Tags": "\u0627\u0644\u0643\u0644\u0645\u0627\u062a",
|
|
117
|
+
"Are you sure? Image will be deleted.": "\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f\u061f \u0633\u064a\u062a\u0645 \u062d\u0630\u0641 \u0627\u0644\u0635\u0648\u0631\u0629\u002e",
|
|
118
|
+
"Replace": "\u0627\u0633\u062a\u0628\u062f\u0627\u0644",
|
|
119
|
+
"Uploading": "\u062a\u062d\u0645\u064a\u0644",
|
|
120
|
+
"Loading image": "\u0635\u0648\u0631\u0629 \u062a\u062d\u0645\u064a\u0644",
|
|
121
|
+
"Display": "\u0639\u0631\u0636",
|
|
122
|
+
"Inline": "\u0641\u064a \u062e\u0637",
|
|
123
|
+
"Break Text": "\u0646\u0635 \u0627\u0633\u062a\u0631\u0627\u062d\u0629",
|
|
124
|
+
"Alternate Text": "\u0646\u0635 \u0628\u062f\u064a\u0644",
|
|
125
|
+
"Change Size": "\u062a\u063a\u064a\u064a\u0631 \u062d\u062c\u0645",
|
|
126
|
+
"Width": "\u0639\u0631\u0636",
|
|
127
|
+
"Height": "\u0627\u0631\u062a\u0641\u0627\u0639",
|
|
128
|
+
"Something went wrong. Please try again.": ".\u062d\u062f\u062b \u062e\u0637\u0623 \u0645\u0627. \u062d\u0627\u0648\u0644 \u0645\u0631\u0629 \u0627\u062e\u0631\u0649",
|
|
129
|
+
"Image Caption": "تعليق على الصورة",
|
|
130
|
+
"Advanced Edit": "تعديل متقدم",
|
|
131
|
+
|
|
132
|
+
// Video
|
|
133
|
+
"Insert Video": "\u0625\u062f\u0631\u0627\u062c \u0641\u064a\u062f\u064a\u0648",
|
|
134
|
+
"Embedded Code": "\u0627\u0644\u062a\u0639\u0644\u064a\u0645\u0627\u062a \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0629 \u0627\u0644\u0645\u0636\u0645\u0646\u0629",
|
|
135
|
+
"Paste in a video URL": "لصق في عنوان ورل للفيديو",
|
|
136
|
+
"Drop video": "انخفاض الفيديو",
|
|
137
|
+
"Your browser does not support HTML5 video.": "متصفحك لا يدعم فيديو HTML5.",
|
|
138
|
+
"Upload Video": "رفع فيديو",
|
|
139
|
+
|
|
140
|
+
// Tables
|
|
141
|
+
"Insert Table": "\u0625\u062f\u0631\u0627\u062c \u062c\u062f\u0648\u0644",
|
|
142
|
+
"Table Header": "\u0631\u0623\u0633 \u0627\u0644\u062c\u062f\u0648\u0644",
|
|
143
|
+
"Remove Table": "\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u062c\u062f\u0648\u0644",
|
|
144
|
+
"Table Style": "\u0646\u0645\u0637 \u0627\u0644\u062c\u062f\u0648\u0644",
|
|
145
|
+
"Horizontal Align": "\u0645\u062d\u0627\u0630\u0627\u0629 \u0623\u0641\u0642\u064a\u0629",
|
|
146
|
+
"Row": "\u0635\u0641",
|
|
147
|
+
"Insert row above": "\u0625\u062f\u0631\u0627\u062c \u0635\u0641 \u0644\u0644\u0623\u0639\u0644\u0649",
|
|
148
|
+
"Insert row below": "\u0625\u062f\u0631\u0627\u062c \u0635\u0641 \u0644\u0644\u0623\u0633\u0641\u0644",
|
|
149
|
+
"Delete row": "\u062d\u0630\u0641 \u0635\u0641",
|
|
150
|
+
"Column": "\u0639\u0645\u0648\u062f",
|
|
151
|
+
"Insert column before": "\u0625\u062f\u0631\u0627\u062c \u0639\u0645\u0648\u062f \u0644\u0644\u064a\u0633\u0627\u0631",
|
|
152
|
+
"Insert column after": "\u0625\u062f\u0631\u0627\u062c \u0639\u0645\u0648\u062f \u0644\u0644\u064a\u0645\u064a\u0646",
|
|
153
|
+
"Delete column": "\u062d\u0630\u0641 \u0639\u0645\u0648\u062f",
|
|
154
|
+
"Cell": "\u062e\u0644\u064a\u0629",
|
|
155
|
+
"Merge cells": "\u062f\u0645\u062c \u062e\u0644\u0627\u064a\u0627",
|
|
156
|
+
"Horizontal split": "\u0627\u0646\u0642\u0633\u0627\u0645 \u0623\u0641\u0642\u064a",
|
|
157
|
+
"Vertical split": "\u0627\u0644\u0627\u0646\u0642\u0633\u0627\u0645 \u0627\u0644\u0639\u0645\u0648\u062f\u064a",
|
|
158
|
+
"Cell Background": "\u062e\u0644\u0641\u064a\u0629 \u0627\u0644\u062e\u0644\u064a\u0629",
|
|
159
|
+
"Vertical Align": "\u0645\u062d\u0627\u0630\u0627\u0629 \u0639\u0645\u0648\u062f\u064a\u0629",
|
|
160
|
+
"Top": "\u0623\u0639\u0644\u0649",
|
|
161
|
+
"Middle": "\u0648\u0633\u0637",
|
|
162
|
+
"Bottom": "\u0623\u0633\u0641\u0644",
|
|
163
|
+
"Align Top": "\u0645\u062d\u0627\u0630\u0627\u0629 \u0623\u0639\u0644\u0649",
|
|
164
|
+
"Align Middle": "\u0645\u062d\u0627\u0630\u0627\u0629 \u0648\u0633\u0637",
|
|
165
|
+
"Align Bottom": "\u0645\u062d\u0627\u0630\u0627\u0629 \u0627\u0644\u0623\u0633\u0641\u0644",
|
|
166
|
+
"Cell Style": "\u0646\u0645\u0637 \u0627\u0644\u062e\u0644\u064a\u0629",
|
|
167
|
+
|
|
168
|
+
// Files
|
|
169
|
+
"Upload File": "\u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u0644\u0641",
|
|
170
|
+
"Drop file": "\u0627\u0646\u062e\u0641\u0627\u0636 \u0627\u0644\u0645\u0644\u0641",
|
|
171
|
+
|
|
172
|
+
// Emoticons
|
|
173
|
+
"Emoticons": "\u0627\u0644\u0645\u0634\u0627\u0639\u0631",
|
|
174
|
+
"Grinning face": "\u064a\u0643\u0634\u0631 \u0648\u062c\u0647\u0647",
|
|
175
|
+
"Grinning face with smiling eyes": "\u0645\u0628\u062a\u0633\u0645\u0627 \u0648\u062c\u0647 \u0645\u0639 \u064a\u0628\u062a\u0633\u0645 \u0627\u0644\u0639\u064a\u0646",
|
|
176
|
+
"Face with tears of joy": "\u0648\u062c\u0647 \u0645\u0639 \u062f\u0645\u0648\u0639 \u0627\u0644\u0641\u0631\u062d",
|
|
177
|
+
"Smiling face with open mouth": "\u0627\u0644\u0648\u062c\u0647 \u0627\u0644\u0645\u0628\u062a\u0633\u0645 \u0645\u0639 \u0641\u062a\u062d \u0627\u0644\u0641\u0645",
|
|
178
|
+
"Smiling face with open mouth and smiling eyes": "\u0627\u0644\u0648\u062c\u0647 \u0627\u0644\u0645\u0628\u062a\u0633\u0645 \u0645\u0639 \u0641\u062a\u062d \u0627\u0644\u0641\u0645 \u0648\u0627\u0644\u0639\u064a\u0646\u064a\u0646 \u064a\u0628\u062a\u0633\u0645",
|
|
179
|
+
"Smiling face with open mouth and cold sweat": "\u0627\u0644\u0648\u062c\u0647 \u0627\u0644\u0645\u0628\u062a\u0633\u0645 \u0645\u0639 \u0641\u062a\u062d \u0627\u0644\u0641\u0645 \u0648\u0627\u0644\u0639\u0631\u0642 \u0627\u0644\u0628\u0627\u0631\u062f",
|
|
180
|
+
"Smiling face with open mouth and tightly-closed eyes": "\u0627\u0644\u0648\u062c\u0647 \u0627\u0644\u0645\u0628\u062a\u0633\u0645 \u0645\u0639 \u0641\u062a\u062d \u0627\u0644\u0641\u0645 \u0648\u0627\u0644\u0639\u064a\u0646\u064a\u0646 \u0645\u063a\u0644\u0642\u0629 \u0628\u0625\u062d\u0643\u0627\u0645",
|
|
181
|
+
"Smiling face with halo": "\u0627\u0644\u0648\u062c\u0647 \u0627\u0644\u0645\u0628\u062a\u0633\u0645 \u0645\u0639 \u0647\u0627\u0644\u0629",
|
|
182
|
+
"Smiling face with horns": "\u0627\u0644\u0648\u062c\u0647 \u0627\u0644\u0645\u0628\u062a\u0633\u0645 \u0628\u0642\u0631\u0648\u0646",
|
|
183
|
+
"Winking face": "\u0627\u0644\u063a\u0645\u0632 \u0648\u062c\u0647",
|
|
184
|
+
"Smiling face with smiling eyes": "\u064a\u0628\u062a\u0633\u0645 \u0648\u062c\u0647 \u0645\u0639 \u0639\u064a\u0648\u0646 \u062a\u0628\u062a\u0633\u0645",
|
|
185
|
+
"Face savoring delicious food": "\u064a\u0648\u0627\u062c\u0647 \u0644\u0630\u064a\u0630 \u0627\u0644\u0645\u0630\u0627\u0642 \u0644\u0630\u064a\u0630 \u0627\u0644\u0637\u0639\u0627\u0645",
|
|
186
|
+
"Relieved face": "\u0648\u062c\u0647 \u0628\u0627\u0644\u0627\u0631\u062a\u064a\u0627\u062d",
|
|
187
|
+
"Smiling face with heart-shaped eyes": "\u0627\u0644\u0648\u062c\u0647 \u0627\u0644\u0645\u0628\u062a\u0633\u0645 \u0628\u0639\u064a\u0646\u064a\u0646 \u0639\u0644\u0649 \u0634\u0643\u0644 \u0642\u0644\u0628",
|
|
188
|
+
"Smiling face with sunglasses": "\u0627\u0644\u0648\u062c\u0647 \u0627\u0644\u0645\u0628\u062a\u0633\u0645 \u0645\u0639 \u0627\u0644\u0646\u0638\u0627\u0631\u0627\u062a \u0627\u0644\u0634\u0645\u0633\u064a\u0629",
|
|
189
|
+
"Smirking face": "\u0633\u0645\u064a\u0631\u0643\u064a\u0646\u062c \u0627\u0644\u0648\u062c\u0647",
|
|
190
|
+
"Neutral face": "\u0645\u062d\u0627\u064a\u062f \u0627\u0644\u0648\u062c\u0647",
|
|
191
|
+
"Expressionless face": "\u0648\u062c\u0647 \u0627\u0644\u062a\u0639\u0627\u0628\u064a\u0631",
|
|
192
|
+
"Unamused face": "\u0644\u0627 \u0645\u0633\u0644\u064a\u0627 \u0627\u0644\u0648\u062c\u0647",
|
|
193
|
+
"Face with cold sweat": "\u0648\u062c\u0647 \u0645\u0639 \u0639\u0631\u0642 \u0628\u0627\u0631\u062f",
|
|
194
|
+
"Pensive face": "\u0648\u062c\u0647 \u0645\u062a\u0623\u0645\u0644",
|
|
195
|
+
"Confused face": "\u0648\u062c\u0647 \u0627\u0644\u062e\u0644\u0637",
|
|
196
|
+
"Confounded face": "\u0648\u062c\u0647 \u0645\u0631\u062a\u0628\u0643",
|
|
197
|
+
"Kissing face": "\u062a\u0642\u0628\u064a\u0644 \u0627\u0644\u0648\u062c\u0647",
|
|
198
|
+
"Face throwing a kiss": "\u0645\u0648\u0627\u062c\u0647\u0629 \u0631\u0645\u064a \u0642\u0628\u0644\u0629",
|
|
199
|
+
"Kissing face with smiling eyes": "\u062a\u0642\u0628\u064a\u0644 \u0648\u062c\u0647 \u0645\u0639 \u0639\u064a\u0648\u0646 \u062a\u0628\u062a\u0633\u0645",
|
|
200
|
+
"Kissing face with closed eyes": "\u062a\u0642\u0628\u064a\u0644 \u0648\u062c\u0647 \u0645\u0639 \u0639\u064a\u0648\u0646 \u0645\u063a\u0644\u0642\u0629",
|
|
201
|
+
"Face with stuck out tongue": "\u0627\u0644\u0648\u062c\u0647 \u0645\u0639 \u062a\u0645\u0633\u0643 \u0628\u0647\u0627 \u0627\u0644\u0644\u0633\u0627\u0646",
|
|
202
|
+
"Face with stuck out tongue and winking eye": "\u0627\u0644\u0648\u062c\u0647 \u0645\u0639 \u062a\u0645\u0633\u0643 \u0628\u0647\u0627 \u0627\u0644\u0644\u0633\u0627\u0646 \u0648\u0627\u0644\u0639\u064a\u0646 \u0627\u0644\u062a\u063a\u0627\u0636\u064a",
|
|
203
|
+
"Face with stuck out tongue and tightly-closed eyes": "\u0627\u0644\u0648\u062c\u0647 \u0645\u0639 \u062a\u0645\u0633\u0643 \u0628\u0647\u0627 \u0627\u0644\u0644\u0633\u0627\u0646 \u0648\u0627\u0644\u0639\u064a\u0648\u0646 \u0645\u063a\u0644\u0642\u0629 \u0628\u0623\u062d\u0643\u0627\u0645\u002d",
|
|
204
|
+
"Disappointed face": "\u0648\u062c\u0647\u0627 \u062e\u064a\u0628\u0629 \u0623\u0645\u0644",
|
|
205
|
+
"Worried face": "\u0648\u062c\u0647\u0627 \u0627\u0644\u0642\u0644\u0642\u0648\u0646",
|
|
206
|
+
"Angry face": "\u0648\u062c\u0647 \u063a\u0627\u0636\u0628",
|
|
207
|
+
"Pouting face": "\u0627\u0644\u0639\u0628\u0648\u0633 \u0648\u062c\u0647",
|
|
208
|
+
"Crying face": "\u0627\u0644\u0628\u0643\u0627\u0621 \u0627\u0644\u0648\u062c\u0647",
|
|
209
|
+
"Persevering face": "\u0627\u0644\u0645\u062b\u0627\u0628\u0631\u0629 \u0648\u062c\u0647\u0647",
|
|
210
|
+
"Face with look of triumph": "\u0648\u0627\u062c\u0647 \u0645\u0639 \u0646\u0638\u0631\u0629 \u0627\u0646\u062a\u0635\u0627\u0631",
|
|
211
|
+
"Disappointed but relieved face": "\u0628\u062e\u064a\u0628\u0629 \u0623\u0645\u0644 \u0648\u0644\u0643\u0646 \u064a\u0639\u0641\u0649 \u0648\u062c\u0647",
|
|
212
|
+
"Frowning face with open mouth": "\u0645\u0642\u0637\u0628 \u0627\u0644\u0648\u062c\u0647 \u0645\u0639 \u0641\u062a\u062d \u0627\u0644\u0641\u0645",
|
|
213
|
+
"Anguished face": "\u0627\u0644\u0648\u062c\u0647 \u0627\u0644\u0645\u0624\u0644\u0645",
|
|
214
|
+
"Fearful face": "\u0627\u0644\u0648\u062c\u0647 \u0627\u0644\u0645\u062e\u064a\u0641",
|
|
215
|
+
"Weary face": "\u0648\u062c\u0647\u0627 \u0628\u0627\u0644\u0636\u062c\u0631",
|
|
216
|
+
"Sleepy face": "\u0648\u062c\u0647 \u0646\u0639\u0633\u0627\u0646",
|
|
217
|
+
"Tired face": "\u0648\u062c\u0647 \u0645\u062a\u0639\u0628",
|
|
218
|
+
"Grimacing face": "\u0648\u062e\u0631\u062c \u0633\u064a\u0633 \u0627\u0644\u0648\u062c\u0647",
|
|
219
|
+
"Loudly crying face": "\u0627\u0644\u0628\u0643\u0627\u0621 \u0628\u0635\u0648\u062a \u0639\u0627\u0644 \u0648\u062c\u0647\u0647",
|
|
220
|
+
"Face with open mouth": "\u0648\u0627\u062c\u0647 \u0645\u0639 \u0641\u062a\u062d \u0627\u0644\u0641\u0645",
|
|
221
|
+
"Hushed face": "\u0648\u062c\u0647\u0627 \u0627\u0644\u062a\u0643\u062a\u0645",
|
|
222
|
+
"Face with open mouth and cold sweat": "\u0648\u0627\u062c\u0647 \u0645\u0639 \u0641\u062a\u062d \u0627\u0644\u0641\u0645 \u0648\u0627\u0644\u0639\u0631\u0642 \u0627\u0644\u0628\u0627\u0631\u062f",
|
|
223
|
+
"Face screaming in fear": "\u0648\u0627\u062c\u0647 \u064a\u0635\u0631\u062e \u0641\u064a \u062e\u0648\u0641",
|
|
224
|
+
"Astonished face": "\u0648\u062c\u0647\u0627 \u062f\u0647\u0634",
|
|
225
|
+
"Flushed face": "\u0627\u062d\u0645\u0631\u0627\u0631 \u0627\u0644\u0648\u062c\u0647",
|
|
226
|
+
"Sleeping face": "\u0627\u0644\u0646\u0648\u0645 \u0627\u0644\u0648\u062c\u0647",
|
|
227
|
+
"Dizzy face": "\u0648\u062c\u0647\u0627 \u0628\u0627\u0644\u062f\u0648\u0627\u0631",
|
|
228
|
+
"Face without mouth": "\u0648\u0627\u062c\u0647 \u062f\u0648\u0646 \u0627\u0644\u0641\u0645",
|
|
229
|
+
"Face with medical mask": "\u0648\u0627\u062c\u0647 \u0645\u0639 \u0642\u0646\u0627\u0639 \u0627\u0644\u0637\u0628\u064a\u0629",
|
|
230
|
+
|
|
231
|
+
// Line breaker
|
|
232
|
+
"Break": "\u0627\u0644\u0627\u0646\u0642\u0633\u0627\u0645",
|
|
233
|
+
|
|
234
|
+
// Math
|
|
235
|
+
"Subscript": "\u0645\u0646\u062e\u0641\u0636",
|
|
236
|
+
"Superscript": "\u062d\u0631\u0641 \u0641\u0648\u0642\u064a",
|
|
237
|
+
|
|
238
|
+
// Full screen
|
|
239
|
+
"Fullscreen": "\u0643\u0627\u0645\u0644 \u0627\u0644\u0634\u0627\u0634\u0629",
|
|
240
|
+
|
|
241
|
+
// Horizontal line
|
|
242
|
+
"Insert Horizontal Line": "\u0625\u062f\u0631\u0627\u062c \u062e\u0637 \u0623\u0641\u0642\u064a",
|
|
243
|
+
|
|
244
|
+
// Clear formatting
|
|
245
|
+
"Clear Formatting": "\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u062a\u0646\u0633\u064a\u0642",
|
|
246
|
+
|
|
247
|
+
// Undo, redo
|
|
248
|
+
"Undo": "\u062a\u0631\u0627\u062c\u0639",
|
|
249
|
+
"Redo": "\u0625\u0639\u0627\u062f\u0629",
|
|
250
|
+
|
|
251
|
+
// Select all
|
|
252
|
+
"Select All": "\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0643\u0644",
|
|
253
|
+
|
|
254
|
+
// Code view
|
|
255
|
+
"Code View": "\u0639\u0631\u0636 \u0627\u0644\u062a\u0639\u0644\u064a\u0645\u0627\u062a \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0629",
|
|
256
|
+
|
|
257
|
+
// Quote
|
|
258
|
+
"Quote": "\u0627\u0642\u062a\u0628\u0633",
|
|
259
|
+
"Increase": "\u0632\u064a\u0627\u062f\u0629",
|
|
260
|
+
"Decrease": "\u0627\u0646\u062e\u0641\u0627\u0636",
|
|
261
|
+
|
|
262
|
+
// Quick Insert
|
|
263
|
+
"Quick Insert": "\u0625\u062f\u0631\u0627\u062c \u0633\u0631\u064a\u0639",
|
|
264
|
+
|
|
265
|
+
// Spcial Characters
|
|
266
|
+
"Special Characters": "أحرف خاصة",
|
|
267
|
+
"Latin": "لاتينية",
|
|
268
|
+
"Greek": "الإغريقي",
|
|
269
|
+
"Cyrillic": "السيريلية",
|
|
270
|
+
"Punctuation": "علامات ترقيم",
|
|
271
|
+
"Currency": "دقة",
|
|
272
|
+
"Arrows": "السهام",
|
|
273
|
+
"Math": "الرياضيات",
|
|
274
|
+
"Misc": "متفرقات",
|
|
275
|
+
|
|
276
|
+
// Print.
|
|
277
|
+
"Print": "طباعة",
|
|
278
|
+
|
|
279
|
+
// Spell Checker.
|
|
280
|
+
"Spell Checker": "مدقق املائي",
|
|
281
|
+
|
|
282
|
+
// Help
|
|
283
|
+
"Help": "مساعدة",
|
|
284
|
+
"Shortcuts": "اختصارات",
|
|
285
|
+
"Inline Editor": "محرر مضمنة",
|
|
286
|
+
"Show the editor": "عرض المحرر",
|
|
287
|
+
"Common actions": "الإجراءات المشتركة",
|
|
288
|
+
"Copy": "نسخ",
|
|
289
|
+
"Cut": "يقطع",
|
|
290
|
+
"Paste": "معجون",
|
|
291
|
+
"Basic Formatting": "التنسيق الأساسي",
|
|
292
|
+
"Increase quote level": "زيادة مستوى الاقتباس",
|
|
293
|
+
"Decrease quote level": "انخفاض مستوى الاقتباس",
|
|
294
|
+
"Image / Video": "صورة / فيديو",
|
|
295
|
+
"Resize larger": "تغيير حجم أكبر",
|
|
296
|
+
"Resize smaller": "تغيير حجم أصغر",
|
|
297
|
+
"Table": "الطاولة",
|
|
298
|
+
"Select table cell": "حدد خلية الجدول",
|
|
299
|
+
"Extend selection one cell": "توسيع اختيار خلية واحدة",
|
|
300
|
+
"Extend selection one row": "تمديد اختيار صف واحد",
|
|
301
|
+
"Navigation": "التنقل",
|
|
302
|
+
"Focus popup / toolbar": "التركيز المنبثقة / شريط الأدوات",
|
|
303
|
+
"Return focus to previous position": "عودة التركيز إلى الموقف السابق",
|
|
304
|
+
|
|
305
|
+
// Embed.ly
|
|
306
|
+
"Embed URL": "تضمين عنوان ورل",
|
|
307
|
+
"Paste in a URL to embed": "الصق في عنوان ورل لتضمينه",
|
|
308
|
+
|
|
309
|
+
// Word Paste.
|
|
310
|
+
"The pasted content is coming from a Microsoft Word document. Do you want to keep the format or clean it up?": "المحتوى الذي تم لصقه قادم من وثيقة كلمة ميكروسوفت. هل تريد الاحتفاظ بالتنسيق أو تنظيفه؟",
|
|
311
|
+
"Keep": "احتفظ",
|
|
312
|
+
"Clean": "نظيف",
|
|
313
|
+
"Word Paste Detected": "تم اكتشاف معجون الكلمات"
|
|
314
|
+
},
|
|
315
|
+
direction: "rtl"
|
|
316
|
+
};
|
|
317
|
+
|
|
318
|
+
}));
|