stuff_to_do_plugin 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/COPYRIGHT.txt +18 -0
- data/CREDITS.txt +6 -0
- data/GPL.txt +339 -0
- data/README.rdoc +61 -0
- data/Rakefile +38 -0
- data/VERSION +1 -0
- data/app/controllers/stuff_to_do_controller.rb +161 -0
- data/app/helpers/stuff_to_do_helper.rb +88 -0
- data/app/models/stuff_to_do.rb +208 -0
- data/app/models/stuff_to_do_filter.rb +32 -0
- data/app/models/stuff_to_do_mailer.rb +16 -0
- data/app/views/settings/_stuff_to_do_settings.html.erb +27 -0
- data/app/views/stuff_to_do/_issue.html.erb +16 -0
- data/app/views/stuff_to_do/_item.html.erb +5 -0
- data/app/views/stuff_to_do/_left_panes.html.erb +51 -0
- data/app/views/stuff_to_do/_panes.html.erb +11 -0
- data/app/views/stuff_to_do/_project.html.erb +6 -0
- data/app/views/stuff_to_do/_right_panes.html.erb +25 -0
- data/app/views/stuff_to_do/_time_grid.html.erb +113 -0
- data/app/views/stuff_to_do/_time_grid_form.html.erb +32 -0
- data/app/views/stuff_to_do/index.html.erb +44 -0
- data/app/views/stuff_to_do_mailer/recommended_below_threshold.erb +3 -0
- data/app/views/stuff_to_do_mailer/recommended_below_threshold.text.html.rhtml +1 -0
- data/assets/images/b.png +0 -0
- data/assets/images/bl.png +0 -0
- data/assets/images/br.png +0 -0
- data/assets/images/closelabel.gif +0 -0
- data/assets/images/loading.gif +0 -0
- data/assets/images/tl.png +0 -0
- data/assets/images/tr.png +0 -0
- data/assets/javascripts/facebox.js +319 -0
- data/assets/javascripts/jquery-1.2.6.min.js +32 -0
- data/assets/javascripts/jquery-ui.js +2839 -0
- data/assets/javascripts/jquery.contextMenu.js +212 -0
- data/assets/javascripts/semantic.cache +15 -0
- data/assets/javascripts/stuff-to-do.js +270 -0
- data/assets/javascripts/ui/build.xml +24 -0
- data/assets/javascripts/ui/effects.blind.js +49 -0
- data/assets/javascripts/ui/effects.bounce.js +78 -0
- data/assets/javascripts/ui/effects.clip.js +54 -0
- data/assets/javascripts/ui/effects.core.js +510 -0
- data/assets/javascripts/ui/effects.drop.js +50 -0
- data/assets/javascripts/ui/effects.explode.js +79 -0
- data/assets/javascripts/ui/effects.fold.js +55 -0
- data/assets/javascripts/ui/effects.highlight.js +48 -0
- data/assets/javascripts/ui/effects.pulsate.js +55 -0
- data/assets/javascripts/ui/effects.scale.js +180 -0
- data/assets/javascripts/ui/effects.shake.js +57 -0
- data/assets/javascripts/ui/effects.slide.js +50 -0
- data/assets/javascripts/ui/effects.transfer.js +59 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-ar.js +26 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-bg.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-ca.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-cs.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-da.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-de.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-eo.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-es.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-fa.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-fi.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-fr.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-he.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-hr.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-hu.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-hy.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-id.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-is.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-it.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-ja.js +26 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-ko.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-lt.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-lv.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-nl.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-no.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-pl.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-pt-BR.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-ro.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-ru.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-sk.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-sl.js +26 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-sq.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-sv.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-th.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-tr.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-uk.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-zh-CN.js +25 -0
- data/assets/javascripts/ui/i18n/ui.datepicker-zh-TW.js +25 -0
- data/assets/javascripts/ui/svn.log +11 -0
- data/assets/javascripts/ui/ui.accordion.js +400 -0
- data/assets/javascripts/ui/ui.core.js +533 -0
- data/assets/javascripts/ui/ui.datepicker.js +1754 -0
- data/assets/javascripts/ui/ui.dialog.js +630 -0
- data/assets/javascripts/ui/ui.draggable.js +696 -0
- data/assets/javascripts/ui/ui.droppable.js +314 -0
- data/assets/javascripts/ui/ui.progressbar.js +114 -0
- data/assets/javascripts/ui/ui.resizable.js +805 -0
- data/assets/javascripts/ui/ui.selectable.js +266 -0
- data/assets/javascripts/ui/ui.slider.js +552 -0
- data/assets/javascripts/ui/ui.sortable.js +1012 -0
- data/assets/javascripts/ui/ui.tabs.js +572 -0
- data/assets/stylesheets/stuff_to_do.css +216 -0
- data/config/locales/bg.yml +18 -0
- data/config/locales/ca-fr.yml +18 -0
- data/config/locales/cs.yml +16 -0
- data/config/locales/da.yml +16 -0
- data/config/locales/de.yml +18 -0
- data/config/locales/en.yml +24 -0
- data/config/locales/es.yml +19 -0
- data/config/locales/fr.yml +17 -0
- data/config/locales/hu.yml +16 -0
- data/config/locales/it.yml +16 -0
- data/config/locales/ja.yml +18 -0
- data/config/locales/ko.yml +18 -0
- data/config/locales/lt.yml +18 -0
- data/config/locales/nl.yml +20 -0
- data/config/locales/pt-BR.yml +18 -0
- data/config/locales/ru.yml +19 -0
- data/config/locales/sv.yml +19 -0
- data/config/locales/tr.yml +18 -0
- data/config/routes.rb +3 -0
- data/init.rb +54 -0
- data/lang/bg.yml +17 -0
- data/lang/ca-fr.yml +17 -0
- data/lang/cs.yml +15 -0
- data/lang/da.yml +15 -0
- data/lang/de.yml +17 -0
- data/lang/en.yml +21 -0
- data/lang/es.yml +18 -0
- data/lang/fr.yml +16 -0
- data/lang/hu.yml +15 -0
- data/lang/it.yml +15 -0
- data/lang/ja.yml +17 -0
- data/lang/ko.yml +17 -0
- data/lang/lt.yml +17 -0
- data/lang/pt-br.yml +17 -0
- data/lang/ru.yml +15 -0
- data/lang/sv.yml +18 -0
- data/lang/tr.yml +17 -0
- data/lib/redmine_stuff_to_do/stuff_to_do_compatibility.rb +15 -0
- data/lib/stuff_to_do_array_patch.rb +8 -0
- data/lib/stuff_to_do_issue_patch.rb +57 -0
- data/lib/stuff_to_do_project_patch.rb +31 -0
- data/lib/stuff_to_do_user_patch.rb +10 -0
- data/rails/init.rb +1 -0
- data/spec/controllers/stuff_to_do_controller_add_to_time_grid_spec.rb +58 -0
- data/spec/controllers/stuff_to_do_controller_index_spec.rb +155 -0
- data/spec/controllers/stuff_to_do_controller_remove_from_time_grid_spec.rb +56 -0
- data/spec/controllers/stuff_to_do_controller_reorder_spec.rb +179 -0
- data/spec/controllers/stuff_to_do_controller_save_time_entries_spec.rb +56 -0
- data/spec/controllers/stuff_to_do_private_methods_spec.rb +82 -0
- data/spec/lib/stuff_to_do_issue_patch_spec.rb +60 -0
- data/spec/lib/stuff_to_do_project_patch_spec.rb +50 -0
- data/spec/lib/stuff_to_do_user_patch_spec.rb +8 -0
- data/spec/models/stuff_to_do_filter_spec.rb +3 -0
- data/spec/models/stuff_to_do_mailer_spec.rb +42 -0
- data/spec/models/stuff_to_do_spec.rb +426 -0
- data/spec/sanity_spec.rb +7 -0
- data/spec/spec_helper.rb +130 -0
- metadata +211 -0
@@ -0,0 +1,25 @@
|
|
1
|
+
/* Slovak initialisation for the jQuery UI date picker plugin. */
|
2
|
+
/* Written by Vojtech Rinik (vojto@hmm.sk). */
|
3
|
+
jQuery(function($){
|
4
|
+
$.datepicker.regional['sk'] = {
|
5
|
+
clearText: 'Zmazať', clearStatus: '',
|
6
|
+
closeText: 'Zavrieť', closeStatus: '',
|
7
|
+
prevText: '<Predchádzajúci', prevStatus: '',
|
8
|
+
prevBigText: '<<', prevBigStatus: '',
|
9
|
+
nextText: 'Nasledujúci>', nextStatus: '',
|
10
|
+
nextBigText: '>>', nextBigStatus: '',
|
11
|
+
currentText: 'Dnes', currentStatus: '',
|
12
|
+
monthNames: ['Január','Február','Marec','Apríl','Máj','Jún',
|
13
|
+
'Júl','August','September','Október','November','December'],
|
14
|
+
monthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún',
|
15
|
+
'Júl','Aug','Sep','Okt','Nov','Dec'],
|
16
|
+
monthStatus: '', yearStatus: '',
|
17
|
+
weekHeader: 'Ty', weekStatus: '',
|
18
|
+
dayNames: ['Nedel\'a','Pondelok','Utorok','Streda','Štvrtok','Piatok','Sobota'],
|
19
|
+
dayNamesShort: ['Ned','Pon','Uto','Str','Štv','Pia','Sob'],
|
20
|
+
dayNamesMin: ['Ne','Po','Ut','St','Št','Pia','So'],
|
21
|
+
dayStatus: 'DD', dateStatus: 'D, M d',
|
22
|
+
dateFormat: 'dd.mm.yy', firstDay: 0,
|
23
|
+
initStatus: '', isRTL: false};
|
24
|
+
$.datepicker.setDefaults($.datepicker.regional['sk']);
|
25
|
+
});
|
@@ -0,0 +1,26 @@
|
|
1
|
+
/* Slovenian initialisation for the jQuery UI date picker plugin. */
|
2
|
+
/* Written by Jaka Jancar (jaka@kubje.org). */
|
3
|
+
/* c = č, s = š z = ž C = Č S = Š Z = Ž */
|
4
|
+
jQuery(function($){
|
5
|
+
$.datepicker.regional['sl'] = {
|
6
|
+
clearText: 'Izbriši', clearStatus: 'Izbriši trenutni datum',
|
7
|
+
closeText: 'Zapri', closeStatus: 'Zapri brez spreminjanja',
|
8
|
+
prevText: '<Prejšnji', prevStatus: 'Prikaži prejšnji mesec',
|
9
|
+
prevBigText: '<<', prevBigStatus: '',
|
10
|
+
nextText: 'Naslednji>', nextStatus: 'Prikaži naslednji mesec',
|
11
|
+
nextBigText: '>>', nextBigStatus: '',
|
12
|
+
currentText: 'Trenutni', currentStatus: 'Prikaži trenutni mesec',
|
13
|
+
monthNames: ['Januar','Februar','Marec','April','Maj','Junij',
|
14
|
+
'Julij','Avgust','September','Oktober','November','December'],
|
15
|
+
monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
|
16
|
+
'Jul','Avg','Sep','Okt','Nov','Dec'],
|
17
|
+
monthStatus: 'Prikaži drug mesec', yearStatus: 'Prikaži drugo leto',
|
18
|
+
weekHeader: 'Teden', weekStatus: 'Teden v letu',
|
19
|
+
dayNames: ['Nedelja','Ponedeljek','Torek','Sreda','Četrtek','Petek','Sobota'],
|
20
|
+
dayNamesShort: ['Ned','Pon','Tor','Sre','Čet','Pet','Sob'],
|
21
|
+
dayNamesMin: ['Ne','Po','To','Sr','Če','Pe','So'],
|
22
|
+
dayStatus: 'Nastavi DD za prvi dan v tednu', dateStatus: 'Izberi DD, d MM yy',
|
23
|
+
dateFormat: 'dd.mm.yy', firstDay: 1,
|
24
|
+
initStatus: 'Izbira datuma', isRTL: false};
|
25
|
+
$.datepicker.setDefaults($.datepicker.regional['sl']);
|
26
|
+
});
|
@@ -0,0 +1,25 @@
|
|
1
|
+
/* Albanian initialisation for the jQuery UI date picker plugin. */
|
2
|
+
/* Written by Flakron Bytyqi (flakron@gmail.com). */
|
3
|
+
jQuery(function($){
|
4
|
+
$.datepicker.regional['sq'] = {
|
5
|
+
clearText: 'fshije', clearStatus: 'fshije datën aktuale',
|
6
|
+
closeText: 'mbylle', closeStatus: 'mbylle pa ndryshime',
|
7
|
+
prevText: '<mbrapa', prevStatus: 'trego muajin e fundit',
|
8
|
+
prevBigText: '<<', prevBigStatus: '',
|
9
|
+
nextText: 'Përpara>', nextStatus: 'trego muajin tjetër',
|
10
|
+
nextBigText: '>>', nextBigStatus: '',
|
11
|
+
currentText: 'sot', currentStatus: '',
|
12
|
+
monthNames: ['Janar','Shkurt','Mars','Pril','Maj','Qershor',
|
13
|
+
'Korrik','Gusht','Shtator','Tetor','Nëntor','Dhjetor'],
|
14
|
+
monthNamesShort: ['Jan','Shk','Mar','Pri','Maj','Qer',
|
15
|
+
'Kor','Gus','Sht','Tet','Nën','Dhj'],
|
16
|
+
monthStatus: 'trego muajin tjetër', yearStatus: 'trego tjetër vit',
|
17
|
+
weekHeader: 'Ja', weekStatus: 'Java e muajit',
|
18
|
+
dayNames: ['E Diel','E Hënë','E Martë','E Mërkurë','E Enjte','E Premte','E Shtune'],
|
19
|
+
dayNamesShort: ['Di','Hë','Ma','Më','En','Pr','Sh'],
|
20
|
+
dayNamesMin: ['Di','Hë','Ma','Më','En','Pr','Sh'],
|
21
|
+
dayStatus: 'Vendose DD si ditë të parë të javës', dateStatus: '\'Zgjedh\' D, M d',
|
22
|
+
dateFormat: 'dd.mm.yy', firstDay: 1,
|
23
|
+
initStatus: 'Zgjedhe një datë', isRTL: false};
|
24
|
+
$.datepicker.setDefaults($.datepicker.regional['sq']);
|
25
|
+
});
|
@@ -0,0 +1,25 @@
|
|
1
|
+
/* Swedish initialisation for the jQuery UI date picker plugin. */
|
2
|
+
/* Written by Anders Ekdahl ( anders@nomadiz.se). */
|
3
|
+
jQuery(function($){
|
4
|
+
$.datepicker.regional['sv'] = {
|
5
|
+
clearText: 'Rensa', clearStatus: '',
|
6
|
+
closeText: 'Stäng', closeStatus: '',
|
7
|
+
prevText: '«Förra', prevStatus: '',
|
8
|
+
prevBigText: '<<', prevBigStatus: '',
|
9
|
+
nextText: 'Nästa»', nextStatus: '',
|
10
|
+
nextBigText: '>>', nextBigStatus: '',
|
11
|
+
currentText: 'Idag', currentStatus: '',
|
12
|
+
monthNames: ['Januari','Februari','Mars','April','Maj','Juni',
|
13
|
+
'Juli','Augusti','September','Oktober','November','December'],
|
14
|
+
monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
|
15
|
+
'Jul','Aug','Sep','Okt','Nov','Dec'],
|
16
|
+
monthStatus: '', yearStatus: '',
|
17
|
+
weekHeader: 'Ve', weekStatus: '',
|
18
|
+
dayNamesShort: ['Sön','Mån','Tis','Ons','Tor','Fre','Lör'],
|
19
|
+
dayNames: ['Söndag','Måndag','Tisdag','Onsdag','Torsdag','Fredag','Lördag'],
|
20
|
+
dayNamesMin: ['Sö','Må','Ti','On','To','Fr','Lö'],
|
21
|
+
dayStatus: 'DD', dateStatus: 'D, M d',
|
22
|
+
dateFormat: 'yy-mm-dd', firstDay: 1,
|
23
|
+
initStatus: '', isRTL: false};
|
24
|
+
$.datepicker.setDefaults($.datepicker.regional['sv']);
|
25
|
+
});
|
@@ -0,0 +1,25 @@
|
|
1
|
+
/* Thai initialisation for the jQuery UI date picker plugin. */
|
2
|
+
/* Written by pipo (pipo@sixhead.com). */
|
3
|
+
jQuery(function($){
|
4
|
+
$.datepicker.regional['th'] = {
|
5
|
+
clearText: 'ลบ', clearStatus: '',
|
6
|
+
closeText: 'ปิด', closeStatus: '',
|
7
|
+
prevText: '« ย้อน', prevStatus: '',
|
8
|
+
prevBigText: '<<', prevBigStatus: '',
|
9
|
+
nextText: 'ถัดไป »', nextStatus: '',
|
10
|
+
nextBigText: '>>', nextBigStatus: '',
|
11
|
+
currentText: 'วันนี้', currentStatus: '',
|
12
|
+
monthNames: ['มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน',
|
13
|
+
'กรกฏาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'],
|
14
|
+
monthNamesShort: ['ม.ค.','ก.พ.','มี.ค.','เม.ย.','พ.ค.','มิ.ย.',
|
15
|
+
'ก.ค.','ส.ค.','ก.ย.','ต.ค.','พ.ย.','ธ.ค.'],
|
16
|
+
monthStatus: '', yearStatus: '',
|
17
|
+
weekHeader: 'Sm', weekStatus: '',
|
18
|
+
dayNames: ['อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุกร์','เสาร์'],
|
19
|
+
dayNamesShort: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],
|
20
|
+
dayNamesMin: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],
|
21
|
+
dayStatus: 'DD', dateStatus: 'D, M d',
|
22
|
+
dateFormat: 'dd/mm/yy', firstDay: 0,
|
23
|
+
initStatus: '', isRTL: false};
|
24
|
+
$.datepicker.setDefaults($.datepicker.regional['th']);
|
25
|
+
});
|
@@ -0,0 +1,25 @@
|
|
1
|
+
/* Turkish initialisation for the jQuery UI date picker plugin. */
|
2
|
+
/* Written by Izzet Emre Erkan (kara@karalamalar.net). */
|
3
|
+
jQuery(function($){
|
4
|
+
$.datepicker.regional['tr'] = {
|
5
|
+
clearText: 'temizle', clearStatus: 'geçerli tarihi temizler',
|
6
|
+
closeText: 'kapat', closeStatus: 'sadece göstergeyi kapat',
|
7
|
+
prevText: '<geri', prevStatus: 'önceki ayı göster',
|
8
|
+
prevBigText: '<<', prevBigStatus: '',
|
9
|
+
nextText: 'ileri>', nextStatus: 'sonraki ayı göster',
|
10
|
+
nextBigText: '>>', nextBigStatus: '',
|
11
|
+
currentText: 'bugün', currentStatus: '',
|
12
|
+
monthNames: ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran',
|
13
|
+
'Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'],
|
14
|
+
monthNamesShort: ['Oca','Şub','Mar','Nis','May','Haz',
|
15
|
+
'Tem','Ağu','Eyl','Eki','Kas','Ara'],
|
16
|
+
monthStatus: 'başka ay', yearStatus: 'başka yıl',
|
17
|
+
weekHeader: 'Hf', weekStatus: 'Ayın haftaları',
|
18
|
+
dayNames: ['Pazar','Pazartesi','Salı','Çarşamba','Perşembe','Cuma','Cumartesi'],
|
19
|
+
dayNamesShort: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],
|
20
|
+
dayNamesMin: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],
|
21
|
+
dayStatus: 'Haftanın ilk gününü belirleyin', dateStatus: 'D, M d seçiniz',
|
22
|
+
dateFormat: 'dd.mm.yy', firstDay: 1,
|
23
|
+
initStatus: 'Bir tarih seçiniz', isRTL: false};
|
24
|
+
$.datepicker.setDefaults($.datepicker.regional['tr']);
|
25
|
+
});
|
@@ -0,0 +1,25 @@
|
|
1
|
+
/* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */
|
2
|
+
/* Written by Maxim Drogobitskiy (maxdao@gmail.com). */
|
3
|
+
jQuery(function($){
|
4
|
+
$.datepicker.regional['uk'] = {
|
5
|
+
clearText: 'Очистити', clearStatus: '',
|
6
|
+
closeText: 'Закрити', closeStatus: '',
|
7
|
+
prevText: '<', prevStatus: '',
|
8
|
+
prevBigText: '<<', prevBigStatus: '',
|
9
|
+
nextText: '>', nextStatus: '',
|
10
|
+
nextBigText: '>>', nextBigStatus: '',
|
11
|
+
currentText: 'Сьогодні', currentStatus: '',
|
12
|
+
monthNames: ['Січень','Лютий','Березень','Квітень','Травень','Червень',
|
13
|
+
'Липень','Серпень','Вересень','Жовтень','Листопад','Грудень'],
|
14
|
+
monthNamesShort: ['Січ','Лют','Бер','Кві','Тра','Чер',
|
15
|
+
'Лип','Сер','Вер','Жов','Лис','Гру'],
|
16
|
+
monthStatus: '', yearStatus: '',
|
17
|
+
weekHeader: 'Не', weekStatus: '',
|
18
|
+
dayNames: ['неділя','понеділок','вівторок','середа','четвер','пятниця','суббота'],
|
19
|
+
dayNamesShort: ['нед','пнд','вів','срд','чтв','птн','сбт'],
|
20
|
+
dayNamesMin: ['Нд','Пн','Вт','Ср','Чт','Пт','Сб'],
|
21
|
+
dayStatus: 'DD', dateStatus: 'D, M d',
|
22
|
+
dateFormat: 'dd.mm.yy', firstDay: 1,
|
23
|
+
initStatus: '', isRTL: false};
|
24
|
+
$.datepicker.setDefaults($.datepicker.regional['uk']);
|
25
|
+
});
|
@@ -0,0 +1,25 @@
|
|
1
|
+
/* Chinese initialisation for the jQuery UI date picker plugin. */
|
2
|
+
/* Written by Cloudream (cloudream@gmail.com). */
|
3
|
+
jQuery(function($){
|
4
|
+
$.datepicker.regional['zh-CN'] = {
|
5
|
+
clearText: '清除', clearStatus: '清除已选日期',
|
6
|
+
closeText: '关闭', closeStatus: '不改变当前选择',
|
7
|
+
prevText: '<上月', prevStatus: '显示上月',
|
8
|
+
prevBigText: '<<', prevBigStatus: '显示上一年',
|
9
|
+
nextText: '下月>', nextStatus: '显示下月',
|
10
|
+
nextBigText: '>>', nextBigStatus: '显示下一年',
|
11
|
+
currentText: '今天', currentStatus: '显示本月',
|
12
|
+
monthNames: ['一月','二月','三月','四月','五月','六月',
|
13
|
+
'七月','八月','九月','十月','十一月','十二月'],
|
14
|
+
monthNamesShort: ['一','二','三','四','五','六',
|
15
|
+
'七','八','九','十','十一','十二'],
|
16
|
+
monthStatus: '选择月份', yearStatus: '选择年份',
|
17
|
+
weekHeader: '周', weekStatus: '年内周次',
|
18
|
+
dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
|
19
|
+
dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
|
20
|
+
dayNamesMin: ['日','一','二','三','四','五','六'],
|
21
|
+
dayStatus: '设置 DD 为一周起始', dateStatus: '选择 m月 d日, DD',
|
22
|
+
dateFormat: 'yy-mm-dd', firstDay: 1,
|
23
|
+
initStatus: '请选择日期', isRTL: false};
|
24
|
+
$.datepicker.setDefaults($.datepicker.regional['zh-CN']);
|
25
|
+
});
|
@@ -0,0 +1,25 @@
|
|
1
|
+
/* Chinese initialisation for the jQuery UI date picker plugin. */
|
2
|
+
/* Written by Ressol (ressol@gmail.com). */
|
3
|
+
jQuery(function($){
|
4
|
+
$.datepicker.regional['zh-TW'] = {
|
5
|
+
clearText: '清除', clearStatus: '清除已選日期',
|
6
|
+
closeText: '關閉', closeStatus: '不改變目前的選擇',
|
7
|
+
prevText: '<上月', prevStatus: '顯示上月',
|
8
|
+
prevBigText: '<<', prevBigStatus: '顯示上一年',
|
9
|
+
nextText: '下月>', nextStatus: '顯示下月',
|
10
|
+
nextBigText: '>>', nextBigStatus: '顯示下一年',
|
11
|
+
currentText: '今天', currentStatus: '顯示本月',
|
12
|
+
monthNames: ['一月','二月','三月','四月','五月','六月',
|
13
|
+
'七月','八月','九月','十月','十一月','十二月'],
|
14
|
+
monthNamesShort: ['一','二','三','四','五','六',
|
15
|
+
'七','八','九','十','十一','十二'],
|
16
|
+
monthStatus: '選擇月份', yearStatus: '選擇年份',
|
17
|
+
weekHeader: '周', weekStatus: '年內周次',
|
18
|
+
dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
|
19
|
+
dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
|
20
|
+
dayNamesMin: ['日','一','二','三','四','五','六'],
|
21
|
+
dayStatus: '設定 DD 為一周起始', dateStatus: '選擇 m月 d日, DD',
|
22
|
+
dateFormat: 'yy/mm/dd', firstDay: 1,
|
23
|
+
initStatus: '請選擇日期', isRTL: false};
|
24
|
+
$.datepicker.setDefaults($.datepicker.regional['zh-TW']);
|
25
|
+
});
|
@@ -0,0 +1,11 @@
|
|
1
|
+
Path: .
|
2
|
+
URL: http://jquery-ui.googlecode.com/svn/trunk/ui
|
3
|
+
Repository Root: http://jquery-ui.googlecode.com/svn
|
4
|
+
Repository UUID: a1defee3-d24d-0410-b1e3-3171fe540af7
|
5
|
+
Revision: 1171
|
6
|
+
Node Kind: directory
|
7
|
+
Schedule: normal
|
8
|
+
Last Changed Author: paul.bakaus
|
9
|
+
Last Changed Rev: 1171
|
10
|
+
Last Changed Date: 2008-12-17 11:35:13 -0800 (Wed, 17 Dec 2008)
|
11
|
+
|
@@ -0,0 +1,400 @@
|
|
1
|
+
/*
|
2
|
+
* jQuery UI Accordion @VERSION
|
3
|
+
*
|
4
|
+
* Copyright (c) 2008 AUTHORS.txt (http://ui.jquery.com/about)
|
5
|
+
* Dual licensed under the MIT (MIT-LICENSE.txt)
|
6
|
+
* and GPL (GPL-LICENSE.txt) licenses.
|
7
|
+
*
|
8
|
+
* http://docs.jquery.com/UI/Accordion
|
9
|
+
*
|
10
|
+
* Depends:
|
11
|
+
* ui.core.js
|
12
|
+
*/
|
13
|
+
(function($) {
|
14
|
+
|
15
|
+
$.widget("ui.accordion", {
|
16
|
+
|
17
|
+
_init: function() {
|
18
|
+
var options = this.options;
|
19
|
+
|
20
|
+
if ( options.navigation ) {
|
21
|
+
var current = this.element.find("a").filter(options.navigationFilter);
|
22
|
+
if ( current.length ) {
|
23
|
+
if ( current.filter(options.header).length ) {
|
24
|
+
options.active = current;
|
25
|
+
} else {
|
26
|
+
options.active = current.parent().parent().prev();
|
27
|
+
current.addClass("current");
|
28
|
+
}
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
this.element.addClass("ui-accordion ui-widget ui-helper-reset");
|
33
|
+
var groups = this.element.children().addClass("ui-accordion-group");
|
34
|
+
var headers = options.headers = groups.find("> :first-child").addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all")
|
35
|
+
.bind("mouseenter.accordion", function(){ $(this).addClass('ui-state-hover'); })
|
36
|
+
.bind("mouseleave.accordion", function(){ $(this).removeClass('ui-state-hover'); });
|
37
|
+
// wrap content elements in div against animation issues
|
38
|
+
headers.next().wrap("<div></div>").addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");
|
39
|
+
|
40
|
+
var active = options.active = findActive(headers, options.active).toggleClass("ui-state-default").toggleClass("ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");
|
41
|
+
active.parent().addClass("selected");
|
42
|
+
$("<span/>").addClass("ui-icon " + this.options.headerIcon).prependTo(headers);
|
43
|
+
active.find(".ui-icon").toggleClass(this.options.headerIcon).toggleClass(this.options.headerIconSelected);
|
44
|
+
|
45
|
+
// IE7-/Win - Extra vertical space in Lists fixed
|
46
|
+
if ($.browser.msie) {
|
47
|
+
this.element.find('a').css('zoom', '1');
|
48
|
+
}
|
49
|
+
|
50
|
+
var maxHeight;
|
51
|
+
if ( options.fillSpace ) {
|
52
|
+
maxHeight = this.element.parent().height();
|
53
|
+
options.headers.each(function() {
|
54
|
+
maxHeight -= $(this).outerHeight();
|
55
|
+
});
|
56
|
+
var maxPadding = 0;
|
57
|
+
options.headers.next().each(function() {
|
58
|
+
maxPadding = Math.max(maxPadding, $(this).innerHeight() - $(this).height());
|
59
|
+
}).height(maxHeight - maxPadding);
|
60
|
+
} else if ( options.autoHeight ) {
|
61
|
+
maxHeight = 0;
|
62
|
+
options.headers.next().each(function() {
|
63
|
+
maxHeight = Math.max(maxHeight, $(this).outerHeight());
|
64
|
+
}).height(maxHeight);
|
65
|
+
}
|
66
|
+
|
67
|
+
this.element.attr('role','tablist');
|
68
|
+
|
69
|
+
var self=this;
|
70
|
+
options.headers
|
71
|
+
.attr('role','tab')
|
72
|
+
.bind('keydown', function(event) { return self._keydown(event); })
|
73
|
+
.next()
|
74
|
+
.attr('role','tabpanel');
|
75
|
+
|
76
|
+
options.headers
|
77
|
+
.not(options.active || "")
|
78
|
+
.attr('aria-expanded','false')
|
79
|
+
.attr("tabIndex", "-1")
|
80
|
+
.next()
|
81
|
+
.hide();
|
82
|
+
|
83
|
+
// make sure at least one header is in the tab order
|
84
|
+
if (!options.active.length) {
|
85
|
+
options.headers.eq(0).attr('tabIndex','0');
|
86
|
+
} else {
|
87
|
+
options.active
|
88
|
+
.attr('aria-expanded','true')
|
89
|
+
.attr("tabIndex", "0");
|
90
|
+
}
|
91
|
+
|
92
|
+
// only need links in taborder for Safari
|
93
|
+
if (!$.browser.safari)
|
94
|
+
options.headers.find('a').attr('tabIndex','-1');
|
95
|
+
|
96
|
+
if (options.event) {
|
97
|
+
this.element.bind((options.event) + ".accordion", clickHandler);
|
98
|
+
}
|
99
|
+
},
|
100
|
+
|
101
|
+
destroy: function() {
|
102
|
+
this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role").unbind(".accordion");
|
103
|
+
$.removeData(this.element[0], "accordion");
|
104
|
+
var groups = this.element.children().removeClass("ui-accordion-group selected");
|
105
|
+
var headers = this.options.headers.unbind(".accordion").removeClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-corner-top")
|
106
|
+
.removeAttr("role").removeAttr("aria-expanded").removeAttr("tabindex");
|
107
|
+
headers.find("a").removeAttr("tabindex");
|
108
|
+
headers.children(".ui-icon").remove();
|
109
|
+
headers.next().children().removeClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").each(function(){
|
110
|
+
$(this).parent().replaceWith(this);
|
111
|
+
})
|
112
|
+
},
|
113
|
+
|
114
|
+
_keydown: function(event) {
|
115
|
+
if (this.options.disabled || event.altKey || event.ctrlKey)
|
116
|
+
return;
|
117
|
+
|
118
|
+
var keyCode = $.ui.keyCode;
|
119
|
+
|
120
|
+
var length = this.options.headers.length;
|
121
|
+
var currentIndex = this.options.headers.index(event.target);
|
122
|
+
var toFocus = false;
|
123
|
+
|
124
|
+
switch(event.keyCode) {
|
125
|
+
case keyCode.RIGHT:
|
126
|
+
case keyCode.DOWN:
|
127
|
+
toFocus = this.options.headers[(currentIndex + 1) % length];
|
128
|
+
break;
|
129
|
+
case keyCode.LEFT:
|
130
|
+
case keyCode.UP:
|
131
|
+
toFocus = this.options.headers[(currentIndex - 1 + length) % length];
|
132
|
+
break;
|
133
|
+
case keyCode.SPACE:
|
134
|
+
case keyCode.ENTER:
|
135
|
+
return clickHandler.call(this.element[0], { target: event.target });
|
136
|
+
}
|
137
|
+
|
138
|
+
if (toFocus) {
|
139
|
+
$(event.target).attr('tabIndex','-1');
|
140
|
+
$(toFocus).attr('tabIndex','0');
|
141
|
+
toFocus.focus();
|
142
|
+
return false;
|
143
|
+
}
|
144
|
+
|
145
|
+
return true;
|
146
|
+
},
|
147
|
+
|
148
|
+
activate: function(index) {
|
149
|
+
// call clickHandler with custom event
|
150
|
+
clickHandler.call(this.element[0], {
|
151
|
+
target: findActive( this.options.headers, index )[0]
|
152
|
+
});
|
153
|
+
}
|
154
|
+
|
155
|
+
});
|
156
|
+
|
157
|
+
function scopeCallback(callback, scope) {
|
158
|
+
return function() {
|
159
|
+
return callback.apply(scope, arguments);
|
160
|
+
};
|
161
|
+
};
|
162
|
+
|
163
|
+
function completed(cancel) {
|
164
|
+
// if removed while animated data can be empty
|
165
|
+
if (!$.data(this, "accordion")) {
|
166
|
+
return;
|
167
|
+
}
|
168
|
+
|
169
|
+
var instance = $.data(this, "accordion");
|
170
|
+
var options = instance.options;
|
171
|
+
options.running = cancel ? 0 : --options.running;
|
172
|
+
if ( options.running ) {
|
173
|
+
return;
|
174
|
+
}
|
175
|
+
if ( options.clearStyle ) {
|
176
|
+
options.toShow.add(options.toHide).css({
|
177
|
+
height: "",
|
178
|
+
overflow: ""
|
179
|
+
});
|
180
|
+
}
|
181
|
+
instance._trigger('change', null, options.data);
|
182
|
+
}
|
183
|
+
|
184
|
+
function toggle(toShow, toHide, data, clickedActive, down) {
|
185
|
+
var options = $.data(this, "accordion").options;
|
186
|
+
options.toShow = toShow;
|
187
|
+
options.toHide = toHide;
|
188
|
+
options.data = data;
|
189
|
+
var complete = scopeCallback(completed, this);
|
190
|
+
|
191
|
+
$.data(this, "accordion")._trigger("changestart", null, options.data);
|
192
|
+
|
193
|
+
// count elements to animate
|
194
|
+
options.running = toHide.size() === 0 ? toShow.size() : toHide.size();
|
195
|
+
|
196
|
+
if ( options.animated ) {
|
197
|
+
var animOptions = {};
|
198
|
+
|
199
|
+
if ( !options.alwaysOpen && clickedActive ) {
|
200
|
+
animOptions = {
|
201
|
+
toShow: $([]),
|
202
|
+
toHide: toHide,
|
203
|
+
complete: complete,
|
204
|
+
down: down,
|
205
|
+
autoHeight: options.autoHeight
|
206
|
+
};
|
207
|
+
} else {
|
208
|
+
animOptions = {
|
209
|
+
toShow: toShow,
|
210
|
+
toHide: toHide,
|
211
|
+
complete: complete,
|
212
|
+
down: down,
|
213
|
+
autoHeight: options.autoHeight
|
214
|
+
};
|
215
|
+
}
|
216
|
+
|
217
|
+
if (!options.proxied) {
|
218
|
+
options.proxied = options.animated;
|
219
|
+
}
|
220
|
+
|
221
|
+
if (!options.proxiedDuration) {
|
222
|
+
options.proxiedDuration = options.duration;
|
223
|
+
}
|
224
|
+
|
225
|
+
options.animated = $.isFunction(options.proxied) ?
|
226
|
+
options.proxied(animOptions) : options.proxied;
|
227
|
+
|
228
|
+
options.duration = $.isFunction(options.proxiedDuration) ?
|
229
|
+
options.proxiedDuration(animOptions) : options.proxiedDuration;
|
230
|
+
|
231
|
+
var animations = $.ui.accordion.animations,
|
232
|
+
duration = options.duration,
|
233
|
+
easing = options.animated;
|
234
|
+
|
235
|
+
if (!animations[easing]) {
|
236
|
+
animations[easing] = function(options) {
|
237
|
+
this.slide(options, {
|
238
|
+
easing: easing,
|
239
|
+
duration: duration || 700
|
240
|
+
});
|
241
|
+
};
|
242
|
+
}
|
243
|
+
|
244
|
+
animations[easing](animOptions);
|
245
|
+
|
246
|
+
} else {
|
247
|
+
if ( !options.alwaysOpen && clickedActive ) {
|
248
|
+
toShow.toggle();
|
249
|
+
} else {
|
250
|
+
toHide.hide();
|
251
|
+
toShow.show();
|
252
|
+
}
|
253
|
+
complete(true);
|
254
|
+
}
|
255
|
+
toHide.prev().attr('aria-expanded','false').attr("tabIndex", "-1");
|
256
|
+
toShow.prev().attr('aria-expanded','true').attr("tabIndex", "0").focus();;
|
257
|
+
}
|
258
|
+
|
259
|
+
function clickHandler(event) {
|
260
|
+
var options = $.data(this, "accordion").options;
|
261
|
+
if (options.disabled) {
|
262
|
+
return false;
|
263
|
+
}
|
264
|
+
// called only when using activate(false) to close all parts programmatically
|
265
|
+
if ( !event.target && !options.alwaysOpen ) {
|
266
|
+
options.active.parent().toggleClass(options.selectedClass);
|
267
|
+
var toHide = options.active.next(),
|
268
|
+
data = {
|
269
|
+
options: options,
|
270
|
+
newHeader: $([]),
|
271
|
+
oldHeader: options.active,
|
272
|
+
newContent: $([]),
|
273
|
+
oldContent: toHide
|
274
|
+
},
|
275
|
+
toShow = (options.active = $([]));
|
276
|
+
toggle.call(this, toShow, toHide, data );
|
277
|
+
return false;
|
278
|
+
}
|
279
|
+
// get the click target
|
280
|
+
var clicked = $(event.target);
|
281
|
+
|
282
|
+
// due to the event delegation model, we have to check if one
|
283
|
+
// of the parent elements is our actual header, and find that
|
284
|
+
// otherwise stick with the initial target
|
285
|
+
clicked = $( clicked.parents(options.header)[0] || clicked );
|
286
|
+
|
287
|
+
var clickedActive = clicked[0] == options.active[0];
|
288
|
+
|
289
|
+
// if animations are still active, or the active header is the target, ignore click
|
290
|
+
if (options.running || (options.alwaysOpen && clickedActive)) {
|
291
|
+
return false;
|
292
|
+
}
|
293
|
+
if (!clicked.is(options.header)) {
|
294
|
+
return;
|
295
|
+
}
|
296
|
+
|
297
|
+
// switch classes
|
298
|
+
options.active.parent().toggleClass(options.selectedClass);
|
299
|
+
options.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all")
|
300
|
+
.find(".ui-icon").removeClass(options.headerIconSelected).addClass(options.headerIcon);
|
301
|
+
if ( !clickedActive ) {
|
302
|
+
clicked.parent().addClass(options.selectedClass);
|
303
|
+
clicked.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top")
|
304
|
+
.find(".ui-icon").removeClass(options.headerIcon).addClass(options.headerIconSelected);
|
305
|
+
}
|
306
|
+
|
307
|
+
// find elements to show and hide
|
308
|
+
var toShow = clicked.next(),
|
309
|
+
toHide = options.active.next(),
|
310
|
+
data = {
|
311
|
+
options: options,
|
312
|
+
newHeader: clickedActive && !options.alwaysOpen ? $([]) : clicked,
|
313
|
+
oldHeader: options.active,
|
314
|
+
newContent: clickedActive && !options.alwaysOpen ? $([]) : toShow,
|
315
|
+
oldContent: toHide
|
316
|
+
},
|
317
|
+
down = options.headers.index( options.active[0] ) > options.headers.index( clicked[0] );
|
318
|
+
|
319
|
+
options.active = clickedActive ? $([]) : clicked;
|
320
|
+
toggle.call(this, toShow, toHide, data, clickedActive, down );
|
321
|
+
|
322
|
+
return false;
|
323
|
+
};
|
324
|
+
|
325
|
+
function findActive(headers, selector) {
|
326
|
+
return selector
|
327
|
+
? typeof selector == "number"
|
328
|
+
? headers.filter(":eq(" + selector + ")")
|
329
|
+
: headers.not(headers.not(selector))
|
330
|
+
: selector === false
|
331
|
+
? $([])
|
332
|
+
: headers.filter(":eq(0)");
|
333
|
+
}
|
334
|
+
|
335
|
+
$.extend($.ui.accordion, {
|
336
|
+
version: "@VERSION",
|
337
|
+
defaults: {
|
338
|
+
autoHeight: true,
|
339
|
+
alwaysOpen: true,
|
340
|
+
animated: 'slide',
|
341
|
+
event: "click",
|
342
|
+
header: "a",
|
343
|
+
headerIcon: "ui-icon-triangle-1-e",
|
344
|
+
headerIconSelected: "ui-icon-triangle-1-s",
|
345
|
+
navigationFilter: function() {
|
346
|
+
return this.href.toLowerCase() == location.href.toLowerCase();
|
347
|
+
},
|
348
|
+
running: 0,
|
349
|
+
selectedClass: "selected"
|
350
|
+
},
|
351
|
+
animations: {
|
352
|
+
slide: function(options, additions) {
|
353
|
+
options = $.extend({
|
354
|
+
easing: "swing",
|
355
|
+
duration: 300
|
356
|
+
}, options, additions);
|
357
|
+
if ( !options.toHide.size() ) {
|
358
|
+
options.toShow.animate({height: "show"}, options);
|
359
|
+
return;
|
360
|
+
}
|
361
|
+
var hideHeight = options.toHide.height(),
|
362
|
+
showHeight = options.toShow.height(),
|
363
|
+
difference = showHeight / hideHeight,
|
364
|
+
overflow = options.toShow.css('overflow');
|
365
|
+
options.toShow.css({ height: 0, overflow: 'hidden' }).show();
|
366
|
+
options.toHide.filter(":hidden").each(options.complete).end().filter(":visible").animate({height:"hide"},{
|
367
|
+
step: function(now) {
|
368
|
+
var current = (hideHeight - now) * difference;
|
369
|
+
if ($.browser.msie || $.browser.opera) {
|
370
|
+
current = Math.ceil(current);
|
371
|
+
}
|
372
|
+
options.toShow.height( current );
|
373
|
+
},
|
374
|
+
duration: options.duration,
|
375
|
+
easing: options.easing,
|
376
|
+
complete: function() {
|
377
|
+
if ( !options.autoHeight ) {
|
378
|
+
options.toShow.css("height", "auto");
|
379
|
+
}
|
380
|
+
options.toShow.css({overflow: overflow});
|
381
|
+
options.complete();
|
382
|
+
}
|
383
|
+
});
|
384
|
+
},
|
385
|
+
bounceslide: function(options) {
|
386
|
+
this.slide(options, {
|
387
|
+
easing: options.down ? "easeOutBounce" : "swing",
|
388
|
+
duration: options.down ? 1000 : 200
|
389
|
+
});
|
390
|
+
},
|
391
|
+
easeslide: function(options) {
|
392
|
+
this.slide(options, {
|
393
|
+
easing: "easeinout",
|
394
|
+
duration: 700
|
395
|
+
});
|
396
|
+
}
|
397
|
+
}
|
398
|
+
});
|
399
|
+
|
400
|
+
})(jQuery);
|