constructor-core 0.2.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.
- data/app/assets/images/constructor_core/glyphicons-halflings-white.png +0 -0
- data/app/assets/images/constructor_core/glyphicons-halflings.png +0 -0
- data/app/assets/images/constructor_core/minus.gif +0 -0
- data/app/assets/images/constructor_core/plus.gif +0 -0
- data/app/assets/images/constructor_core/rss.png +0 -0
- data/app/assets/images/constructor_core/treeview-black-line.gif +0 -0
- data/app/assets/images/constructor_core/treeview-black.gif +0 -0
- data/app/assets/images/constructor_core/treeview-default-line.gif +0 -0
- data/app/assets/images/constructor_core/treeview-default.gif +0 -0
- data/app/assets/images/constructor_core/treeview-famfamfam-line.gif +0 -0
- data/app/assets/images/constructor_core/treeview-famfamfam.gif +0 -0
- data/app/assets/images/constructor_core/treeview-gray-line.gif +0 -0
- data/app/assets/images/constructor_core/treeview-gray.gif +0 -0
- data/app/assets/images/constructor_core/treeview-red-line.gif +0 -0
- data/app/assets/images/constructor_core/treeview-red.gif +0 -0
- data/app/assets/images/constructor_core/twitter.png +0 -0
- data/app/assets/images/constructor_core/widgets.png +0 -0
- data/app/assets/javascripts/constructor_core/application.js.coffee +57 -0
- data/app/assets/javascripts/constructor_core/bootstrap.js +2276 -0
- data/app/assets/javascripts/constructor_core/jquery.cookie.js +92 -0
- data/app/assets/javascripts/constructor_core/jquery.treeview.js +256 -0
- data/app/assets/javascripts/constructor_core/jquery_bundle.js.coffee +4 -0
- data/app/assets/javascripts/constructor_core/urlify.js +82 -0
- data/app/assets/stylesheets/constructor_core/application.css.scss +57 -0
- data/app/assets/stylesheets/constructor_core/bootstrap-responsive.css +1109 -0
- data/app/assets/stylesheets/constructor_core/bootstrap.css +6158 -0
- data/app/assets/stylesheets/constructor_core/jquery.treeview.css +73 -0
- data/app/controllers/constructor_core/admin_controller.rb +6 -0
- data/app/controllers/constructor_core/sessions_controller.rb +15 -0
- data/app/helpers/constructor_core/devise_helper.rb +24 -0
- data/app/models/constructor_core/user.rb +10 -0
- data/app/views/constructor_core/devise/confirmations/new.html.haml +10 -0
- data/app/views/constructor_core/devise/mailer/confirmation_instructions.html.haml +5 -0
- data/app/views/constructor_core/devise/mailer/reset_password_instructions.html.haml +7 -0
- data/app/views/constructor_core/devise/mailer/unlock_instructions.html.haml +5 -0
- data/app/views/constructor_core/devise/passwords/edit.html.haml +21 -0
- data/app/views/constructor_core/devise/passwords/new.html.haml +13 -0
- data/app/views/constructor_core/devise/registrations/edit.html.haml +28 -0
- data/app/views/constructor_core/devise/registrations/new.html.haml +20 -0
- data/app/views/constructor_core/devise/shared/_links.html.haml +19 -0
- data/app/views/constructor_core/devise/unlocks/new.html.haml +9 -0
- data/app/views/constructor_core/sessions/new.html.haml +24 -0
- data/app/views/layouts/constructor_core/application_admin.haml +65 -0
- data/config/environments/production.rb +3 -0
- data/config/initializers/devise.rb +223 -0
- data/config/locales/devise.en.yml +56 -0
- data/config/locales/devise.ru.yml +52 -0
- data/config/locales/ru.yml +12 -0
- data/config/routes.rb +9 -0
- data/constructor-core.gemspec +16 -0
- data/db/migrate/1_devise_users.rb +56 -0
- data/db/migrate/2_add_default_user.rb +9 -0
- data/lib/constructor-core.rb +23 -0
- data/lib/constructor_core/engine.rb +6 -0
- data/spec/factories.rb +2 -0
- data/spec/lib/nav/group_spec.rb +61 -0
- data/spec/lib/nav/item_spec.rb +151 -0
- data/spec/lib/nav_lib_spec.rb +60 -0
- data/spec/spec_helper.rb +34 -0
- data/vendor/assets/javascripts/.gitkeep +0 -0
- data/vendor/assets/javascripts/ckeditor/ckeditor.js +913 -0
- data/vendor/assets/javascripts/ckeditor/config.js +38 -0
- data/vendor/assets/javascripts/ckeditor/lang/en.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/ru.js +5 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt +25 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/da.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/de.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/el.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/en.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/es.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/et.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fa.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fr.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/he.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/hr.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/hu.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/it.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ja.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/km.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ku.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/lv.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/no.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/pl.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/pt.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sk.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sl.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sv.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/th.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/tr.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ug.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/uk.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js +7 -0
- data/vendor/assets/javascripts/ckeditor/plugins/about/dialogs/about.js +6 -0
- data/vendor/assets/javascripts/ckeditor/plugins/about/dialogs/logo_ckeditor.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/clipboard/dialogs/paste.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/colordialog/dialogs/colordialog.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/dialog/dialogDefinition.js +4 -0
- data/vendor/assets/javascripts/ckeditor/plugins/div/dialogs/div.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/fakeobjects/images/spacer.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/find/dialogs/find.js +24 -0
- data/vendor/assets/javascripts/ckeditor/plugins/icons.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/iframe/dialogs/iframe.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/iframe/images/placeholder.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/image/dialogs/image.js +43 -0
- data/vendor/assets/javascripts/ckeditor/plugins/image/images/noimage.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/link/dialogs/anchor.js +8 -0
- data/vendor/assets/javascripts/ckeditor/plugins/link/dialogs/link.js +36 -0
- data/vendor/assets/javascripts/ckeditor/plugins/link/images/anchor.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/liststyle/dialogs/liststyle.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/magicline/images/icon.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/pastefromword/filter/default.js +31 -0
- data/vendor/assets/javascripts/ckeditor/plugins/preview/preview.html +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/scayt/LICENSE.md +28 -0
- data/vendor/assets/javascripts/ckeditor/plugins/scayt/README.md +25 -0
- data/vendor/assets/javascripts/ckeditor/plugins/scayt/dialogs/options.js +20 -0
- data/vendor/assets/javascripts/ckeditor/plugins/scayt/dialogs/toolbar.css +71 -0
- data/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_address.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_blockquote.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_div.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_h1.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_h2.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_h3.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_h4.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_h5.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_h6.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_p.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_pre.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/_translationstatus.txt +20 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ca.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/cs.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/cy.js +14 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/de.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/el.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/en.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/eo.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/et.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/fa.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/fi.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/fr.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/he.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/hr.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/it.js +14 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ku.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/lv.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/nb.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/nl.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/no.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/pl.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/pt-br.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/sk.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/sv.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/th.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/tr.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ug.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/specialchar.js +14 -0
- data/vendor/assets/javascripts/ckeditor/plugins/table/dialogs/table.js +21 -0
- data/vendor/assets/javascripts/ckeditor/plugins/tabletools/dialogs/tableCell.js +16 -0
- data/vendor/assets/javascripts/ckeditor/plugins/templates/dialogs/templates.css +84 -0
- data/vendor/assets/javascripts/ckeditor/plugins/templates/dialogs/templates.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/templates/templates/default.js +6 -0
- data/vendor/assets/javascripts/ckeditor/plugins/templates/templates/images/template1.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/templates/templates/images/template2.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/templates/templates/images/template3.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/wsc/LICENSE.md +28 -0
- data/vendor/assets/javascripts/ckeditor/plugins/wsc/README.md +25 -0
- data/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/ciframe.html +49 -0
- data/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +52 -0
- data/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/wsc.css +82 -0
- data/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/wsc.js +11 -0
- data/vendor/assets/javascripts/ckeditor/styles.js +111 -0
- data/vendor/assets/stylesheets/.gitkeep +0 -0
- data/vendor/assets/stylesheets/ckeditor/contents.css +103 -0
- data/vendor/assets/stylesheets/ckeditor/skins/moono/dialog.css +5 -0
- data/vendor/assets/stylesheets/ckeditor/skins/moono/dialog_ie.css +5 -0
- data/vendor/assets/stylesheets/ckeditor/skins/moono/dialog_ie7.css +5 -0
- data/vendor/assets/stylesheets/ckeditor/skins/moono/dialog_ie8.css +5 -0
- data/vendor/assets/stylesheets/ckeditor/skins/moono/dialog_opera.css +5 -0
- data/vendor/assets/stylesheets/ckeditor/skins/moono/editor.css +5 -0
- data/vendor/assets/stylesheets/ckeditor/skins/moono/editor_gecko.css +5 -0
- data/vendor/assets/stylesheets/ckeditor/skins/moono/editor_ie.css +5 -0
- data/vendor/assets/stylesheets/ckeditor/skins/moono/editor_ie7.css +5 -0
- data/vendor/assets/stylesheets/ckeditor/skins/moono/editor_ie8.css +5 -0
- data/vendor/assets/stylesheets/ckeditor/skins/moono/icons.png +0 -0
- data/vendor/assets/stylesheets/ckeditor/skins/moono/images/arrow.png +0 -0
- data/vendor/assets/stylesheets/ckeditor/skins/moono/images/close.png +0 -0
- data/vendor/assets/stylesheets/ckeditor/skins/moono/images/mini.png +0 -0
- data/vendor/assets/stylesheets/ckeditor/skins/moono/readme.md +51 -0
- metadata +272 -0
@@ -0,0 +1,92 @@
|
|
1
|
+
/**
|
2
|
+
* Cookie plugin
|
3
|
+
*
|
4
|
+
* Copyright (c) 2006 Klaus Hartl (stilbuero.de)
|
5
|
+
* Dual licensed under the MIT and GPL licenses:
|
6
|
+
* http://www.opensource.org/licenses/mit-license.php
|
7
|
+
* http://www.gnu.org/licenses/gpl.html
|
8
|
+
*
|
9
|
+
*/
|
10
|
+
|
11
|
+
/**
|
12
|
+
* Create a cookie with the given name and value and other optional parameters.
|
13
|
+
*
|
14
|
+
* @example $.cookie('the_cookie', 'the_value');
|
15
|
+
* @desc Set the value of a cookie.
|
16
|
+
* @example $.cookie('the_cookie', 'the_value', {expires: 7, path: '/', domain: 'jquery.com', secure: true});
|
17
|
+
* @desc Create a cookie with all available options.
|
18
|
+
* @example $.cookie('the_cookie', 'the_value');
|
19
|
+
* @desc Create a session cookie.
|
20
|
+
* @example $.cookie('the_cookie', null);
|
21
|
+
* @desc Delete a cookie by passing null as value.
|
22
|
+
*
|
23
|
+
* @param String name The name of the cookie.
|
24
|
+
* @param String value The value of the cookie.
|
25
|
+
* @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
|
26
|
+
* @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
|
27
|
+
* If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
|
28
|
+
* If set to null or omitted, the cookie will be a session cookie and will not be retained
|
29
|
+
* when the the browser exits.
|
30
|
+
* @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
|
31
|
+
* @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
|
32
|
+
* @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
|
33
|
+
* require a secure protocol (like HTTPS).
|
34
|
+
* @type undefined
|
35
|
+
*
|
36
|
+
* @name $.cookie
|
37
|
+
* @cat Plugins/Cookie
|
38
|
+
* @author Klaus Hartl/klaus.hartl@stilbuero.de
|
39
|
+
*/
|
40
|
+
|
41
|
+
/**
|
42
|
+
* Get the value of a cookie with the given name.
|
43
|
+
*
|
44
|
+
* @example $.cookie('the_cookie');
|
45
|
+
* @desc Get the value of a cookie.
|
46
|
+
*
|
47
|
+
* @param String name The name of the cookie.
|
48
|
+
* @return The value of the cookie.
|
49
|
+
* @type String
|
50
|
+
*
|
51
|
+
* @name $.cookie
|
52
|
+
* @cat Plugins/Cookie
|
53
|
+
* @author Klaus Hartl/klaus.hartl@stilbuero.de
|
54
|
+
*/
|
55
|
+
jQuery.cookie = function(name, value, options) {
|
56
|
+
if (typeof value != 'undefined') { // name and value given, set cookie
|
57
|
+
options = options || {};
|
58
|
+
if (value === null) {
|
59
|
+
value = '';
|
60
|
+
options.expires = -1;
|
61
|
+
}
|
62
|
+
var expires = '';
|
63
|
+
if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
|
64
|
+
var date;
|
65
|
+
if (typeof options.expires == 'number') {
|
66
|
+
date = new Date();
|
67
|
+
date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
|
68
|
+
} else {
|
69
|
+
date = options.expires;
|
70
|
+
}
|
71
|
+
expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
|
72
|
+
}
|
73
|
+
var path = options.path ? '; path=' + options.path : '';
|
74
|
+
var domain = options.domain ? '; domain=' + options.domain : '';
|
75
|
+
var secure = options.secure ? '; secure' : '';
|
76
|
+
document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
|
77
|
+
} else { // only name given, get cookie
|
78
|
+
var cookieValue = null;
|
79
|
+
if (document.cookie && document.cookie != '') {
|
80
|
+
var cookies = document.cookie.split(';');
|
81
|
+
for (var i = 0; i < cookies.length; i++) {
|
82
|
+
var cookie = jQuery.trim(cookies[i]);
|
83
|
+
// Does this cookie string begin with the name we want?
|
84
|
+
if (cookie.substring(0, name.length + 1) == (name + '=')) {
|
85
|
+
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
|
86
|
+
break;
|
87
|
+
}
|
88
|
+
}
|
89
|
+
}
|
90
|
+
return cookieValue;
|
91
|
+
}
|
92
|
+
};
|
@@ -0,0 +1,256 @@
|
|
1
|
+
/*
|
2
|
+
* Treeview 1.5pre - jQuery plugin to hide and show branches of a tree
|
3
|
+
*
|
4
|
+
* http://bassistance.de/jquery-plugins/jquery-plugin-treeview/
|
5
|
+
* http://docs.jquery.com/Plugins/Treeview
|
6
|
+
*
|
7
|
+
* Copyright (c) 2007 Jörn Zaefferer
|
8
|
+
*
|
9
|
+
* Dual licensed under the MIT and GPL licenses:
|
10
|
+
* http://www.opensource.org/licenses/mit-license.php
|
11
|
+
* http://www.gnu.org/licenses/gpl.html
|
12
|
+
*
|
13
|
+
* Revision: $Id: jquery.treeview.js 5759 2008-07-01 07:50:28Z joern.zaefferer $
|
14
|
+
*
|
15
|
+
*/
|
16
|
+
|
17
|
+
;(function($) {
|
18
|
+
|
19
|
+
// TODO rewrite as a widget, removing all the extra plugins
|
20
|
+
$.extend($.fn, {
|
21
|
+
swapClass: function(c1, c2) {
|
22
|
+
var c1Elements = this.filter('.' + c1);
|
23
|
+
this.filter('.' + c2).removeClass(c2).addClass(c1);
|
24
|
+
c1Elements.removeClass(c1).addClass(c2);
|
25
|
+
return this;
|
26
|
+
},
|
27
|
+
replaceClass: function(c1, c2) {
|
28
|
+
return this.filter('.' + c1).removeClass(c1).addClass(c2).end();
|
29
|
+
},
|
30
|
+
hoverClass: function(className) {
|
31
|
+
className = className || "hover";
|
32
|
+
return this.hover(function() {
|
33
|
+
$(this).addClass(className);
|
34
|
+
}, function() {
|
35
|
+
$(this).removeClass(className);
|
36
|
+
});
|
37
|
+
},
|
38
|
+
heightToggle: function(animated, callback) {
|
39
|
+
animated ?
|
40
|
+
this.animate({ height: "toggle" }, animated, callback) :
|
41
|
+
this.each(function(){
|
42
|
+
jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ]();
|
43
|
+
if(callback)
|
44
|
+
callback.apply(this, arguments);
|
45
|
+
});
|
46
|
+
},
|
47
|
+
heightHide: function(animated, callback) {
|
48
|
+
if (animated) {
|
49
|
+
this.animate({ height: "hide" }, animated, callback);
|
50
|
+
} else {
|
51
|
+
this.hide();
|
52
|
+
if (callback)
|
53
|
+
this.each(callback);
|
54
|
+
}
|
55
|
+
},
|
56
|
+
prepareBranches: function(settings) {
|
57
|
+
if (!settings.prerendered) {
|
58
|
+
// mark last tree items
|
59
|
+
this.filter(":last-child:not(ul)").addClass(CLASSES.last);
|
60
|
+
// collapse whole tree, or only those marked as closed, anyway except those marked as open
|
61
|
+
this.filter((settings.collapsed ? "" : "." + CLASSES.closed) + ":not(." + CLASSES.open + ")").find(">ul").hide();
|
62
|
+
}
|
63
|
+
// return all items with sublists
|
64
|
+
return this.filter(":has(>ul)");
|
65
|
+
},
|
66
|
+
applyClasses: function(settings, toggler) {
|
67
|
+
// TODO use event delegation
|
68
|
+
this.filter(":has(>ul):not(:has(>a))").find(">span").unbind("click.treeview").bind("click.treeview", function(event) {
|
69
|
+
// don't handle click events on children, eg. checkboxes
|
70
|
+
if ( this == event.target )
|
71
|
+
toggler.apply($(this).next());
|
72
|
+
}).add( $("a", this) ).hoverClass();
|
73
|
+
|
74
|
+
if (!settings.prerendered) {
|
75
|
+
// handle closed ones first
|
76
|
+
this.filter(":has(>ul:hidden)")
|
77
|
+
.addClass(CLASSES.expandable)
|
78
|
+
.replaceClass(CLASSES.last, CLASSES.lastExpandable);
|
79
|
+
|
80
|
+
// handle open ones
|
81
|
+
this.not(":has(>ul:hidden)")
|
82
|
+
.addClass(CLASSES.collapsable)
|
83
|
+
.replaceClass(CLASSES.last, CLASSES.lastCollapsable);
|
84
|
+
|
85
|
+
// create hitarea if not present
|
86
|
+
var hitarea = this.find("div." + CLASSES.hitarea);
|
87
|
+
if (!hitarea.length)
|
88
|
+
hitarea = this.prepend("<div class=\"" + CLASSES.hitarea + "\"/>").find("div." + CLASSES.hitarea);
|
89
|
+
hitarea.removeClass().addClass(CLASSES.hitarea).each(function() {
|
90
|
+
var classes = "";
|
91
|
+
$.each($(this).parent().attr("class").split(" "), function() {
|
92
|
+
classes += this + "-hitarea ";
|
93
|
+
});
|
94
|
+
$(this).addClass( classes );
|
95
|
+
})
|
96
|
+
}
|
97
|
+
|
98
|
+
// apply event to hitarea
|
99
|
+
this.find("div." + CLASSES.hitarea).click( toggler );
|
100
|
+
},
|
101
|
+
treeview: function(settings) {
|
102
|
+
|
103
|
+
settings = $.extend({
|
104
|
+
cookieId: "treeview"
|
105
|
+
}, settings);
|
106
|
+
|
107
|
+
if ( settings.toggle ) {
|
108
|
+
var callback = settings.toggle;
|
109
|
+
settings.toggle = function() {
|
110
|
+
return callback.apply($(this).parent()[0], arguments);
|
111
|
+
};
|
112
|
+
}
|
113
|
+
|
114
|
+
// factory for treecontroller
|
115
|
+
function treeController(tree, control) {
|
116
|
+
// factory for click handlers
|
117
|
+
function handler(filter) {
|
118
|
+
return function() {
|
119
|
+
// reuse toggle event handler, applying the elements to toggle
|
120
|
+
// start searching for all hitareas
|
121
|
+
toggler.apply( $("div." + CLASSES.hitarea, tree).filter(function() {
|
122
|
+
// for plain toggle, no filter is provided, otherwise we need to check the parent element
|
123
|
+
return filter ? $(this).parent("." + filter).length : true;
|
124
|
+
}) );
|
125
|
+
return false;
|
126
|
+
};
|
127
|
+
}
|
128
|
+
// click on first element to collapse tree
|
129
|
+
$("a:eq(0)", control).click( handler(CLASSES.collapsable) );
|
130
|
+
// click on second to expand tree
|
131
|
+
$("a:eq(1)", control).click( handler(CLASSES.expandable) );
|
132
|
+
// click on third to toggle tree
|
133
|
+
$("a:eq(2)", control).click( handler() );
|
134
|
+
}
|
135
|
+
|
136
|
+
// handle toggle event
|
137
|
+
function toggler() {
|
138
|
+
$(this)
|
139
|
+
.parent()
|
140
|
+
// swap classes for hitarea
|
141
|
+
.find(">.hitarea")
|
142
|
+
.swapClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea )
|
143
|
+
.swapClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea )
|
144
|
+
.end()
|
145
|
+
// swap classes for parent li
|
146
|
+
.swapClass( CLASSES.collapsable, CLASSES.expandable )
|
147
|
+
.swapClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
|
148
|
+
// find child lists
|
149
|
+
.find( ">ul" )
|
150
|
+
// toggle them
|
151
|
+
.heightToggle( settings.animated, settings.toggle );
|
152
|
+
if ( settings.unique ) {
|
153
|
+
$(this).parent()
|
154
|
+
.siblings()
|
155
|
+
// swap classes for hitarea
|
156
|
+
.find(">.hitarea")
|
157
|
+
.replaceClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea )
|
158
|
+
.replaceClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea )
|
159
|
+
.end()
|
160
|
+
.replaceClass( CLASSES.collapsable, CLASSES.expandable )
|
161
|
+
.replaceClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
|
162
|
+
.find( ">ul" )
|
163
|
+
.heightHide( settings.animated, settings.toggle );
|
164
|
+
}
|
165
|
+
}
|
166
|
+
this.data("toggler", toggler);
|
167
|
+
|
168
|
+
function serialize() {
|
169
|
+
function binary(arg) {
|
170
|
+
return arg ? 1 : 0;
|
171
|
+
}
|
172
|
+
var data = [];
|
173
|
+
branches.each(function(i, e) {
|
174
|
+
data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0;
|
175
|
+
});
|
176
|
+
$.cookie(settings.cookieId, data.join(""), settings.cookieOptions );
|
177
|
+
}
|
178
|
+
|
179
|
+
function deserialize() {
|
180
|
+
var stored = $.cookie(settings.cookieId);
|
181
|
+
if ( stored ) {
|
182
|
+
var data = stored.split("");
|
183
|
+
branches.each(function(i, e) {
|
184
|
+
$(e).find(">ul")[ parseInt(data[i]) ? "show" : "hide" ]();
|
185
|
+
});
|
186
|
+
}
|
187
|
+
}
|
188
|
+
|
189
|
+
// add treeview class to activate styles
|
190
|
+
this.addClass("treeview");
|
191
|
+
|
192
|
+
// prepare branches and find all tree items with child lists
|
193
|
+
var branches = this.find("li").prepareBranches(settings);
|
194
|
+
|
195
|
+
switch(settings.persist) {
|
196
|
+
case "cookie":
|
197
|
+
var toggleCallback = settings.toggle;
|
198
|
+
settings.toggle = function() {
|
199
|
+
serialize();
|
200
|
+
if (toggleCallback) {
|
201
|
+
toggleCallback.apply(this, arguments);
|
202
|
+
}
|
203
|
+
};
|
204
|
+
deserialize();
|
205
|
+
break;
|
206
|
+
case "location":
|
207
|
+
var current = this.find("a").filter(function() {
|
208
|
+
return this.href.toLowerCase() == location.href.toLowerCase();
|
209
|
+
});
|
210
|
+
if ( current.length ) {
|
211
|
+
// TODO update the open/closed classes
|
212
|
+
var items = current.addClass("selected").parents("ul, li").add( current.next() ).show();
|
213
|
+
if (settings.prerendered) {
|
214
|
+
// if prerendered is on, replicate the basic class swapping
|
215
|
+
items.filter("li")
|
216
|
+
.swapClass( CLASSES.collapsable, CLASSES.expandable )
|
217
|
+
.swapClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
|
218
|
+
.find(">.hitarea")
|
219
|
+
.swapClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea )
|
220
|
+
.swapClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea );
|
221
|
+
}
|
222
|
+
}
|
223
|
+
break;
|
224
|
+
}
|
225
|
+
|
226
|
+
branches.applyClasses(settings, toggler);
|
227
|
+
|
228
|
+
// if control option is set, create the treecontroller and show it
|
229
|
+
if ( settings.control ) {
|
230
|
+
treeController(this, settings.control);
|
231
|
+
$(settings.control).show();
|
232
|
+
}
|
233
|
+
|
234
|
+
return this;
|
235
|
+
}
|
236
|
+
});
|
237
|
+
|
238
|
+
// classes used by the plugin
|
239
|
+
// need to be styled via external stylesheet, see first example
|
240
|
+
$.treeview = {};
|
241
|
+
var CLASSES = ($.treeview.classes = {
|
242
|
+
open: "open",
|
243
|
+
closed: "closed",
|
244
|
+
expandable: "expandable",
|
245
|
+
expandableHitarea: "expandable-hitarea",
|
246
|
+
lastExpandableHitarea: "lastExpandable-hitarea",
|
247
|
+
collapsable: "collapsable",
|
248
|
+
collapsableHitarea: "collapsable-hitarea",
|
249
|
+
lastCollapsableHitarea: "lastCollapsable-hitarea",
|
250
|
+
lastCollapsable: "lastCollapsable",
|
251
|
+
lastExpandable: "lastExpandable",
|
252
|
+
last: "last",
|
253
|
+
hitarea: "hitarea"
|
254
|
+
});
|
255
|
+
|
256
|
+
})(jQuery);
|
@@ -0,0 +1,82 @@
|
|
1
|
+
var RUSSIAN_MAP = {
|
2
|
+
'а':'a', 'б':'b', 'в':'v', 'г':'g', 'д':'d', 'е':'e', 'ё':'yo', 'ж':'zh',
|
3
|
+
'з':'z', 'и':'i', 'й':'y', 'к':'k', 'л':'l', 'м':'m', 'н':'n', 'о':'o',
|
4
|
+
'п':'p', 'р':'r', 'с':'s', 'т':'t', 'у':'u', 'ф':'f', 'х':'h', 'ц':'ts',
|
5
|
+
'ч':'ch', 'ш':'sh', 'щ':'sch', 'ъ':'', 'ы':'y', 'ь':'', 'э':'e', 'ю':'yu',
|
6
|
+
'я':'ya',
|
7
|
+
'А':'A', 'Б':'B', 'В':'V', 'Г':'G', 'Д':'D', 'Е':'E', 'Ё':'Yo', 'Ж':'Zh',
|
8
|
+
'З':'Z', 'И':'I', 'Й':'J', 'К':'K', 'Л':'L', 'М':'M', 'Н':'N', 'О':'O',
|
9
|
+
'П':'P', 'Р':'R', 'С':'S', 'Т':'T', 'У':'U', 'Ф':'F', 'Х':'H', 'Ц':'Ts',
|
10
|
+
'Ч':'Ch', 'Ш':'Sh', 'Щ':'Sch', 'Ъ':'', 'Ы':'Y', 'Ь':'', 'Э':'E', 'Ю':'Yu',
|
11
|
+
'Я':'Ya'
|
12
|
+
}
|
13
|
+
|
14
|
+
var ALL_DOWNCODE_MAPS=new Array()
|
15
|
+
ALL_DOWNCODE_MAPS[0]=RUSSIAN_MAP
|
16
|
+
|
17
|
+
var Downcoder = new Object();
|
18
|
+
Downcoder.Initialize = function()
|
19
|
+
{
|
20
|
+
if (Downcoder.map) // already made
|
21
|
+
return ;
|
22
|
+
Downcoder.map ={}
|
23
|
+
Downcoder.chars = '' ;
|
24
|
+
for(var i in ALL_DOWNCODE_MAPS)
|
25
|
+
{
|
26
|
+
var lookup = ALL_DOWNCODE_MAPS[i]
|
27
|
+
for (var c in lookup)
|
28
|
+
{
|
29
|
+
Downcoder.map[c] = lookup[c] ;
|
30
|
+
Downcoder.chars += c ;
|
31
|
+
}
|
32
|
+
}
|
33
|
+
Downcoder.regex = new RegExp('[' + Downcoder.chars + ']|[^' + Downcoder.chars + ']+','g') ;
|
34
|
+
}
|
35
|
+
|
36
|
+
downcode= function( slug )
|
37
|
+
{
|
38
|
+
Downcoder.Initialize() ;
|
39
|
+
var downcoded =""
|
40
|
+
var pieces = slug.match(Downcoder.regex);
|
41
|
+
if(pieces)
|
42
|
+
{
|
43
|
+
for (var i = 0 ; i < pieces.length ; i++)
|
44
|
+
{
|
45
|
+
if (pieces[i].length == 1)
|
46
|
+
{
|
47
|
+
var mapped = Downcoder.map[pieces[i]] ;
|
48
|
+
if (mapped != null)
|
49
|
+
{
|
50
|
+
downcoded+=mapped;
|
51
|
+
continue ;
|
52
|
+
}
|
53
|
+
}
|
54
|
+
downcoded+=pieces[i];
|
55
|
+
}
|
56
|
+
}
|
57
|
+
else
|
58
|
+
{
|
59
|
+
downcoded = slug;
|
60
|
+
}
|
61
|
+
return downcoded;
|
62
|
+
}
|
63
|
+
|
64
|
+
|
65
|
+
function URLify(s, num_chars) {
|
66
|
+
// changes, e.g., "Petty theft" to "petty_theft"
|
67
|
+
// remove all these words from the string before urlifying
|
68
|
+
s = downcode(s);
|
69
|
+
removelist = ["a", "an", "as", "at", "before", "but", "by", "for", "from",
|
70
|
+
"is", "in", "into", "like", "of", "off", "on", "onto", "per",
|
71
|
+
"since", "than", "the", "this", "that", "to", "up", "via",
|
72
|
+
"with"];
|
73
|
+
r = new RegExp('\\b(' + removelist.join('|') + ')\\b', 'gi');
|
74
|
+
s = s.replace(r, '');
|
75
|
+
// if downcode doesn't hit, the char will be stripped here
|
76
|
+
s = s.replace(/[^-\w\s]/g, ''); // remove unneeded chars
|
77
|
+
s = s.replace(/^\s+|\s+$/g, ''); // trim leading/trailing spaces
|
78
|
+
s = s.replace(/[-\s]+/g, '-'); // convert spaces to hyphens
|
79
|
+
s = s.toLowerCase(); // convert to lowercase
|
80
|
+
return s.substring(0, num_chars);// trim to first num_chars chars
|
81
|
+
}
|
82
|
+
|
@@ -0,0 +1,57 @@
|
|
1
|
+
//= require_self
|
2
|
+
//= require ckeditor/contents
|
3
|
+
//= require ckeditor/skins/moono/editor.css
|
4
|
+
//= require constructor_core/bootstrap
|
5
|
+
//= require constructor_core/bootstrap-responsive
|
6
|
+
//= require constructor_core/jquery.treeview
|
7
|
+
|
8
|
+
body {
|
9
|
+
padding-top: 40px;
|
10
|
+
}
|
11
|
+
|
12
|
+
.images_controls {
|
13
|
+
float: left;
|
14
|
+
overflow: hidden;
|
15
|
+
display: inline-block;
|
16
|
+
width: 180px;
|
17
|
+
margin-bottom: 20px;
|
18
|
+
|
19
|
+
.actions {
|
20
|
+
margin-top: 5px;
|
21
|
+
margin-left: 28px;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
|
25
|
+
.sizes .controls {
|
26
|
+
margin-bottom: 30px;
|
27
|
+
}
|
28
|
+
|
29
|
+
.url {
|
30
|
+
font-size: 12px;
|
31
|
+
|
32
|
+
.full_url {
|
33
|
+
margin-top: 6px;
|
34
|
+
float: left;
|
35
|
+
}
|
36
|
+
|
37
|
+
.icon-pencil {
|
38
|
+
margin-top: 5px;
|
39
|
+
margin-left: 3px;
|
40
|
+
}
|
41
|
+
|
42
|
+
.address {
|
43
|
+
font-weight: bold;
|
44
|
+
|
45
|
+
&:hover {
|
46
|
+
background-color: #ffa;
|
47
|
+
}
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
.url .icon-pencil {
|
52
|
+
display: none;
|
53
|
+
}
|
54
|
+
|
55
|
+
.url:hover .icon-pencil {
|
56
|
+
display: inline-block;
|
57
|
+
}
|