kuji-mercury-rails 0.3.2
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.
- data/LICENSE +25 -0
- data/POST_INSTALL +15 -0
- data/app/controllers/mercury/images_controller.rb +19 -0
- data/app/controllers/mercury_controller.rb +34 -0
- data/app/models/mercury/image.rb +16 -0
- data/app/views/layouts/mercury.html.erb +33 -0
- data/app/views/mercury/lightviews/about.html +11 -0
- data/app/views/mercury/modals/character.html +255 -0
- data/app/views/mercury/modals/htmleditor.html +13 -0
- data/app/views/mercury/modals/link.html +75 -0
- data/app/views/mercury/modals/media.html +82 -0
- data/app/views/mercury/modals/table.html +84 -0
- data/app/views/mercury/palettes/backcolor.html +73 -0
- data/app/views/mercury/palettes/forecolor.html +73 -0
- data/app/views/mercury/panels/history.html +3 -0
- data/app/views/mercury/panels/notes.html +3 -0
- data/app/views/mercury/panels/snippets.html +12 -0
- data/app/views/mercury/selects/formatblock.html +11 -0
- data/app/views/mercury/selects/style.html +5 -0
- data/app/views/mercury/snippets/example/options.html.erb +34 -0
- data/app/views/mercury/snippets/example/preview.html.erb +1 -0
- data/config/engine.rb +41 -0
- data/db/migrate/20110526035601_create_mercury_images.rb +11 -0
- data/features/loading/loading.feature +22 -0
- data/features/loading/navigating.feature +77 -0
- data/features/loading/user_interface.feature +67 -0
- data/features/regions/editable/advanced_editing.feature +0 -0
- data/features/regions/editable/basic_editing.feature +195 -0
- data/features/regions/editable/inserting_links.feature +98 -0
- data/features/regions/editable/inserting_media.feature +110 -0
- data/features/regions/editable/inserting_snippets.feature +102 -0
- data/features/regions/editable/inserting_special_characters.feature +24 -0
- data/features/regions/editable/inserting_tables.feature +109 -0
- data/features/regions/editable/pasting.feature +0 -0
- data/features/regions/editable/uploading_images.feature +0 -0
- data/features/regions/image/uploading_images.feature +0 -0
- data/features/regions/markupable/advanced_editing.feature +0 -0
- data/features/regions/markupable/basic_editing.feature +0 -0
- data/features/regions/markupable/inserting_links.feature +0 -0
- data/features/regions/markupable/inserting_media.feature +0 -0
- data/features/regions/markupable/inserting_snippets.feature +0 -0
- data/features/regions/markupable/inserting_special_characters.feature +0 -0
- data/features/regions/markupable/inserting_tables.feature +0 -0
- data/features/regions/markupable/uploading_images.feature +0 -0
- data/features/regions/simple/basic_editing.feature +5 -0
- data/features/regions/snippetable/advanced_editing.feature +0 -0
- data/features/regions/snippetable/basic_editing.feature +0 -0
- data/features/regions/snippetable/inserting_snippets.feature +0 -0
- data/features/saving/saving.feature +33 -0
- data/features/step_definitions/debug_steps.rb +14 -0
- data/features/step_definitions/mercury_steps.rb +438 -0
- data/features/step_definitions/web_steps.rb +211 -0
- data/features/support/env.rb +46 -0
- data/features/support/mercury_contents.rb +25 -0
- data/features/support/mercury_selectors.rb +148 -0
- data/features/support/paths.rb +38 -0
- data/features/support/selectors.rb +44 -0
- data/lib/generators/mercury/install/install_generator.rb +49 -0
- data/lib/generators/mercury/install/templates/mongoid_paperclip_image.rb +17 -0
- data/lib/mercury-rails.rb +3 -0
- data/lib/mercury/authentication.rb +8 -0
- data/spec/javascripts/mercury/dialog_spec.js.coffee +281 -0
- data/spec/javascripts/mercury/dialogs/backcolor_spec.js.coffee +37 -0
- data/spec/javascripts/mercury/dialogs/forecolor_spec.js.coffee +37 -0
- data/spec/javascripts/mercury/dialogs/formatblock_spec.js.coffee +25 -0
- data/spec/javascripts/mercury/dialogs/snippetpanel_spec.js.coffee +30 -0
- data/spec/javascripts/mercury/dialogs/style_spec.js.coffee +25 -0
- data/spec/javascripts/mercury/history_buffer_spec.js.coffee +76 -0
- data/spec/javascripts/mercury/lightview_spec.js.coffee +497 -0
- data/spec/javascripts/mercury/mercury_spec.js.coffee +132 -0
- data/spec/javascripts/mercury/modal_spec.js.coffee +504 -0
- data/spec/javascripts/mercury/modals/htmleditor_spec.js.coffee +30 -0
- data/spec/javascripts/mercury/modals/insertcharacter_spec.js.coffee +29 -0
- data/spec/javascripts/mercury/modals/insertlink_spec.js.coffee +220 -0
- data/spec/javascripts/mercury/modals/insertmedia_spec.js.coffee +167 -0
- data/spec/javascripts/mercury/modals/insertsnippet_spec.js.coffee +52 -0
- data/spec/javascripts/mercury/modals/inserttable_spec.js.coffee +160 -0
- data/spec/javascripts/mercury/native_extensions_spec.js.coffee +60 -0
- data/spec/javascripts/mercury/page_editor_spec.js.coffee +757 -0
- data/spec/javascripts/mercury/palette_spec.js.coffee +49 -0
- data/spec/javascripts/mercury/panel_spec.js.coffee +183 -0
- data/spec/javascripts/mercury/region_spec.js.coffee +298 -0
- data/spec/javascripts/mercury/regions/editable_spec.js.coffee +561 -0
- data/spec/javascripts/mercury/regions/image_spec.js.coffee +34 -0
- data/spec/javascripts/mercury/regions/markupable_spec.js.coffee +367 -0
- data/spec/javascripts/mercury/regions/simple_spec.js.coffee +33 -0
- data/spec/javascripts/mercury/regions/snippetable_spec.js.coffee +370 -0
- data/spec/javascripts/mercury/select_spec.js.coffee +49 -0
- data/spec/javascripts/mercury/snippet_spec.js.coffee +253 -0
- data/spec/javascripts/mercury/snippet_toolbar_spec.js.coffee +184 -0
- data/spec/javascripts/mercury/statusbar_spec.js.coffee +150 -0
- data/spec/javascripts/mercury/table_editor_spec.js.coffee +194 -0
- data/spec/javascripts/mercury/toolbar.button_group_spec.js.coffee +90 -0
- data/spec/javascripts/mercury/toolbar.button_spec.js.coffee +360 -0
- data/spec/javascripts/mercury/toolbar.expander_spec.js.coffee +118 -0
- data/spec/javascripts/mercury/toolbar_spec.js.coffee +222 -0
- data/spec/javascripts/mercury/tooltip_spec.js.coffee +186 -0
- data/spec/javascripts/mercury/uploader_spec.js.coffee +530 -0
- data/spec/javascripts/spec_helper.js +513 -0
- data/spec/javascripts/templates/mercury/dialog.html +2 -0
- data/spec/javascripts/templates/mercury/dialogs/backcolor.html +5 -0
- data/spec/javascripts/templates/mercury/dialogs/forecolor.html +5 -0
- data/spec/javascripts/templates/mercury/dialogs/formatblock.html +3 -0
- data/spec/javascripts/templates/mercury/dialogs/snippetpanel.html +16 -0
- data/spec/javascripts/templates/mercury/dialogs/style.html +3 -0
- data/spec/javascripts/templates/mercury/lightview.html +13 -0
- data/spec/javascripts/templates/mercury/modal.html +13 -0
- data/spec/javascripts/templates/mercury/modals/htmleditor.html +5 -0
- data/spec/javascripts/templates/mercury/modals/insertcharacter.html +5 -0
- data/spec/javascripts/templates/mercury/modals/insertlink.html +30 -0
- data/spec/javascripts/templates/mercury/modals/insertmedia.html +35 -0
- data/spec/javascripts/templates/mercury/modals/insertsnippet.html +6 -0
- data/spec/javascripts/templates/mercury/modals/inserttable.html +27 -0
- data/spec/javascripts/templates/mercury/page_editor.html +35 -0
- data/spec/javascripts/templates/mercury/palette.html +16 -0
- data/spec/javascripts/templates/mercury/panel.html +16 -0
- data/spec/javascripts/templates/mercury/region.html +2 -0
- data/spec/javascripts/templates/mercury/regions/editable.html +3 -0
- data/spec/javascripts/templates/mercury/regions/image.html +1 -0
- data/spec/javascripts/templates/mercury/regions/simple.html +3 -0
- data/spec/javascripts/templates/mercury/regions/snippetable.html +4 -0
- data/spec/javascripts/templates/mercury/select.html +16 -0
- data/spec/javascripts/templates/mercury/snippet.html +1 -0
- data/spec/javascripts/templates/mercury/snippet_toolbar.html +16 -0
- data/spec/javascripts/templates/mercury/statusbar.html +8 -0
- data/spec/javascripts/templates/mercury/table_editor.html +65 -0
- data/spec/javascripts/templates/mercury/toolbar.button.html +64 -0
- data/spec/javascripts/templates/mercury/toolbar.button_group.html +9 -0
- data/spec/javascripts/templates/mercury/toolbar.expander.html +18 -0
- data/spec/javascripts/templates/mercury/toolbar.html +11 -0
- data/spec/javascripts/templates/mercury/tooltip.html +12 -0
- data/spec/javascripts/templates/mercury/uploader.html +11 -0
- data/vendor/assets/images/mercury/button.png +0 -0
- data/vendor/assets/images/mercury/close.png +0 -0
- data/vendor/assets/images/mercury/default-snippet.png +0 -0
- data/vendor/assets/images/mercury/loading-dark.gif +0 -0
- data/vendor/assets/images/mercury/loading-light.gif +0 -0
- data/vendor/assets/images/mercury/missing-image.png +0 -0
- data/vendor/assets/images/mercury/search-icon.png +0 -0
- data/vendor/assets/images/mercury/temp-logo.png +0 -0
- data/vendor/assets/images/mercury/toolbar/editable/buttons.png +0 -0
- data/vendor/assets/images/mercury/toolbar/primary/_expander.png +0 -0
- data/vendor/assets/images/mercury/toolbar/primary/_pressed.png +0 -0
- data/vendor/assets/images/mercury/toolbar/primary/historypanel.png +0 -0
- data/vendor/assets/images/mercury/toolbar/primary/insertcharacter.png +0 -0
- data/vendor/assets/images/mercury/toolbar/primary/insertlink.png +0 -0
- data/vendor/assets/images/mercury/toolbar/primary/insertmedia.png +0 -0
- data/vendor/assets/images/mercury/toolbar/primary/inserttable.png +0 -0
- data/vendor/assets/images/mercury/toolbar/primary/inspectorpanel.png +0 -0
- data/vendor/assets/images/mercury/toolbar/primary/notespanel.png +0 -0
- data/vendor/assets/images/mercury/toolbar/primary/preview.png +0 -0
- data/vendor/assets/images/mercury/toolbar/primary/redo.png +0 -0
- data/vendor/assets/images/mercury/toolbar/primary/save.png +0 -0
- data/vendor/assets/images/mercury/toolbar/primary/snippetpanel.png +0 -0
- data/vendor/assets/images/mercury/toolbar/primary/undo.png +0 -0
- data/vendor/assets/images/mercury/toolbar/snippetable/buttons.png +0 -0
- data/vendor/assets/javascripts/mercury.js +479 -0
- data/vendor/assets/javascripts/mercury/dependencies/jquery-1.7.js +9300 -0
- data/vendor/assets/javascripts/mercury/dependencies/jquery-ui-1.8.13.custom.js +1328 -0
- data/vendor/assets/javascripts/mercury/dependencies/jquery.additions.js +206 -0
- data/vendor/assets/javascripts/mercury/dependencies/jquery.htmlClean.js +527 -0
- data/vendor/assets/javascripts/mercury/dependencies/liquidmetal.js +88 -0
- data/vendor/assets/javascripts/mercury/dependencies/showdown.js +1340 -0
- data/vendor/assets/javascripts/mercury/dialog.js.coffee +159 -0
- data/vendor/assets/javascripts/mercury/dialogs/backcolor.js.coffee +6 -0
- data/vendor/assets/javascripts/mercury/dialogs/forecolor.js.coffee +6 -0
- data/vendor/assets/javascripts/mercury/dialogs/formatblock.js.coffee +4 -0
- data/vendor/assets/javascripts/mercury/dialogs/snippetpanel.js.coffee +10 -0
- data/vendor/assets/javascripts/mercury/dialogs/style.js.coffee +4 -0
- data/vendor/assets/javascripts/mercury/finalize.js.coffee +3 -0
- data/vendor/assets/javascripts/mercury/history_buffer.js.coffee +30 -0
- data/vendor/assets/javascripts/mercury/lightview.js.coffee +205 -0
- data/vendor/assets/javascripts/mercury/locales/ar.locale.js.coffee +207 -0
- data/vendor/assets/javascripts/mercury/locales/da.locale.js.coffee +211 -0
- data/vendor/assets/javascripts/mercury/locales/de.locale.js.coffee +206 -0
- data/vendor/assets/javascripts/mercury/locales/es.locale.js.coffee +211 -0
- data/vendor/assets/javascripts/mercury/locales/example.local.js.coffee +211 -0
- data/vendor/assets/javascripts/mercury/locales/fr.locale.js.coffee +211 -0
- data/vendor/assets/javascripts/mercury/locales/it.locale.js.coffee +208 -0
- data/vendor/assets/javascripts/mercury/locales/ko.local.js.coffee +206 -0
- data/vendor/assets/javascripts/mercury/locales/nl.locale.js.coffee +206 -0
- data/vendor/assets/javascripts/mercury/locales/pt.locale.js.coffee +211 -0
- data/vendor/assets/javascripts/mercury/locales/sv.local.js.coffee +209 -0
- data/vendor/assets/javascripts/mercury/locales/swedish_chef.locale.js.coffee +213 -0
- data/vendor/assets/javascripts/mercury/mercury.js.coffee +109 -0
- data/vendor/assets/javascripts/mercury/modal.js.coffee +198 -0
- data/vendor/assets/javascripts/mercury/modals/htmleditor.js.coffee +11 -0
- data/vendor/assets/javascripts/mercury/modals/insertcharacter.js.coffee +4 -0
- data/vendor/assets/javascripts/mercury/modals/insertlink.js.coffee +92 -0
- data/vendor/assets/javascripts/mercury/modals/insertmedia.js.coffee +81 -0
- data/vendor/assets/javascripts/mercury/modals/insertsnippet.js.coffee +12 -0
- data/vendor/assets/javascripts/mercury/modals/inserttable.js.coffee +54 -0
- data/vendor/assets/javascripts/mercury/native_extensions.js.coffee +55 -0
- data/vendor/assets/javascripts/mercury/page_editor.js.coffee +225 -0
- data/vendor/assets/javascripts/mercury/palette.js.coffee +29 -0
- data/vendor/assets/javascripts/mercury/panel.js.coffee +115 -0
- data/vendor/assets/javascripts/mercury/plugins/save_as_xml/mercury/page_editor.js.coffee +28 -0
- data/vendor/assets/javascripts/mercury/plugins/save_as_xml/plugin.js +9 -0
- data/vendor/assets/javascripts/mercury/region.js.coffee +107 -0
- data/vendor/assets/javascripts/mercury/regions/editable.js.coffee +600 -0
- data/vendor/assets/javascripts/mercury/regions/image.js.coffee +114 -0
- data/vendor/assets/javascripts/mercury/regions/markupable.js.coffee +398 -0
- data/vendor/assets/javascripts/mercury/regions/simple.js.coffee +325 -0
- data/vendor/assets/javascripts/mercury/regions/snippetable.js.coffee +124 -0
- data/vendor/assets/javascripts/mercury/select.js.coffee +44 -0
- data/vendor/assets/javascripts/mercury/snippet.js.coffee +106 -0
- data/vendor/assets/javascripts/mercury/snippet_toolbar.js.coffee +72 -0
- data/vendor/assets/javascripts/mercury/statusbar.js.coffee +51 -0
- data/vendor/assets/javascripts/mercury/support/history.js +1 -0
- data/vendor/assets/javascripts/mercury/table_editor.js.coffee +265 -0
- data/vendor/assets/javascripts/mercury/toolbar.button.js.coffee +173 -0
- data/vendor/assets/javascripts/mercury/toolbar.button_group.js.coffee +42 -0
- data/vendor/assets/javascripts/mercury/toolbar.expander.js.coffee +56 -0
- data/vendor/assets/javascripts/mercury/toolbar.js.coffee +86 -0
- data/vendor/assets/javascripts/mercury/tooltip.js.coffee +74 -0
- data/vendor/assets/javascripts/mercury/uploader.js.coffee +244 -0
- data/vendor/assets/javascripts/mercury_loader.js +193 -0
- data/vendor/assets/javascripts/mercury_overrides.js +6 -0
- data/vendor/assets/stylesheets/mercury.css +28 -0
- data/vendor/assets/stylesheets/mercury/all_images.css.erb +89 -0
- data/vendor/assets/stylesheets/mercury/dialog.css +212 -0
- data/vendor/assets/stylesheets/mercury/form.css +118 -0
- data/vendor/assets/stylesheets/mercury/lightview.css +151 -0
- data/vendor/assets/stylesheets/mercury/mercury.css +37 -0
- data/vendor/assets/stylesheets/mercury/modal.css +183 -0
- data/vendor/assets/stylesheets/mercury/statusbar.css +32 -0
- data/vendor/assets/stylesheets/mercury/toolbar.css +304 -0
- data/vendor/assets/stylesheets/mercury/tooltip.css +26 -0
- data/vendor/assets/stylesheets/mercury/uploader.css +111 -0
- data/vendor/assets/stylesheets/mercury_overrides.css +17 -0
- metadata +572 -0
@@ -0,0 +1,159 @@
|
|
1
|
+
# # Mercury Dialog
|
2
|
+
#
|
3
|
+
# Dialog is a base class that's used by Palette, Select, Panel, and through Palette, the Toolbar.Expander. It's basic
|
4
|
+
# function is to provide an interface element that can be opened, interacted with, and then closed.
|
5
|
+
#
|
6
|
+
class @Mercury.Dialog
|
7
|
+
|
8
|
+
# The constructor expects a url to load, a name, and options.
|
9
|
+
#
|
10
|
+
# @url _string_ used to load the contents, either using Ajax or by pulling content from preloadedViews
|
11
|
+
#
|
12
|
+
# @name _string_ used in building of the element, and is assigned as part of the elements class (eg.
|
13
|
+
# `mercury-[name]-dialog`)
|
14
|
+
#
|
15
|
+
# @options _object_
|
16
|
+
#
|
17
|
+
# **Options**
|
18
|
+
#
|
19
|
+
# @for _Toolbar.Button_ used so the dialog can be shown/hidden based on button interactions.
|
20
|
+
#
|
21
|
+
# @preload _boolean_ if true, the view for this dialog will be loaded prior to being shown, otherwise the view will be
|
22
|
+
# loaded the first time it's shown, and cached for all future interactions.
|
23
|
+
#
|
24
|
+
# @appendTo _element_ you can append a dialog to any element by providing this option.
|
25
|
+
constructor: (@url, @name, @options = {}) ->
|
26
|
+
@button = @options.for
|
27
|
+
|
28
|
+
@build()
|
29
|
+
@bindEvents()
|
30
|
+
@preload()
|
31
|
+
|
32
|
+
|
33
|
+
# ## #build
|
34
|
+
#
|
35
|
+
# Builds the element and appends it to the DOM. You can provide an element to append it to in the options, otherwise
|
36
|
+
# it will be appended to the body.
|
37
|
+
build: ->
|
38
|
+
@element = jQuery('<div>', {class: "mercury-dialog mercury-#{@name}-dialog loading", style: 'display:none'})
|
39
|
+
@element.appendTo(jQuery(@options.appendTo).get(0) ? 'body')
|
40
|
+
|
41
|
+
|
42
|
+
# ## #bindEvents
|
43
|
+
#
|
44
|
+
# Bind to all the events we should handle. In this case we only stop the mousedown event, since dialogs aren't
|
45
|
+
# expected to have inputs etc.
|
46
|
+
#
|
47
|
+
# **Note:** By stopping the mousedown event we're limiting what's possible in dialogs, but this is needed to keep
|
48
|
+
# focus from being taken away from the active region when different things are clicked on in dialogs.
|
49
|
+
bindEvents: ->
|
50
|
+
@element.on 'mousedown', (event) ->
|
51
|
+
event.stopPropagation()
|
52
|
+
|
53
|
+
|
54
|
+
# ## #preload
|
55
|
+
#
|
56
|
+
# If the options dictate that the content should be preloaded we load the view before we do anything else. This is
|
57
|
+
# useful if you don't want to make the user wait the half second or however long the server may take to respond when
|
58
|
+
# they open various dialogs.
|
59
|
+
preload: ->
|
60
|
+
@load() if @options.preload
|
61
|
+
|
62
|
+
|
63
|
+
# ## #toggle
|
64
|
+
#
|
65
|
+
# Toggle the dialog based on current visibility.
|
66
|
+
toggle: ->
|
67
|
+
if @visible then @hide() else @show()
|
68
|
+
|
69
|
+
|
70
|
+
# ## #resize
|
71
|
+
#
|
72
|
+
# In the base class resize just calls through to show, but in the implementation classes resize typically adjusts the
|
73
|
+
# size based on it's contents.
|
74
|
+
resize: ->
|
75
|
+
@show()
|
76
|
+
|
77
|
+
|
78
|
+
# ## #show
|
79
|
+
#
|
80
|
+
# When showing a dialog it's expected that all other dialogs will close, and we fire an event for this. The dialog is
|
81
|
+
# then positioned and shown. The show animation of the dialog is typically dictated by the implementation class.
|
82
|
+
show: ->
|
83
|
+
# Tell all other dialogs to close.
|
84
|
+
Mercury.trigger('hide:dialogs', @)
|
85
|
+
@visible = true
|
86
|
+
if @loaded
|
87
|
+
@element.css({width: 'auto', height: 'auto'})
|
88
|
+
@position(@visible)
|
89
|
+
else
|
90
|
+
@position()
|
91
|
+
# Then show the element.
|
92
|
+
@appear()
|
93
|
+
|
94
|
+
|
95
|
+
# ## #position
|
96
|
+
#
|
97
|
+
# Interface method. Implementations are expected to position the dialog themselves.
|
98
|
+
#
|
99
|
+
# @keepVisible _boolean_ specifies if the element should stay visible if it's already visible.
|
100
|
+
position: (keepVisible) ->
|
101
|
+
|
102
|
+
|
103
|
+
# ## #appear
|
104
|
+
#
|
105
|
+
# Animate the element into view. After it's done showing, we load and resize it if it's not already loaded, so in
|
106
|
+
# cases where content is not preloaded we can display the dialog, fill it's contents, and then animate the resize.
|
107
|
+
appear: ->
|
108
|
+
@element.css({display: 'block', opacity: 0})
|
109
|
+
@element.animate {opacity: 0.95}, 200, 'easeInOutSine', =>
|
110
|
+
@load(=> @resize()) unless @loaded
|
111
|
+
|
112
|
+
|
113
|
+
# ## #hide
|
114
|
+
#
|
115
|
+
# Hides the element and keeps track of it's visibility.
|
116
|
+
hide: ->
|
117
|
+
@element.hide()
|
118
|
+
@visible = false
|
119
|
+
|
120
|
+
|
121
|
+
# ## #load
|
122
|
+
#
|
123
|
+
# Fetches the content that will be loaded into the dialog.
|
124
|
+
#
|
125
|
+
# @callback _function_ will be called after the content is loaded.
|
126
|
+
load: (callback) ->
|
127
|
+
return unless @url
|
128
|
+
if Mercury.preloadedViews[@url]
|
129
|
+
# If there's a preloadedView defined for the url being requested, load that one.
|
130
|
+
@loadContent(Mercury.preloadedViews[@url])
|
131
|
+
# And call the dialog handler if there's one. We've broken the handlers out into separate files so they can be
|
132
|
+
# tested more easily, but you can define your own by putting them in dialogHandlers.
|
133
|
+
Mercury.dialogHandlers[@name].call(@) if Mercury.dialogHandlers[@name]
|
134
|
+
callback() if callback
|
135
|
+
else
|
136
|
+
# Otherwise make an Ajax request to get the content.
|
137
|
+
jQuery.ajax @url, {
|
138
|
+
success: (data) =>
|
139
|
+
@loadContent(data)
|
140
|
+
Mercury.dialogHandlers[@name].call(@) if Mercury.dialogHandlers[@name]
|
141
|
+
callback() if callback
|
142
|
+
error: =>
|
143
|
+
# If the Ajax fails, we hide the dialog and alert the user about the error.
|
144
|
+
@hide()
|
145
|
+
@button.removeClass('pressed') if @button
|
146
|
+
Mercury.notify('Mercury was unable to load %s for the "%s" dialog.', @url, @name)
|
147
|
+
}
|
148
|
+
|
149
|
+
|
150
|
+
# ## #loadContent
|
151
|
+
#
|
152
|
+
# Loads content into the element, and removes the loading class.
|
153
|
+
#
|
154
|
+
# @data _mixed_ a string or jQuery object that can be inserted into the dialog.
|
155
|
+
loadContent: (data) ->
|
156
|
+
@loaded = true
|
157
|
+
@element.removeClass('loading')
|
158
|
+
@element.html(data)
|
159
|
+
@element.localize(Mercury.locale()) if Mercury.config.localization.enabled
|
@@ -0,0 +1,6 @@
|
|
1
|
+
@Mercury.dialogHandlers.backColor = ->
|
2
|
+
@element.find('.picker, .last-picked').on 'click', (event) =>
|
3
|
+
color = jQuery(event.target).css('background-color')
|
4
|
+
@element.find('.last-picked').css({background: color})
|
5
|
+
@button.css({backgroundColor: color})
|
6
|
+
Mercury.trigger('action', {action: 'backColor', value: color})
|
@@ -0,0 +1,6 @@
|
|
1
|
+
@Mercury.dialogHandlers.foreColor = ->
|
2
|
+
@element.find('.picker, .last-picked').on 'click', (event) =>
|
3
|
+
color = jQuery(event.target).css('background-color')
|
4
|
+
@element.find('.last-picked').css({background: color})
|
5
|
+
@button.css({backgroundColor: color})
|
6
|
+
Mercury.trigger('action', {action: 'foreColor', value: color})
|
@@ -0,0 +1,10 @@
|
|
1
|
+
@Mercury.dialogHandlers.snippetPanel = ->
|
2
|
+
# make the filter work
|
3
|
+
@element.find('input.filter').on 'keyup', =>
|
4
|
+
value = @element.find('input.filter').val()
|
5
|
+
for snippet in @element.find('li[data-filter]')
|
6
|
+
if LiquidMetal.score(jQuery(snippet).data('filter'), value) == 0 then jQuery(snippet).hide() else jQuery(snippet).show()
|
7
|
+
|
8
|
+
# when an element is dragged, set it so we have a global object
|
9
|
+
@element.find('img[data-snippet]').on 'dragstart', ->
|
10
|
+
Mercury.snippet = jQuery(@).data('snippet')
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class @Mercury.HistoryBuffer
|
2
|
+
|
3
|
+
constructor: (@maxLength = 200) ->
|
4
|
+
@index = 0
|
5
|
+
@stack = []
|
6
|
+
@markerRegExp = /<em class="mercury-marker"><\/em>/g
|
7
|
+
|
8
|
+
|
9
|
+
push: (item) ->
|
10
|
+
if jQuery.type(item) == 'string'
|
11
|
+
return if @stack[@index] && @stack[@index].replace(@markerRegExp, '') == item.replace(@markerRegExp, '')
|
12
|
+
else if jQuery.type(item) == 'object' && item.html
|
13
|
+
return if @stack[@index] && @stack[@index].html == item.html
|
14
|
+
|
15
|
+
@stack = @stack[0...@index + 1]
|
16
|
+
@stack.push(item)
|
17
|
+
@stack.shift() if @stack.length > @maxLength
|
18
|
+
@index = @stack.length - 1
|
19
|
+
|
20
|
+
|
21
|
+
undo: ->
|
22
|
+
return null if @index < 1
|
23
|
+
@index -= 1
|
24
|
+
return @stack[@index]
|
25
|
+
|
26
|
+
|
27
|
+
redo: ->
|
28
|
+
return null if @index >= @stack.length - 1
|
29
|
+
@index += 1
|
30
|
+
return @stack[@index]
|
@@ -0,0 +1,205 @@
|
|
1
|
+
@Mercury.lightview = (url, options = {}) ->
|
2
|
+
Mercury.lightview.show(url, options)
|
3
|
+
return Mercury.lightview
|
4
|
+
|
5
|
+
jQuery.extend Mercury.lightview,
|
6
|
+
minWidth: 400
|
7
|
+
|
8
|
+
show: (@url, @options = {}) ->
|
9
|
+
Mercury.trigger('focus:window')
|
10
|
+
@initialize()
|
11
|
+
if @visible then @update() else @appear()
|
12
|
+
if @options.content
|
13
|
+
setTimeout 500, => @loadContent(@options.content)
|
14
|
+
|
15
|
+
|
16
|
+
initialize: ->
|
17
|
+
return if @initialized
|
18
|
+
@build()
|
19
|
+
@bindEvents()
|
20
|
+
@initialized = true
|
21
|
+
|
22
|
+
|
23
|
+
build: ->
|
24
|
+
@element = jQuery('<div>', {class: 'mercury-lightview loading'})
|
25
|
+
@element.html('<h1 class="mercury-lightview-title"><span></span></h1>')
|
26
|
+
@element.append('<div class="mercury-lightview-content"></div>')
|
27
|
+
|
28
|
+
@overlay = jQuery('<div>', {class: 'mercury-lightview-overlay'})
|
29
|
+
|
30
|
+
@titleElement = @element.find('.mercury-lightview-title')
|
31
|
+
@titleElement.append('<a class="mercury-lightview-close"></a>') if @options.closeButton
|
32
|
+
|
33
|
+
@contentElement = @element.find('.mercury-lightview-content')
|
34
|
+
|
35
|
+
@element.appendTo(jQuery(@options.appendTo).get(0) ? 'body')
|
36
|
+
@overlay.appendTo(jQuery(@options.appendTo).get(0) ? 'body')
|
37
|
+
|
38
|
+
|
39
|
+
bindEvents: ->
|
40
|
+
Mercury.on 'refresh', => @resize(true)
|
41
|
+
Mercury.on 'resize', => @position() if @visible
|
42
|
+
|
43
|
+
@overlay.on 'click', =>
|
44
|
+
@hide() unless @options.closeButton
|
45
|
+
|
46
|
+
@titleElement.find('.mercury-lightview-close').on 'click', =>
|
47
|
+
@hide()
|
48
|
+
|
49
|
+
@element.on 'ajax:beforeSend', (event, xhr, options) =>
|
50
|
+
options.success = (content) =>
|
51
|
+
@loadContent(content)
|
52
|
+
|
53
|
+
jQuery(document).on 'keydown', (event) =>
|
54
|
+
@hide() if event.keyCode == 27 && @visible
|
55
|
+
|
56
|
+
|
57
|
+
appear: ->
|
58
|
+
@showing = true
|
59
|
+
@position()
|
60
|
+
|
61
|
+
@overlay.show().css({opacity: 0})
|
62
|
+
@overlay.animate {opacity: 1}, 200, 'easeInOutSine', =>
|
63
|
+
@setTitle()
|
64
|
+
@element.show().css({opacity: 0})
|
65
|
+
@element.stop().animate {opacity: 1}, 200, 'easeInOutSine', =>
|
66
|
+
@visible = true
|
67
|
+
@showing = false
|
68
|
+
@load()
|
69
|
+
|
70
|
+
|
71
|
+
resize: (keepVisible) ->
|
72
|
+
visibility = if keepVisible then 'visible' else 'hidden'
|
73
|
+
|
74
|
+
viewportWidth = Mercury.displayRect.width
|
75
|
+
viewportHeight = Mercury.displayRect.fullHeight
|
76
|
+
|
77
|
+
titleHeight = @titleElement.outerHeight()
|
78
|
+
|
79
|
+
width = @contentElement.outerWidth()
|
80
|
+
width = viewportWidth - 40 if width > viewportWidth - 40 || @options.fullSize
|
81
|
+
|
82
|
+
@contentPane.css({height: 'auto'}) if @contentPane
|
83
|
+
@contentElement.css({height: 'auto', visibility: visibility, display: 'block'})
|
84
|
+
|
85
|
+
height = @contentElement.outerHeight() + titleHeight
|
86
|
+
height = viewportHeight - 20 if height > viewportHeight - 20 || @options.fullSize
|
87
|
+
|
88
|
+
width = 300 if width < 300
|
89
|
+
height = 150 if height < 150
|
90
|
+
|
91
|
+
@element.stop().animate {top: ((viewportHeight - height) / 2) + 10, left: (Mercury.displayRect.width - width) / 2, width: width, height: height}, 200, 'easeInOutSine', =>
|
92
|
+
@contentElement.css({visibility: 'visible', display: 'block'})
|
93
|
+
if @contentPane.length
|
94
|
+
@contentElement.css({height: height - titleHeight, overflow: 'visible'})
|
95
|
+
controlHeight = if @contentControl.length then @contentControl.outerHeight() else 0
|
96
|
+
@contentPane.css({height: height - titleHeight - controlHeight - 40})
|
97
|
+
@contentPane.find('.mercury-display-pane').css({width: width - 40})
|
98
|
+
else
|
99
|
+
@contentElement.css({height: height - titleHeight - 30, overflow: 'auto'})
|
100
|
+
|
101
|
+
|
102
|
+
position: ->
|
103
|
+
viewportWidth = Mercury.displayRect.width
|
104
|
+
viewportHeight = Mercury.displayRect.fullHeight
|
105
|
+
|
106
|
+
@contentPane.css({height: 'auto'}) if @contentPane
|
107
|
+
@contentElement.css({height: 'auto'})
|
108
|
+
@element.css({width: 'auto', height: 'auto', display: 'block', visibility: 'hidden'})
|
109
|
+
|
110
|
+
width = @contentElement.width() + 40
|
111
|
+
height = @contentElement.height() + @titleElement.outerHeight() + 30
|
112
|
+
|
113
|
+
width = viewportWidth - 40 if width > viewportWidth - 40 || @options.fullSize
|
114
|
+
height = viewportHeight - 20 if height > viewportHeight - 20 || @options.fullSize
|
115
|
+
|
116
|
+
width = 300 if width < 300
|
117
|
+
height = 150 if height < 150
|
118
|
+
|
119
|
+
titleHeight = @titleElement.outerHeight()
|
120
|
+
if @contentPane && @contentPane.length
|
121
|
+
@contentElement.css({height: height - titleHeight, overflow: 'visible'})
|
122
|
+
controlHeight = if @contentControl.length then @contentControl.outerHeight() else 0
|
123
|
+
@contentPane.css({height: height - titleHeight - controlHeight - 40})
|
124
|
+
@contentPane.find('.mercury-display-pane').css({width: width - 40})
|
125
|
+
else
|
126
|
+
@contentElement.css({height: height - titleHeight - 30, overflow: 'auto'})
|
127
|
+
|
128
|
+
@element.css {
|
129
|
+
top: ((viewportHeight - height) / 2) + 10,
|
130
|
+
left: (viewportWidth - width) / 2,
|
131
|
+
width: width
|
132
|
+
height: height
|
133
|
+
display: if @visible then 'block' else 'none'
|
134
|
+
visibility: 'visible'
|
135
|
+
}
|
136
|
+
|
137
|
+
|
138
|
+
update: ->
|
139
|
+
@reset()
|
140
|
+
@resize()
|
141
|
+
@load()
|
142
|
+
|
143
|
+
|
144
|
+
load: ->
|
145
|
+
@setTitle()
|
146
|
+
return unless @url
|
147
|
+
@element.addClass('loading')
|
148
|
+
if Mercury.preloadedViews[@url]
|
149
|
+
setTimeout(10, => @loadContent(Mercury.preloadedViews[@url]))
|
150
|
+
else
|
151
|
+
jQuery.ajax @url, {
|
152
|
+
headers: Mercury.ajaxHeaders()
|
153
|
+
type: @options.loadType || 'GET'
|
154
|
+
data: @options.loadData
|
155
|
+
success: (data) => @loadContent(data)
|
156
|
+
error: =>
|
157
|
+
@hide()
|
158
|
+
Mercury.notify('Mercury was unable to load %s for the lightview.', @url)
|
159
|
+
}
|
160
|
+
|
161
|
+
|
162
|
+
loadContent: (data, options = null) ->
|
163
|
+
@initialize()
|
164
|
+
@options = options || @options
|
165
|
+
@setTitle()
|
166
|
+
@loaded = true
|
167
|
+
@element.removeClass('loading')
|
168
|
+
@contentElement.html(data)
|
169
|
+
@contentElement.css({display: 'none', visibility: 'hidden'})
|
170
|
+
|
171
|
+
# for complex lightview content, we provide panes and controls
|
172
|
+
@contentPane = @element.find('.mercury-display-pane-container')
|
173
|
+
@contentControl = @element.find('.mercury-display-controls')
|
174
|
+
|
175
|
+
@options.afterLoad.call(@) if @options.afterLoad
|
176
|
+
if @options.handler
|
177
|
+
if Mercury.modalHandlers[@options.handler]
|
178
|
+
Mercury.modalHandlers[@options.handler].call(@)
|
179
|
+
else if Mercury.lightviewHandlers[@options.handler]
|
180
|
+
Mercury.lightviewHandlers[@options.handler].call(@)
|
181
|
+
|
182
|
+
@element.localize(Mercury.locale()) if Mercury.config.localization.enabled
|
183
|
+
@resize()
|
184
|
+
|
185
|
+
|
186
|
+
setTitle: ->
|
187
|
+
@titleElement.find('span').html(Mercury.I18n(@options.title))
|
188
|
+
|
189
|
+
|
190
|
+
reset: ->
|
191
|
+
@titleElement.find('span').html('')
|
192
|
+
@contentElement.html('')
|
193
|
+
|
194
|
+
|
195
|
+
hide: ->
|
196
|
+
return if @showing
|
197
|
+
@options = {}
|
198
|
+
@initialized = false
|
199
|
+
|
200
|
+
Mercury.trigger('focus:frame')
|
201
|
+
@element.hide()
|
202
|
+
@overlay.hide()
|
203
|
+
@reset()
|
204
|
+
|
205
|
+
@visible = false
|
@@ -0,0 +1,207 @@
|
|
1
|
+
Mercury.I18n['ar'] =
|
2
|
+
# ## Javascript Strings
|
3
|
+
|
4
|
+
# ### Default Configuration
|
5
|
+
"Save": "حفظ"
|
6
|
+
"Save this page": "حفظ الصفحة"
|
7
|
+
"Preview": "معاينة"
|
8
|
+
"Preview this page": "معاينة هذه الضفحة"
|
9
|
+
"Undo": "تراجع"
|
10
|
+
"Undo your last action": "تراجع عن أخر فعل"
|
11
|
+
"Redo": "إعادة"
|
12
|
+
"Redo your last action": "إعادة أخر فعل"
|
13
|
+
"Link": "رابط"
|
14
|
+
"Insert Link": "إدراج رابط"
|
15
|
+
"Media": "ملف ميديا"
|
16
|
+
"Insert Media (images and videos)": "إدراج ملف ميديا (صور أو فيديو)"
|
17
|
+
"Table": "جدول"
|
18
|
+
"Insert Table": "إدراج جدول"
|
19
|
+
"Character": "حرف"
|
20
|
+
"Special Characters": "حرف مميز "
|
21
|
+
"Snippet": "قصاصة"
|
22
|
+
"Snippet Panel": "لوحة قصاصات"
|
23
|
+
"History": "سجل"
|
24
|
+
"Page Version History": "نسج مسجلة من الصفحة"
|
25
|
+
"Notes": "ملاحظات"
|
26
|
+
"Page Notes": "ملاحظات الصفحة"
|
27
|
+
"Style": "نمط"
|
28
|
+
"Block Format": "تنسيق كتلة"
|
29
|
+
"Background Color": "لون الخلفية"
|
30
|
+
"Text Color": "لون النص"
|
31
|
+
"Bold": "واضح"
|
32
|
+
"Italicize": "مائلة"
|
33
|
+
"Overline": "خط فوق"
|
34
|
+
"Strikethrough": " خط فى الوسط "
|
35
|
+
"Underline": "خط تحت"
|
36
|
+
"Subscript": " نص سفلى"
|
37
|
+
"Superscript": " نص علوى"
|
38
|
+
"Align Left": "محاذاة إلى اليسار"
|
39
|
+
"Center": "محاذاة إلى الوسط"
|
40
|
+
"Align Right": "محاذاة إلى اليمين"
|
41
|
+
"Justify Full": "ضبط كامل"
|
42
|
+
"Unordered List": "قائمة غير مرتبة"
|
43
|
+
"Numbered List": "قائمة مرقمة"
|
44
|
+
"Decrease Indentation": "إنقاص المسافة البادئة"
|
45
|
+
"Increase Indentation": "زيادة المسافة البادئة"
|
46
|
+
"Insert Table Row": "إدراج صف "
|
47
|
+
"Insert a table row before the cursor": "إدراج صف قبل المؤشر"
|
48
|
+
"Insert a table row after the cursor": "إدراج صف بعد المؤشر"
|
49
|
+
"Delete Table Row": "حذف صف"
|
50
|
+
"Delete this table row": "حذف هذا الصف"
|
51
|
+
"Insert Table Column": "إضافة عمود للجدول"
|
52
|
+
"Insert a table column before the cursor": "إدراج عمود قبل المؤشر"
|
53
|
+
"Insert a table column after the cursor": "إدراج عمود بعد المؤشر"
|
54
|
+
"Delete Table Column": "حذف عمود جدول"
|
55
|
+
"Delete this table column": "حذف هذا العمود"
|
56
|
+
"Increase Cell Columns": "زيادة أعمدة الخلية"
|
57
|
+
"Decrease Cell Columns": "إنقاص أعمدة الخلية"
|
58
|
+
"Increase Cell Rows": "زيادة صفوف الخلية"
|
59
|
+
"Decrease Cell Rows": "إنقاص صفوف الخلية"
|
60
|
+
"Horizontal Rule": "مسطرة أفقية"
|
61
|
+
"Insert a horizontal rule": "إدراج مسطرة أفقية"
|
62
|
+
"Remove Formatting": "إزالة التنسيق"
|
63
|
+
"Remove formatting for the selection": "إزالة التنسيق لاختيار"
|
64
|
+
"Edit HTML": "تعديل ال HTML"
|
65
|
+
"Edit the HTML content": "تعديل ال HTML"
|
66
|
+
"Edit Snippet Settings": "تعديل ضبط قصاصة"
|
67
|
+
"Remove Snippet": "إزالة القصاصات"
|
68
|
+
|
69
|
+
# ### General
|
70
|
+
# Error Messages
|
71
|
+
"Mercury.Regions.%s is unsupported in this client. Supported browsers are %s.": "Mercury.Regions.%s غير غير مدعوم فى هذا المتصفح. المتصفحات المدعومة هى %s"
|
72
|
+
"Mercury.PageEditor can only be instantiated once.": "Mercury.PageEditor لا يمكن إلا أن يمثل مرة واحدة.."
|
73
|
+
"Opera isn't a fully supported browser, your results may not be optimal.": "أوبرا ليست متصفح متوافق بالكامل، قد لا تكون نتائجك الأمثل."
|
74
|
+
"Mercury.PageEditor failed to load: %s\n\nPlease try refreshing.": "Mercury.PageEditor غير قاد على تحميل: %s\n\nمن فضلك حدث الصفحة ."
|
75
|
+
"Region type is malformed, no data-type provided, or \"%s\" is unknown for the \"%s\" region.": "نوع المساحة تالف, لا يوجد نوع , أو \"%s\" غير معروف للمساحة \"%s\""
|
76
|
+
"Mercury was unable to save to the url: %s": "غير قادر على حفظ الرابط: %s"
|
77
|
+
# Confirmations
|
78
|
+
"You have unsaved changes.Are you sure you want to leave without saving them first?": "لديك تغييرات غير محفوظة. هل أنت متأكد أنك تريد أن تترك دون حفظها أولا؟"
|
79
|
+
|
80
|
+
# ### Toolbar / Buttons
|
81
|
+
# Error Messages
|
82
|
+
"Unknown button type \"%s\" used for the \"%s\" button.": "نوع زر غير معروف \"%s\" مستخدمة ل \"%s\""
|
83
|
+
"Unknown button structure -- please provide an array, object, or string for \"%s\".": "بنية زر غير معروفة - يرجى تقديم مجموعة واسعة، كائنات، أو كلمة \"%s\"."
|
84
|
+
|
85
|
+
# ### Modals / Dialogs / Etc.
|
86
|
+
# Error Messages
|
87
|
+
"Mercury was unable to load %s for the \"%s\" dialog.": "غير قادر على تحميل %s للنافذة \"%s\"."
|
88
|
+
"Mercury was unable to load %s for the lightview.": "غير قادر على تحميل %s للضوء."
|
89
|
+
"Mercury was unable to load %s for the modal.": "غير قادر على تحميل %s للنافذة."
|
90
|
+
|
91
|
+
# ### Snippets
|
92
|
+
# Error Messages
|
93
|
+
"Error loading the preview for the \"%s\" snippet.": "خطأ فى تحميل معاينة القصاصة \"%s\"."
|
94
|
+
# Misc
|
95
|
+
"Snippet Options": "خيارات القصاصة"
|
96
|
+
|
97
|
+
# ### Uploader
|
98
|
+
# Error Messages
|
99
|
+
"Unable to process response: %s": "غير قادر على معالجة الرد: %s"
|
100
|
+
"Error: Unable to upload the file": "خطأ: غير قادر على رفع الملف"
|
101
|
+
"Malformed response from server": "استجابة من الخادم متلوفة"
|
102
|
+
"Too large": "كبير جدا"
|
103
|
+
"Unsupported format": "تنسيق غير مدعوم"
|
104
|
+
# Statuses
|
105
|
+
"Processing...": "معالجة..."
|
106
|
+
"Uploading...": "رفع..."
|
107
|
+
"Aborted": "ملغى"
|
108
|
+
"Successfully uploaded...": "تم الرفع بنجاح..."
|
109
|
+
"Name: %s": "اسم: %s"
|
110
|
+
"Size: %s": "حجم: %s"
|
111
|
+
"Type: %s": "نوع: %s"
|
112
|
+
|
113
|
+
# Inserting Media
|
114
|
+
"Error: The provided youtube share url was invalid.": "خطأ: عنوان اليوتيوب غير صحيح"
|
115
|
+
"Error: The provided vimeo url was invalid.": "خطأ: عنوان فيميو غير صحيح"
|
116
|
+
|
117
|
+
# Statusbar
|
118
|
+
"Path:": "مسار:"
|
119
|
+
|
120
|
+
|
121
|
+
# ## HTML / Template Strings
|
122
|
+
|
123
|
+
# ### Modals
|
124
|
+
# Insert Link Modal (link.html)
|
125
|
+
"Link Content": "محتوى الرابط"
|
126
|
+
"Standard Links": "رابط قياسى"
|
127
|
+
"URL": "عنوان"
|
128
|
+
"Index / Bookmark Links": "روابط فهرس / الإشارة المرجعية"
|
129
|
+
"Existing Links": "الروابط الموجودة"
|
130
|
+
"Bookmark": "الإشارة المرجعية"
|
131
|
+
"Options": "خيارات"
|
132
|
+
"Link Target": "هدف الرابط"
|
133
|
+
"Self (the same window or tab)": "الذاتية (نفس النافذة أو التبويب)"
|
134
|
+
"Blank (a new window or tab)": "فارغة (نافذة جديدة أو علامة التبويب)"
|
135
|
+
"Top (removes any frames)": "أعلى (يزيل أي إطارات)"
|
136
|
+
"Popup Window (javascript new window popup)": "نافذة منبثقة (جافا سكريبت نافذة منبثقة جديد)"
|
137
|
+
"Popup Width": "عرض النافذة المنبثقة"
|
138
|
+
"Popup Height": "طول النافذة المنبثقة"
|
139
|
+
"Insert Link": "إدراج رابط"
|
140
|
+
|
141
|
+
# Insert Media Modal (media.html)
|
142
|
+
"Images": "صور"
|
143
|
+
"Videos": "فيديو"
|
144
|
+
"YouTube Share URL": "رابط يوتيوب"
|
145
|
+
"Vimeo URL": "رابط فيميو"
|
146
|
+
"Alignment": "المحاذاة"
|
147
|
+
"None": "لا شيء"
|
148
|
+
"Left": "يسار"
|
149
|
+
"Right": "يمين"
|
150
|
+
"Top": "أعلى"
|
151
|
+
"Middle": "وسط"
|
152
|
+
"Bottom": "أسفل"
|
153
|
+
"Absolute Middle": "أوسط مطلق"
|
154
|
+
"Absolute Bottom": "أسفل مطلق"
|
155
|
+
"Width": "عرض"
|
156
|
+
"Height": "ارتفاع"
|
157
|
+
"Insert Media": "إدراج ملف ميديا"
|
158
|
+
|
159
|
+
# Insert Table Modal (table.html)
|
160
|
+
"Rows": "صفوف"
|
161
|
+
"Add Before": "إضافة قبل"
|
162
|
+
"Add After": "إضافة بعد"
|
163
|
+
"Remove": "حذف"
|
164
|
+
"Columns": "أعمدة"
|
165
|
+
"Row Span": "إمتداد الصف"
|
166
|
+
"Column Span": "إمتداد العمود"
|
167
|
+
"Options": "الخيارات"
|
168
|
+
"Alignment": "المحاذاة"
|
169
|
+
"Border": "الحدود"
|
170
|
+
"Spacing": "تباعد"
|
171
|
+
"Insert Table": "إدراج جدول"
|
172
|
+
|
173
|
+
# HTML Editor Modal (htmleditor.html)
|
174
|
+
"HTML Editor": "HTML محرر"
|
175
|
+
"Save and Replace": "حفظ واستبدال"
|
176
|
+
|
177
|
+
# ### Dialogs / Etc.
|
178
|
+
# Color Palettes (forecolor.html, backcolor.html)
|
179
|
+
"Last Color Picked": "التقطت آخر لون"
|
180
|
+
|
181
|
+
# Block Format Select (formatblock.html)
|
182
|
+
"Heading 1": "العنوان 1"
|
183
|
+
"Heading 2": "العنوان 2"
|
184
|
+
"Heading 3": "العنوان 3"
|
185
|
+
"Heading 4": "العنوان 4"
|
186
|
+
"Heading 5": "العنوان 5"
|
187
|
+
"Heading 6": "العنوان 6"
|
188
|
+
"Paragraph": "فقرة"
|
189
|
+
"Blockquote": "قتباس فقرة"
|
190
|
+
"Formatted": "منسقة"
|
191
|
+
|
192
|
+
# About Mercury Panel (about.html)
|
193
|
+
"Project Home": "صفحة المشروع"
|
194
|
+
"Project Source": "مصدر المشروع"
|
195
|
+
|
196
|
+
# ### Demo / Placeholder / Defaults
|
197
|
+
"The history panel is expected to be implemented with a server back end. Since this is a demo, we didn't include it.": "لوحة التواريخ متوقع أن تكن مبرمجة. بما أن هد نسخة تجربية فهى غير محتواه."
|
198
|
+
|
199
|
+
"The notes panel is expected to be implemented with a server back end. Since this is a demo, we didn't include it.": "لوحة الملاحظات متوقع أن تكن مبرمجة. بما أن هد نسخة تجربية فهى غير محتواه"
|
200
|
+
|
201
|
+
"Snippet Name": "اسم قصاصة"
|
202
|
+
"A one or two line long description of what this snippet does.": "وصف سطر واحد أو اثنين عما تفعل هذه القصاصة."
|
203
|
+
|
204
|
+
"First Name": "اﻷسم اﻷول"
|
205
|
+
"Favorite Beer": "المفضلة"
|
206
|
+
"Insert Snippet": "إدراج قصاصة"
|
207
|
+
|