Skip to content

Commit

Permalink
- Fixed many_many sortable issues: table field wrong order in code, a…
Browse files Browse the repository at this point in the history
…dded

  an ability to maintain multiple relations to the same class.
+ Ukrainian localisation added.
+ Main Russian localisation added.
  • Loading branch information
unknown authored and unknown committed Jan 7, 2013
1 parent b71cd6c commit 0979a47
Show file tree
Hide file tree
Showing 23 changed files with 945 additions and 26 deletions.
7 changes: 4 additions & 3 deletions code/DataObjectManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -773,15 +773,16 @@ public function dosort()
$candidates = singleton($ownerClass)->many_many();
if(is_array($candidates)) {
foreach($candidates as $name => $class)
if($class == $className) {
if($class == $className and substr($group, -strlen($name)-1) == '_'.$name) {
$relationName = $name;
break;
}
}
if(!isset($relationName)) return false;
list($parentClass, $componentClass, $componentField, $parentField, $table) = singleton($ownerClass)->many_many($relationName);
foreach($map as $sort => $id)
list($parentClass, $componentClass, $parentField, $componentField, $table) = singleton($ownerClass)->many_many($relationName);
foreach($map as $sort => $id) {
DB::query("UPDATE \"$table\" SET \"SortOrder\" = $sort WHERE \"{$componentField}\" = $id AND \"{$parentField}\" = $controllerID");
}
}
else {
foreach($map as $sort => $id) {
Expand Down
55 changes: 32 additions & 23 deletions code/SortableDataObject.php
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public static function add_sortable_many_many_relation($ownerClass,$componentNam
if(!isset(self::$many_many_sortable_relations[$componentClass]))
self::$many_many_sortable_relations[$componentClass] = array();

self::$many_many_sortable_relations[$componentClass][$parentClass] = $table;
self::$many_many_sortable_relations[$componentClass][$parentClass][] = $table;
self::add_sortable_class($componentClass);
}

Expand Down Expand Up @@ -90,28 +90,37 @@ public static function get_join_tables($classname)
}


public function augmentSQL(SQLQuery &$query)
{
if(empty($query->select) || $query->delete || in_array("COUNT(*)",$query->select) || in_array("count(*)",$query->select)) return;
$sort_field = false;
if($join_tables = self::get_join_tables($this->owner->class)) {
foreach($query->from as $from) {
if($sort_field) break;
foreach($join_tables as $join_table) {
if(stristr($from,$join_table)) {
$sort_field = "\"$join_table\".\"SortOrder\"";
if(isset($query->select['SortOrder'])) {
$query->select['SortOrder'] = "$sort_field AS LocalSort";
}
break;
}
}
}
}
if(!$sort_field) $sort_field = "\"SortOrder\"";

if(!$query->orderby || ($query->orderby == $this->owner->stat('default_sort')))
$query->orderby = "$sort_field " . self::$sort_dir;
public function augmentSQL(SQLQuery &$query) {
if(empty($query->select) || $query->delete || in_array("COUNT(*)",$query->select) || in_array("count(*)",$query->select))
return;

$sort_field = false;
if($join_classes = self::get_join_tables($this->owner->class)) {
foreach($query->from as $from) {
if($sort_field)
break;
foreach($join_classes as $join_tables) {
if($sort_field)
break;
foreach ($join_tables as $join_table) {
if(stristr($from,$join_table)) {
$sort_field = "\"$join_table\".\"SortOrder\"";
if(isset($query->select['SortOrder'])) {
$query->select['SortOrder'] = "$sort_field AS LocalSort";
}
break;
}
}
}
}
}

if(!$sort_field)
$sort_field = "\"SortOrder\"";

if(!$query->orderby or $query->orderby == $this->owner->stat('default_sort')) {
$query->orderby = "$sort_field " . self::$sort_dir;
}
}


Expand Down
1 change: 1 addition & 0 deletions code/flv/shadowbox/languages/shadowbox-uk.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

154 changes: 154 additions & 0 deletions code/simple_tinymce_field/javascript/tiny_mce/langs/uk.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
tinyMCE.addI18n({uk:{
common:{
edit_confirm:"Чи бажаэте ви використати WYSIWYG-редактор для цього поля?",
apply:"Застосувати",
insert:"Вставити",
update:"Поновити",
cancel:"Відмінити",
close:"Зактити",
browse:"Обрати",
class_name:"Клас",
not_set:"-- не встановлено --",
clipboard_msg:"Копіювання/Вирізка/Вставка не доступні в Mozilla та Firefox.\nЧи бажаєте узнати більше про цю проблему?",
clipboard_no_support:"Наразі не підтримується вашим браузером. Використовуйте клавіатурні комбінації для цієї дії.",
popup_blocked:"Прикро, але ваш блокувальник popup-вікон заблокував вікно, яке реалізує функціонал редактора. Вам необхідно відключити блокування для цього сайту, щоб мати змогу користуватися цим інструментом.",
invalid_data:"Помилка: Введено некоретні дані. Такі поля позначені червоним.",
more_colors:"Ще кольори"
},
contextmenu:{
align:"Вирівнювання",
left:"По лівому краю",
center:"По центру",
right:"По правому краю",
full:"По ширині"
},
insertdatetime:{
date_fmt:"%Y-%m-%d",
time_fmt:"%H:%M:%S",
insertdate_desc:"Вставити дату",
inserttime_desc:"Вставити час",
months_long:"Січень,Лютий,Березень,Квітень,Травень,Червень,Липень,Серпень,Вересень,Жовтень,Листопад,Грудень",
months_short:"Січ,Лют,Бер,Квт,Трв,Чрв,Лип,Сер,Вер,Жов,Лис,Грд",
day_long:"Неділя,Понеділок,Вівторок,Середа,Червер,П'ятниця,Субота,Неділя",
day_short:"Нд,Пн,Вт,Ср,Чт,Пт,Сб,Нд"
},
print:{
print_desc:"Друкувати"
},
preview:{
preview_desc:"Попередній перегляд"
},
directionality:{
ltr_desc:"Напрям зліва направо",
rtl_desc:"Напрям зправа наліво"
},
layer:{
insertlayer_desc:"Додати новий шар",
forward_desc:"Вперед",
backward_desc:"Назад",
absolute_desc:"Перемкнути абсолютне позиціювання",
content:"Новий шар..."
},
save:{
save_desc:"Зберегти",
cancel_desc:"Відмінити всі зміни"
},
nonbreaking:{
nonbreaking_desc:"Вставити нерозривний пробіл"
},
iespell:{
iespell_desc:"Перевірити орфографію",
download:"ieSpell не знайдено. Чи бажаєте встановити?"
},
advhr:{
advhr_desc:"Horizontal rule"
},
emotions:{
emotions_desc:"Смайлики"
},
searchreplace:{
search_desc:"Шукати",
replace_desc:"Пошук/Заміна"
},
advimage:{
image_desc:"Вставити/редагувати зображення"
},
advlink:{
link_desc:"Вставити/редагувати посилання"
},
xhtmlxtras:{
cite_desc:"Цитування",
abbr_desc:"Абревіатура",
acronym_desc:"Акронім",
del_desc:"Видалити",
ins_desc:"Вставити",
attribs_desc:"Вставити/редагувати атрибути"
},
style:{
desc:"Редагувати CSS Стиль"
},
paste:{
paste_text_desc:"Вставити як текст",
paste_word_desc:"Вставити з Word",
selectall_desc:"Виділити все"
},
paste_dlg:{
text_title:"Користуйтесь CTRL+V на клавіатурі щоб вставити текст у вікно.",
text_linebreaks:"Зберігати переноси рядків",
word_title:"Користуйтесь CTRL+V на клавіатурі щоб вставити текст у вікно."
},
table:{
desc:"Вставити нову таблицю",
row_before_desc:"Додати рядок перед",
row_after_desc:"Додати рядок після",
delete_row_desc:"Видалити рядок",
col_before_desc:"Додати стовбчик перед",
col_after_desc:"Додати стовбчик після",
delete_col_desc:"Видалити стовбчик",
split_cells_desc:"Розділити об'єднані комірки таблиці",
merge_cells_desc:"Об'єднати комірки",
row_desc:"Властивості рядка таблиці",
cell_desc:"Властивості комірки таблиці",
props_desc:"Властивості таблиці",
paste_row_before_desc:"Вставити рядок перед",
paste_row_after_desc:"Вставити рядок після",
cut_row_desc:"Вирізати рядок",
copy_row_desc:"Копіювати рядок",
del:"Видалити таблицю",
row:"Рядок",
col:"Стовбчик",
cell:"Комірка"
},
autosave:{
unload_msg:"Якщо ви залишите сторінку, ві зміни, що ви не зберегли, буде втрачено."
},
fullscreen:{
desc:"Перемкнути повноекранний режим"
},
media:{
desc:"Встатити/редагувати embedded media",
edit:"Редагувати embedded media"
},
fullpage:{
desc:"Властивості документу"
},
template:{
desc:"Вставити predefined template content"
},
visualchars:{
desc:"Показувати/ні службові символи."
},
spellchecker:{
desc:"Увімкнути/вимкнути перевірку орфографії",
menu:"Налаштування перевірки орфографії",
ignore_word:"Ігнорувати слово",
ignore_words:"Ігнорувати все",
langs:"Мови",
wait:"Будь ласка, зачекайте...",
sug:"Підказки",
no_sug:"Немає підказок",
no_mpell:"Помилок не знайдено."
},
pagebreak:{
desc:"Вставити розрив сторінки."
}}});
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
tinyMCE.addI18n('uk.advhr_dlg',{
width:"\u0428\u0438\u0440\u0438\u043D\u0430",
size:"\u0412\u0438\u0441\u043E\u0442\u0430",
noshade:"\u0411\u0435\u0437 \u0442\u0456\u043D\u0456"
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
tinyMCE.addI18n('uk.advimage_dlg',{
tab_general:"Загальне",
tab_appearance:"Вигляд",
tab_advanced:"Додатково",
general:"Загальне",
title:"Заголовок",
preview:"Попередній перегляд",
constrain_proportions:"Зберігати пропорції",
langdir:"Напрямок письма",
langcode:"Код мови",
long_desc:"Long description link",
style:"Стиль",
classes:"Класи",
ltr:"Зліва направо",
rtl:"Зправа наліво",
id:"Атрибут Id",
map:"Атрибут map",
swap_image:"Swap image",
alt_image:"Альтернативне зображення",
mouseover:"при навеленні миші",
mouseout:"при відведенні миші",
misc:"Різне",
example_img:"Попередній перегляд",
missing_alt:"Ви певні, що бажаєте продовжити, не заповнюючи опис зображення? Без зображення буде недоступне користувачам з деякими вадами, а також користувачам текстових браузерів та тим, хто вимкнув зображення.",
dialog_title:"Вставити/редагувати зображення",
src:"URL зображення",
alt:"Атрибут Alt (відображається, якщо зображення не завантажене)",
list:"Image list",
border:"Рамка",
dimensions:"Розміри",
vspace:"Вертикальний відступ",
hspace:"Горизонтальний відступ",
align:"Вирівнювання",
align_baseline:"Baseline",
align_top:"Top",
align_middle:"Middle",
align_bottom:"Bottom",
align_texttop:"Text top",
align_textbottom:"Text bottom",
align_left:"По лівому краю",
align_right:"По правому краю",
image_list:"Image list"
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
tinyMCE.addI18n('uk.advlink_dlg',{
title:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438/\u0437\u043C\u0456\u043D\u0438\u0442\u0438 \u043F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F",
url:"\u0410\u0434\u0440\u0435\u0441\u0430",
target:"\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u0432...",
titlefield:"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A",
is_email:"\u0412\u0432\u0435\u0434\u0435\u043D\u0438\u0439 URL \u0441\u0445\u043E\u0436\u0438\u0439 \u043D\u0430 email \u0430\u0434\u0440\u0435\u0441\u0443, \u0432\u0438 \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0434\u043E\u0434\u0430\u0442\u0438 \u043D\u0435\u043E\u0431\u0445\u0456\u0434\u043D\u0438\u0439 \u043F\u0440\u0435\u0444\u0456\u043A\u0441 mailto?",
is_external:"\u0412\u0432\u0435\u0434\u0435\u043D\u0438\u0439 URL \u0441\u0445\u043E\u0436\u0438\u0439 \u043D\u0430 \u0437\u043E\u0432\u043D\u0456\u0448\u043D\u0454 \u043F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F, \u0432\u0438 \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0434\u043E\u0434\u0430\u0442\u0438 \u043D\u0435\u043E\u0431\u0445\u0456\u0434\u043D\u0438\u0439 \u043F\u0440\u0435\u0444\u0456\u043A\u0441 http://?",
list:"\u0421\u043F\u0438\u0441\u043E\u043A \u043F\u043E\u0441\u0438\u043B\u0430\u043D\u044C",
general_tab:"\u0417\u0430\u0433\u0430\u043B\u044C\u043D\u0435",
popup_tab:"Popup",
events_tab:"\u041F\u043E\u0434\u0456\u0457",
advanced_tab:"\u0414\u043E\u0434\u0430\u0442\u043A\u043E\u0432\u043E",
general_props:"\u0417\u0430\u0433\u0430\u043B\u044C\u043D\u0456 \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456",
popup_props:"\u0412\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456 Popup",
event_props:"\u041F\u043E\u0434\u0456\u0457",
advanced_props:"\u0420\u043E\u0437\u0448\u0438\u0440\u0435\u043D\u043D\u0456 \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456",
popup_opts:"\u0412\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456",
anchor_names:"\u042F\u043A\u043E\u0440\u0456",
target_same:"\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u0432 \u0446\u044C\u043E\u043C\u0443 \u0436 \u0432\u0456\u043A\u043D\u0456 / \u0444\u0440\u0435\u0439\u043C\u0456",
target_parent:"\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u0432 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u043E\u043C\u0443 \u0432\u0456\u043A\u043D\u0456 / \u0444\u0440\u0435\u0439\u043C\u0456",
target_top:"\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u0443 \u0432\u0435\u0440\u0445\u043D\u044C\u043E\u043C\u0443 \u0444\u0440\u0435\u0439\u043C\u0456 (\u0437\u0430\u043C\u0456\u043D\u0438\u0442\u0438 \u0432\u0441\u0456 \u0444\u0440\u0435\u0439\u043C\u0438)",
target_blank:"\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u0432 \u043D\u043E\u0432\u043E\u043C\u0443 \u0432\u0456\u043A\u043D\u0456",
popup:"Javascript popup",
popup_url:"Popup URL",
popup_name:"\u041D\u0430\u0437\u0432\u0430 \u0432\u0456\u043A\u043D\u0430",
popup_return:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 'return false'",
popup_scrollbars:"\u041F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0441\u043A\u0440\u043E\u043B\u0435\u0440\u0438",
popup_statusbar:"\u041F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0441\u0442\u0430\u0442\u0443\u0441",
popup_toolbar:"\u041F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043F\u0430\u043D\u0435\u043B\u0456 \u0456\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0456\u0432",
popup_menubar:"\u041F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043C\u0435\u043D\u044E",
popup_location:"\u041F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043F\u0430\u043D\u0435\u043B\u044C location",
popup_resizable:"\u0414\u043E\u0437\u0432\u043E\u043B\u044F\u0442\u0438 \u0437\u043C\u0456\u043D\u044E\u0432\u0430\u0442\u0438 \u0440\u043E\u0437\u043C\u0456\u0440",
popup_dependent:"Dependent (\u043B\u0438\u0448\u0435 \u0434\u043B\u044F Mozilla/Firefox)",
popup_size:"\u0420\u043E\u0437\u043C\u0456\u0440",
popup_position:"\u041F\u043E\u0437\u0438\u0446\u0456\u044F (X/Y)",
id:"Id",
style:"\u0421\u0442\u0438\u043B\u044C",
classes:"\u041A\u043B\u0430\u0441\u0438",
target_name:"Target name",
langdir:"\u041D\u0430\u043F\u0440\u044F\u043C \u043C\u043E\u0432\u0438",
target_langcode:"Target language",
langcode:"\u041A\u043E\u0434 \u043C\u043E\u0432\u0438",
encoding:"Target character encoding",
mime:"Target MIME type",
rel:"Relationship page to target",
rev:"Relationship target to page",
tabindex:"Tabindex",
accesskey:"Accesskey",
ltr:"\u0417\u043B\u0456\u0432\u0430 \u043F\u0440\u0430\u0432\u043E\u0440\u0443\u0447",
rtl:"\u0421\u043F\u0440\u0430\u0432\u0430 \u043B\u0456\u0432\u043E\u0440\u0443\u0447",
link_list:"\u0421\u043F\u0438\u0441\u043E\u043A \u043F\u043E\u0441\u0438\u043B\u0430\u043D\u044C"
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
tinyMCE.addI18n('uk.emotions_dlg',{
title:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0441\u043C\u0430\u0439\u043B",
desc:"\u0421\u043C\u0430\u0439\u043B\u0438",
cool:"Cool",
cry:"Cry",
embarassed:"Embarassed",
foot_in_mouth:"Foot in mouth",
frown:"Frown",
innocent:"Innocent",
kiss:"Kiss",
laughing:"Laughing",
money_mouth:"Money mouth",
sealed:"Sealed",
smile:"Smile",
surprised:"Surprised",
tongue_out:"Tongue out",
undecided:"Undecided",
wink:"Wink",
yell:"Yell"
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
tinyMCE.addI18n('uk.example',{
desc : 'Це лише кнопка шаблону'
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
tinyMCE.addI18n('uk.example_dlg',{
title : 'Це лише заголовок прикладу'
});
Loading

0 comments on commit 0979a47

Please sign in to comment.