alchemy_cms 3.0.0.rc5 → 3.0.0.rc6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -5
- data/README.md +32 -5
- data/alchemy_cms.gemspec +1 -1
- data/app/assets/javascripts/alchemy/alchemy.buttons.js.coffee +3 -3
- data/app/assets/javascripts/alchemy/alchemy.char_counter.js.coffee +19 -0
- data/app/assets/javascripts/alchemy/alchemy.confirm_dialog.js.coffee +5 -0
- data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +3 -2
- data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.coffee +2 -0
- data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +2 -26
- data/app/assets/javascripts/alchemy/alchemy.file_progress.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +2 -0
- data/app/assets/javascripts/alchemy/alchemy.i18n.js.coffee +12 -7
- data/app/assets/javascripts/alchemy/alchemy.js +1 -1
- data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +33 -4
- data/app/assets/javascripts/alchemy/alchemy.preview_window.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee +2 -13
- data/app/assets/javascripts/alchemy/{alchemy.tinymce.js.coffee.erb → alchemy.tinymce.js.coffee} +1 -25
- data/app/assets/javascripts/alchemy/alchemy.translations.js.coffee +63 -105
- data/app/assets/javascripts/alchemy/alchemy.uploader.js.coffee +3 -3
- data/app/assets/stylesheets/alchemy/_extends.scss +2 -8
- data/app/assets/stylesheets/alchemy/_mixins.scss +4 -9
- data/app/assets/stylesheets/alchemy/base.scss +6 -6
- data/app/assets/stylesheets/alchemy/buttons.scss +56 -29
- data/app/assets/stylesheets/alchemy/elements.scss +66 -14
- data/app/assets/stylesheets/alchemy/form_fields.scss +39 -6
- data/app/assets/stylesheets/alchemy/forms.scss +32 -0
- data/app/assets/stylesheets/alchemy/frame.scss +44 -44
- data/app/assets/stylesheets/alchemy/icons.scss +2 -2
- data/app/assets/stylesheets/alchemy/jquery-ui.scss +2 -0
- data/app/assets/stylesheets/alchemy/notices.scss +6 -0
- data/app/assets/stylesheets/alchemy/selects.scss +10 -0
- data/app/assets/stylesheets/alchemy/sitemap.scss +8 -10
- data/app/assets/stylesheets/alchemy/toolbar.scss +40 -31
- data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +11 -22
- data/app/controllers/alchemy/admin/base_controller.rb +14 -1
- data/app/controllers/alchemy/admin/elements_controller.rb +4 -2
- data/app/controllers/alchemy/admin/layoutpages_controller.rb +5 -0
- data/app/controllers/alchemy/admin/legacy_page_urls_controller.rb +39 -0
- data/app/controllers/alchemy/admin/pages_controller.rb +0 -3
- data/app/controllers/alchemy/base_controller.rb +7 -4
- data/app/helpers/alchemy/admin/base_helper.rb +33 -3
- data/app/helpers/alchemy/pages_helper.rb +1 -1
- data/app/models/alchemy/element.rb +6 -4
- data/app/models/alchemy/legacy_page_url.rb +5 -1
- data/app/models/alchemy/message.rb +2 -2
- data/app/models/alchemy/page.rb +8 -9
- data/app/models/alchemy/page/{cells.rb → page_cells.rb} +1 -1
- data/app/models/alchemy/page/{elements.rb → page_elements.rb} +1 -1
- data/app/models/alchemy/page/{naming.rb → page_naming.rb} +33 -18
- data/app/models/alchemy/page/{natures.rb → page_natures.rb} +1 -1
- data/app/models/alchemy/page/{scopes.rb → page_scopes.rb} +1 -1
- data/app/models/alchemy/page/{users.rb → page_users.rb} +13 -1
- data/app/views/alchemy/admin/elements/_add_element_button.html.erb +18 -0
- data/app/views/alchemy/admin/elements/_add_picture.html.erb +1 -1
- data/app/views/alchemy/admin/elements/_element.html.erb +12 -11
- data/app/views/alchemy/admin/elements/_new_element_form.html.erb +3 -0
- data/app/views/alchemy/admin/elements/create.js.erb +3 -3
- data/app/views/alchemy/admin/elements/index.html.erb +19 -4
- data/app/views/alchemy/admin/elements/new.html.erb +3 -0
- data/app/views/alchemy/admin/elements/trash.js.erb +16 -12
- data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +1 -1
- data/app/views/alchemy/admin/layoutpages/edit.html.erb +11 -0
- data/app/views/alchemy/admin/layoutpages/index.html.erb +4 -16
- data/app/views/alchemy/admin/legacy_page_urls/_form.html.erb +5 -0
- data/app/views/alchemy/admin/legacy_page_urls/_label.html.erb +1 -0
- data/app/views/alchemy/admin/legacy_page_urls/_legacy_page_url.html.erb +13 -0
- data/app/views/alchemy/admin/legacy_page_urls/_new.html.erb +20 -0
- data/app/views/alchemy/admin/legacy_page_urls/create.js.erb +10 -0
- data/app/views/alchemy/admin/legacy_page_urls/destroy.js.erb +6 -0
- data/app/views/alchemy/admin/legacy_page_urls/update.js.erb +2 -0
- data/app/views/alchemy/admin/pages/_form.html.erb +58 -0
- data/app/views/alchemy/admin/pages/_internal_link.html.erb +9 -4
- data/app/views/alchemy/admin/pages/_legacy_urls.html.erb +23 -0
- data/app/views/alchemy/admin/pages/_locked_page.html.erb +21 -0
- data/app/views/alchemy/admin/pages/_page.html.erb +2 -2
- data/app/views/alchemy/admin/pages/_page_status.html.erb +11 -9
- data/app/views/alchemy/admin/pages/_tinymce_custom_config.html.erb +13 -0
- data/app/views/alchemy/admin/pages/configure.html.erb +16 -57
- data/app/views/alchemy/admin/pages/edit.html.erb +64 -66
- data/app/views/alchemy/admin/pages/index.html.erb +9 -19
- data/app/views/alchemy/admin/pages/update.js.erb +1 -1
- data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +7 -12
- data/app/views/alchemy/admin/partials/_routes.html.erb +25 -0
- data/app/views/alchemy/admin/partials/_search_form.html.erb +10 -12
- data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +53 -47
- data/app/views/alchemy/admin/pictures/index.html.erb +34 -29
- data/app/views/alchemy/essences/shared/_essence_picture_tools.html.erb +1 -1
- data/app/views/alchemy/navigation/_link.html.erb +9 -9
- data/app/views/alchemy/pages/show.rss.builder +2 -2
- data/app/views/layouts/alchemy/admin.html.erb +20 -9
- data/bin/alchemy +1 -1
- data/config/alchemy/config.yml +1 -0
- data/config/locales/alchemy.de.yml +15 -1
- data/config/locales/alchemy.en.yml +29 -19
- data/config/locales/alchemy.nl.yml +11 -1
- data/config/routes.rb +2 -1
- data/lib/alchemy/errors.rb +2 -2
- data/lib/alchemy/permissions.rb +2 -0
- data/lib/alchemy/resource.rb +22 -9
- data/lib/alchemy/tinymce.rb +13 -7
- data/lib/alchemy/version.rb +1 -1
- data/spec/controllers/admin/base_controller_spec.rb +39 -0
- data/spec/controllers/admin/elements_controller_spec.rb +17 -14
- data/spec/controllers/admin/pages_controller_spec.rb +1 -2
- data/spec/controllers/pages_controller_spec.rb +7 -3
- data/spec/dummy/app/models/dummy_user.rb +12 -2
- data/spec/features/admin/dashboard_spec.rb +45 -0
- data/spec/features/admin/legacy_page_url_management_spec.rb +62 -0
- data/spec/features/admin/page_editing_feature_spec.rb +66 -6
- data/spec/features/page_feature_spec.rb +13 -0
- data/spec/helpers/admin/base_helper_spec.rb +36 -0
- data/spec/libraries/resource_spec.rb +168 -84
- data/spec/libraries/tinymce_spec.rb +10 -0
- data/spec/models/element_spec.rb +16 -0
- data/spec/models/legacy_page_url_spec.rb +21 -0
- data/spec/models/message_spec.rb +23 -7
- data/spec/models/page_spec.rb +89 -12
- data/vendor/assets/javascripts/tinymce/plugins/anchor/plugin.min.js +1 -0
- data/vendor/assets/javascripts/tinymce/plugins/hr/plugin.min.js +1 -0
- metadata +96 -75
- data/app/assets/javascripts/alchemy/alchemy.routes.js.erb +0 -38
- data/spec/models/resource_spec.rb +0 -159
data/app/assets/javascripts/alchemy/{alchemy.tinymce.js.coffee.erb → alchemy.tinymce.js.coffee}
RENAMED
@@ -1,22 +1,6 @@
|
|
1
1
|
# Alchemy Tinymce wrapper
|
2
2
|
#
|
3
|
-
|
4
|
-
|
5
|
-
# Holds the default Alchemy TinyMCE configuration
|
6
|
-
#
|
7
|
-
defaults:
|
8
|
-
plugins: "<%= Alchemy::Tinymce.plugins.join(',') %>"
|
9
|
-
<% Alchemy::Tinymce.init.each do |k, v| %>
|
10
|
-
<%= k %>: <%= v.to_json %>
|
11
|
-
<% end %>
|
12
|
-
|
13
|
-
# Holds custom tinymce configurations
|
14
|
-
#
|
15
|
-
# The key has to be a unique selector in the format of: "element_name_content_name"
|
16
|
-
#
|
17
|
-
# The value has to be a valid tinymce configuration object.
|
18
|
-
#
|
19
|
-
customConfigs: {}
|
3
|
+
$.extend Alchemy.Tinymce,
|
20
4
|
|
21
5
|
# Returns default config for a tinymce editor.
|
22
6
|
#
|
@@ -80,11 +64,3 @@ window.Alchemy.Tinymce =
|
|
80
64
|
editor = tinymce.get("tinymce_#{id}")
|
81
65
|
if editor
|
82
66
|
editor.remove()
|
83
|
-
|
84
|
-
# Populate custom tinymce configurations
|
85
|
-
<% Alchemy::Tinymce.custom_config_contents.each do |content| %>
|
86
|
-
Alchemy.Tinymce.customConfigs["<%= content['element'] %>_<%= content['name'] %>"] =
|
87
|
-
<% content.fetch('settings', {}).fetch('tinymce', {}).each do |k, v| %>
|
88
|
-
<%= k %>: <%= v.to_json %>
|
89
|
-
<% end %>
|
90
|
-
<% end %>
|
@@ -1,110 +1,68 @@
|
|
1
1
|
window.Alchemy = {} if typeof(window.Alchemy) is 'undefined'
|
2
2
|
|
3
|
-
# Holds translations
|
3
|
+
# Holds translations for javascripts
|
4
4
|
#
|
5
5
|
Alchemy.translations =
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
en: "Failed Validation. Upload skipped."
|
70
|
-
nl: "Validatiefout. Upload is stopgezet."
|
71
|
-
zero_byte_file:
|
72
|
-
de: "Datei hat keinen Inhalt!"
|
73
|
-
en: "Cannot upload Zero Byte files!"
|
74
|
-
nl: "Bestand is leeg!"
|
75
|
-
invalid_file:
|
76
|
-
de: "Ungültiger Dateityp!"
|
77
|
-
en: "Invalid File Type!"
|
78
|
-
nl: "Ongeldig bestandstype!"
|
79
|
-
unknown_error:
|
80
|
-
de: "Unbekannter Fehler!"
|
81
|
-
en: "Unhandled Error!"
|
82
|
-
nl: "Onbekende fout!"
|
83
|
-
drag_files_notice:
|
84
|
-
de: "Oder ziehen Sie die Dateien hier rauf"
|
85
|
-
en: "Or drag files over here"
|
86
|
-
nl: "Of sleep bestanden hier naartoe"
|
87
|
-
drop_files_notice:
|
88
|
-
de: "Lassen Sie die Dateien nun los"
|
89
|
-
en: "Now drop the files"
|
90
|
-
nl: "Laat nu de bestanden los"
|
91
|
-
queued_files_notice:
|
92
|
-
de: "x Dateien in der Warteschlange."
|
93
|
-
en: "Queued x files."
|
94
|
-
nl: "x bestanden in de wachtrij gezet."
|
95
|
-
success_notice:
|
96
|
-
de: "x Dateien hochgeladen."
|
97
|
-
en: "Uploaded x files."
|
98
|
-
nl: "x bestanden geupload."
|
99
|
-
url_validation_failed:
|
100
|
-
de: 'Die URL hat kein gültiges Format.'
|
101
|
-
en: 'The url has no valid format.'
|
102
|
-
nl: 'De url heeft geen geldig formaat.'
|
103
|
-
click_to_edit:
|
104
|
-
de: 'Klicken zum Bearbeiten'
|
105
|
-
en: 'click to edit'
|
106
|
-
nl: 'klik om aan te passen'
|
107
|
-
help:
|
108
|
-
de: 'Hilfe'
|
109
|
-
en: 'Help'
|
110
|
-
en: 'Hulp'
|
7
|
+
# German
|
8
|
+
de:
|
9
|
+
allowed_chars: 'von %{count} Zeichen'
|
10
|
+
cancel: 'Abbrechen'
|
11
|
+
cancelled: 'Abgebrochen'
|
12
|
+
click_to_edit: 'Klicken zum Bearbeiten'
|
13
|
+
complete: 'Abgeschlossen'
|
14
|
+
element_dirty_notice: 'Dieses Element hat nicht gespeicherte Änderungen. Möchten Sie es wirklich einklappen?'
|
15
|
+
help: 'Hilfe'
|
16
|
+
ok: 'Ok'
|
17
|
+
page_dirty_notice: 'Sie haben ungesicherte Änderungen auf der Seite. Diese gehen verloren, wenn Sie fortfahren.'
|
18
|
+
page_found: 'Seite gefunden'
|
19
|
+
pages_found: 'Seiten gefunden'
|
20
|
+
url_validation_failed: 'Die URL hat kein gültiges Format.'
|
21
|
+
warning: 'Achtung!'
|
22
|
+
'File is too large': 'Datei ist zu groß.'
|
23
|
+
'File is too small': 'Datei ist zu klein.'
|
24
|
+
'File type not allowed': 'Dateityp nicht erlaubt.'
|
25
|
+
'Maximum number of files exceeded': 'Maximale Anzahl an Dateien erreicht.'
|
26
|
+
'Uploaded bytes exceed file size': 'Maximal erlaubte Dateigröße erreicht.'
|
27
|
+
|
28
|
+
# English
|
29
|
+
en:
|
30
|
+
allowed_chars: 'of %{count} chars'
|
31
|
+
cancel: 'Cancel'
|
32
|
+
cancelled: 'Cancelled'
|
33
|
+
click_to_edit: 'click to edit'
|
34
|
+
complete: 'Complete'
|
35
|
+
element_dirty_notice: 'This element has unsaved changes. Do you really want to fold it?'
|
36
|
+
help: 'Help'
|
37
|
+
ok: 'Ok'
|
38
|
+
page_dirty_notice: 'You have unsaved changes on this page. They will be lost if you continue.'
|
39
|
+
page_found: 'Page found'
|
40
|
+
pages_found: 'Pages found'
|
41
|
+
url_validation_failed: 'The url has no valid format.'
|
42
|
+
warning: 'Warning!'
|
43
|
+
'File is too large': 'File is too large'
|
44
|
+
'File is too small': 'File is too small'
|
45
|
+
'File type not allowed': 'File type not allowed'
|
46
|
+
'Maximum number of files exceeded': 'Maximum number of files exceeded.'
|
47
|
+
'Uploaded bytes exceed file size': 'Uploaded bytes exceed file size'
|
48
|
+
|
49
|
+
# Dutch
|
50
|
+
nl:
|
51
|
+
allowed_chars: 'of %{count} chars'
|
52
|
+
cancel: 'Annuleren'
|
53
|
+
cancelled: 'Afgebroken'
|
54
|
+
click_to_edit: 'klik om aan te passen'
|
55
|
+
complete: 'Klaar'
|
56
|
+
element_dirty_notice: 'Dit element bevat niet opgeslagen wijzigingen. Wilt u dit echt inklappen?'
|
57
|
+
help: 'Hulp'
|
58
|
+
ok: 'Ok'
|
59
|
+
page_found: 'Page found'
|
60
|
+
pages_found: 'Pages found'
|
61
|
+
page_dirty_notice: 'Er zijn wijzigingen op deze pagina aangebracht. Deze gaan verloren als u doorgaat.'
|
62
|
+
url_validation_failed: 'De url heeft geen geldig formaat.'
|
63
|
+
warning: 'Waarschuwing!'
|
64
|
+
'File is too large': 'File is too large'
|
65
|
+
'File is too small': 'File is too small'
|
66
|
+
'File type not allowed': 'File type not allowed'
|
67
|
+
'Maximum number of files exceeded': 'Uploadlimiet bereikt.'
|
68
|
+
'Uploaded bytes exceed file size': 'Uploaded bytes exceed file size'
|
@@ -46,7 +46,7 @@ Alchemy.Uploader = (settings) ->
|
|
46
46
|
data.context.$fileProgressCancel.click (e) ->
|
47
47
|
e.preventDefault()
|
48
48
|
data.context.setCancelled()
|
49
|
-
data.context.setStatus('
|
49
|
+
data.context.setStatus('cancelled')
|
50
50
|
false
|
51
51
|
false
|
52
52
|
else
|
@@ -55,7 +55,7 @@ Alchemy.Uploader = (settings) ->
|
|
55
55
|
e.preventDefault()
|
56
56
|
xhr.abort()
|
57
57
|
data.context.setCancelled()
|
58
|
-
data.context.setStatus('
|
58
|
+
data.context.setStatus('cancelled')
|
59
59
|
false
|
60
60
|
xhr
|
61
61
|
progress: (e, data) ->
|
@@ -70,7 +70,7 @@ Alchemy.Uploader = (settings) ->
|
|
70
70
|
completedUploads += 1
|
71
71
|
$('.uploaded-files-count').text(completedUploads)
|
72
72
|
data.context.setComplete()
|
73
|
-
data.context.setStatus('
|
73
|
+
data.context.setStatus('complete')
|
74
74
|
response_data = data.xhr().response
|
75
75
|
if completedUploads == totalFilesCount
|
76
76
|
completedUploads = 0
|
@@ -60,18 +60,10 @@
|
|
60
60
|
@include box-shadow(inset 1px 1px 4px rgba($error_border_color, 0.5));
|
61
61
|
}
|
62
62
|
|
63
|
-
%border-radius-reset {
|
64
|
-
@include border-radius(0);
|
65
|
-
}
|
66
|
-
|
67
63
|
%blue-focus-style {
|
68
64
|
@include default-focus-style;
|
69
65
|
}
|
70
66
|
|
71
|
-
%white-focus-style {
|
72
|
-
@include default-focus-style(rgba(white, 0.5), none);
|
73
|
-
}
|
74
|
-
|
75
67
|
%default-input-style {
|
76
68
|
@include box-sizing(border-box);
|
77
69
|
$border-inset-color: lighten($default-border-color, 20%);
|
@@ -102,4 +94,6 @@
|
|
102
94
|
|
103
95
|
%gradiated-toolbar {
|
104
96
|
background: $medium-gray;
|
97
|
+
padding: 8px 4px;
|
98
|
+
height: 29px;
|
105
99
|
}
|
@@ -1,13 +1,8 @@
|
|
1
|
-
@mixin default-focus-style
|
2
|
-
|
3
|
-
|
4
|
-
@include box-shadow(0 0 6px $blue, inset 0 0 4px $light-blue);
|
1
|
+
@mixin default-focus-style {
|
2
|
+
border-color: $blue;
|
3
|
+
@include box-shadow(0 0 2px 2px $blue);
|
5
4
|
outline: none;
|
6
|
-
@include transition(
|
7
|
-
box-shadow 0.25s ease-in-out,
|
8
|
-
background-color 0.25s ease-in-out,
|
9
|
-
border 0.25s ease-in-out
|
10
|
-
);
|
5
|
+
@include transition(all 0.25s ease-in-out);
|
11
6
|
|
12
7
|
&::-moz-focus-inner {
|
13
8
|
border: none !important;
|
@@ -68,7 +68,7 @@ a {
|
|
68
68
|
}
|
69
69
|
|
70
70
|
&:focus {
|
71
|
-
@extend %
|
71
|
+
@extend %blue-focus-style;
|
72
72
|
color: black;
|
73
73
|
}
|
74
74
|
|
@@ -235,10 +235,6 @@ div#page_editing_menu {
|
|
235
235
|
margin-top: 1em;
|
236
236
|
}
|
237
237
|
|
238
|
-
div.table_right span.tools a.icon_button img {
|
239
|
-
left: -1px;
|
240
|
-
}
|
241
|
-
|
242
238
|
li.even {
|
243
239
|
background-color: #fff;
|
244
240
|
}
|
@@ -546,6 +542,10 @@ select#url_protocol.medium {
|
|
546
542
|
overflow-x: hidden;
|
547
543
|
overflow-y: auto;
|
548
544
|
margin-bottom: 1em;
|
545
|
+
|
546
|
+
.insert-element-button {
|
547
|
+
display: none;
|
548
|
+
}
|
549
549
|
}
|
550
550
|
|
551
551
|
.mceEditor table {
|
@@ -560,7 +560,7 @@ div.browse {
|
|
560
560
|
@include box-sizing(border-box);
|
561
561
|
position: absolute;
|
562
562
|
left: 66px;
|
563
|
-
top:
|
563
|
+
top: 75px;
|
564
564
|
width: auto;
|
565
565
|
height: auto;
|
566
566
|
border: 0 none;
|
@@ -49,10 +49,9 @@ button, input[type="submit"], a.button, input.button {
|
|
49
49
|
}
|
50
50
|
|
51
51
|
.icon_button {
|
52
|
-
@extend %button-defaults;
|
53
52
|
width: 21px;
|
54
53
|
height: 21px;
|
55
|
-
line-height:
|
54
|
+
line-height: 21px;
|
56
55
|
margin: 0;
|
57
56
|
padding: 3px;
|
58
57
|
overflow: hidden;
|
@@ -65,7 +64,7 @@ button, input[type="submit"], a.button, input.button {
|
|
65
64
|
|
66
65
|
.icon {
|
67
66
|
@include inline-block;
|
68
|
-
|
67
|
+
margin-top: -2px;
|
69
68
|
}
|
70
69
|
|
71
70
|
.old_icon {
|
@@ -100,9 +99,10 @@ button, input[type="submit"], a.button, input.button {
|
|
100
99
|
left: auto;
|
101
100
|
position: absolute;
|
102
101
|
left: 1px;
|
103
|
-
top:
|
102
|
+
top: 3px;
|
104
103
|
width: 8px;
|
105
104
|
height: 8px;
|
105
|
+
margin-top: 0;
|
106
106
|
|
107
107
|
&:before {
|
108
108
|
line-height: 10px;
|
@@ -117,7 +117,7 @@ button, input[type="submit"], a.button, input.button {
|
|
117
117
|
border: $default-border-width $default-border-style $button-hover-border-color;
|
118
118
|
@include border-radius($default-border-radius);
|
119
119
|
background: $button-hover-bg-color;
|
120
|
-
top:
|
120
|
+
top: 0px;
|
121
121
|
right: 0px;
|
122
122
|
|
123
123
|
.icon {
|
@@ -164,43 +164,38 @@ button, input[type="submit"], a.button, input.button {
|
|
164
164
|
}
|
165
165
|
|
166
166
|
button.icon_button {
|
167
|
-
|
168
|
-
|
167
|
+
background: transparent;
|
168
|
+
border: 0 none;
|
169
|
+
@include border-radius(0);
|
170
|
+
@include box-shadow(none);
|
171
|
+
@include box-sizing(content-box);
|
169
172
|
}
|
170
173
|
|
171
174
|
#new_element button.button {
|
172
175
|
float: right;
|
173
176
|
}
|
174
177
|
|
175
|
-
div#toolbar label {
|
176
|
-
@include default-label-style;
|
177
|
-
}
|
178
|
-
|
179
178
|
.button_with_label {
|
179
|
+
position: relative;
|
180
180
|
@include inline-block(top);
|
181
181
|
text-align: center;
|
182
|
-
margin
|
183
|
-
margin-left: 8px;
|
184
|
-
min-width: 70px;
|
182
|
+
margin: 0 2*$default-margin;
|
185
183
|
line-height: 0;
|
186
184
|
|
187
|
-
|
188
|
-
@include default-label-style;
|
189
|
-
}
|
190
|
-
|
191
|
-
&.active {
|
185
|
+
&.active, &:active {
|
192
186
|
|
193
187
|
.icon_button {
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
@
|
188
|
+
background-color: darken($sb-base-color, 10%);
|
189
|
+
border: $default-border;
|
190
|
+
padding: 2px;
|
191
|
+
@extend %rounded-border;
|
198
192
|
}
|
193
|
+
}
|
199
194
|
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
195
|
+
&:hover .icon_button {
|
196
|
+
border: $default-border;
|
197
|
+
padding: 2px;
|
198
|
+
@extend %rounded-border;
|
204
199
|
}
|
205
200
|
|
206
201
|
.select2-container {
|
@@ -222,6 +217,38 @@ div#toolbar label {
|
|
222
217
|
}
|
223
218
|
}
|
224
219
|
|
225
|
-
|
226
|
-
|
220
|
+
.button_with_label, .button_group {
|
221
|
+
|
222
|
+
.icon_button {
|
223
|
+
width: 23px;
|
224
|
+
height: 23px;
|
225
|
+
line-height: 23px;
|
226
|
+
}
|
227
|
+
|
228
|
+
label {
|
229
|
+
display: none;
|
230
|
+
position: absolute;
|
231
|
+
top: -25px;
|
232
|
+
left: 50%;
|
233
|
+
margin-left: -13px;
|
234
|
+
z-index: 30;
|
235
|
+
background: $dark-gray;
|
236
|
+
color: #fff;
|
237
|
+
padding: $default-padding 2*$default-padding;
|
238
|
+
@extend %rounded-border;
|
239
|
+
line-height: 1;
|
240
|
+
@include box-shadow(0 0 4px $default-border-color);
|
241
|
+
white-space: nowrap;
|
242
|
+
|
243
|
+
&:before {
|
244
|
+
content: '';
|
245
|
+
position: absolute;
|
246
|
+
bottom: -10px;
|
247
|
+
left: 8px;
|
248
|
+
border: 5px transparent solid;
|
249
|
+
border-top-color: $dark-gray;
|
250
|
+
}
|
251
|
+
}
|
252
|
+
|
253
|
+
&:hover label { display: block }
|
227
254
|
}
|