diff --git a/html/index_head_functions_add.html b/html/index_head_functions_add.html index 5b7245f..4727939 100755 --- a/html/index_head_functions_add.html +++ b/html/index_head_functions_add.html @@ -42,7 +42,7 @@ [end] - +[# !! co to?] [if winix_function_is "gallery-old"] [if-one gallery_has_not_mount_type gallery_mount_type_arg_is "lightbox"] diff --git a/locale/pl b/locale/pl index 88ad6b3..fc909fd 100755 --- a/locale/pl +++ b/locale/pl @@ -135,9 +135,9 @@ html_lang_attr_value = "pl" # current limitation: winix is not allowed to convert polish capital letters to lower case # so we need to give both versions (small and capital letters) -language_orphans = ( "(np.", "a", "al.", "ale", "bo", "bp", "by", "co", "cz.", "czy", "dn.", +language_orphans = ( "(np.", "a", "al.", "ale", "aż", "aŻ", "bo", "bp", "by", "co", "cz.", "czy", "dn.", "doc.", "dr", "dyr.", "dz.", "do", "ds.", "fot.", "go", "godz.", "i", - "ich", "im.", "inż.", "inŻ.", "ja", "je", "jej", "jest", "już", "juŻ", "ją", + "ich", "im.", "inż.", "inŻ.", "iż", "iŻ", "ja", "je", "jej", "jest", "już", "juŻ", "ją", "jĄ", "ks.", "ku", "li", "m.in.", "mgr", "mi", "na", "nie", "np.", "nr", "o", "od", "os.", "ów", "Ów", "po", "prof.", "s.", "są", "sĄ", "ta", "to", "tu", "tą", "tĄ", "tel.", "tę", "tĘ", "u", "ul.", "w", "we", "wg", diff --git a/plugins/menu/templates.cpp b/plugins/menu/templates.cpp index 6a33bbf..82220e2 100755 --- a/plugins/menu/templates.cpp +++ b/plugins/menu/templates.cpp @@ -15,17 +15,19 @@ // !! temporarily -template +template class Stack { public: - typedef Key StackKey; + typedef Key1 StackKey1; + typedef Key2 StackKey2; typedef Value StackValue; struct Item { - StackKey key; + StackKey1 key1; + StackKey2 key2; StackValue value; }; @@ -37,11 +39,11 @@ public: - StackValue * Get(const StackKey & key) + StackValue * Get(const StackKey1 & key1, const StackKey2 & key2) { for(size_t i=0 ; i menu_dir_stack; +static Stack menu_dir_stack; static size_t req_id = 0; +static std::wstring strempty; - -// O(n^2) complexity +// warning: O(n^2) complexity void menu_dir_skip_items(long parent_id) { Mount * m = system->mounts.CalcMount(parent_id); @@ -135,20 +138,19 @@ void menu_dir_skip_items(long parent_id) } -void menu_dir_skip_static_files() -{ - for(size_t x=0 ; xitems.size() ; ) - { - if( menu_dir->items[x].type == Item::file && menu_dir->items[x].file_type != WINIX_ITEM_FILETYPE_NONE ) - menu_dir->items.erase(menu_dir->items.begin() + x); - else - x += 1; - } +void menu_dir_skip_static_files() +{ + for(size_t x=0 ; xitems.size() ; ) + { + if( menu_dir->items[x].type == Item::file && menu_dir->items[x].file_type != WINIX_ITEM_FILETYPE_NONE ) + menu_dir->items.erase(menu_dir->items.begin() + x); + else + x += 1; + } } - -void menu_dir_load_menu(long parent_id) +void menu_dir_load_menu(long parent_id, const std::wstring & arg) { iq.SetAll(false, false); iq.sel_subject = true; @@ -158,39 +160,54 @@ void menu_dir_load_menu(long parent_id) iq.sel_file = true; iq.WhereParentId(parent_id); - db->GetItems(menu_dir->items, iq); + if( arg == L"images" ) + { + iq.WhereType(Item::file); + iq.WhereFileType(WINIX_ITEM_FILETYPE_IMAGE); + } + else + if( arg == L"dirs" ) + { + iq.WhereType(Item::dir); + } + else + if( arg == L"files" ) + { + iq.WhereType(Item::file); + } + else + if( arg == L"" ) + { + } + else + { + log << log1 << "Menu: unknown parameter: " << arg << logend; + } + + db->GetItems(menu_dir->items, iq); menu_dir_skip_items(parent_id); - menu_dir_skip_static_files(); + + // !! FIXME: in the future is better to have DbItemQuery with a special option + // that skips static files + if( arg == L"" ) + menu_dir_skip_static_files(); // !! temporarily for debug purposes log << log1 << "Menu: db used" << logend; } - -void menu_dir_init(const std::wstring & path) +void menu_dir_init(const std::wstring & path, const std::wstring & arg) { - if( cur->request->id != req_id ) - { - menu_dir_stack.Clear(); - req_id = cur->request->id; - } - - menu_dir = menu_dir_stack.Get(path); - - if( !path.empty() && path[0] != '/' ) - { - log << log1 << "Menu: path for menu should not be relative" << logend; - return; - } + menu_dir = menu_dir_stack.Get(path, arg); if( menu_dir_stack.AddedNew() ) { if( path.empty() ) { // current directory - menu_dir_load_menu(cur->request->dir_tab.back()->id); + menu_dir_load_menu(cur->request->dir_tab.back()->id, arg); system->dirs.MakePath(cur->request->dir_tab, menu_dir->dir); } else @@ -199,7 +216,7 @@ void menu_dir_init(const std::wstring & path) Item * pdir = system->dirs.GetDir(path); if( pdir ) - menu_dir_load_menu(pdir->id); + menu_dir_load_menu(pdir->id, arg); else log << log1 << "Menu: I cannot find a directory: " << path << logend; } @@ -208,9 +225,37 @@ void menu_dir_init(const std::wstring & path) +void menu_dir_init(const std::vector & params) +{ + if( cur->request->id != req_id ) + { + menu_dir_stack.Clear(); + menu_dir = 0; + req_id = cur->request->id; + } + + if( !params.empty() && !params[0].empty() && params[0][0] != '/' ) + { + log << log1 << "Menu: path for a menu should not be relative" << logend; + return; + } + + strempty.clear(); // for safety + + if( params.empty() ) + menu_dir_init(strempty, strempty); + else + if( params.size() == 1 ) + menu_dir_init(params[0], strempty); + else + menu_dir_init(params[0], params[1]); +} + + + void menu_dir_tab(Info & i) { - menu_dir_init(i.par); + menu_dir_init(i.params); menu_dir->index = i.iter; i.res = menu_dir->index < menu_dir->items.size(); @@ -219,14 +264,14 @@ void menu_dir_tab(Info & i) void menu_dir_tab_subject(Info & i) { - if( menu_dir->index < menu_dir->items.size() ) + if( menu_dir && menu_dir->index < menu_dir->items.size() ) i.out << menu_dir->items[menu_dir->index].subject; } void menu_dir_tab_url(Info & i) { - if( menu_dir->index < menu_dir->items.size() ) + if( menu_dir && menu_dir->index < menu_dir->items.size() ) i.out << menu_dir->items[menu_dir->index].url; } @@ -236,7 +281,7 @@ void menu_dir_tab_url(Info & i) void menu_dir_tab_link(Info & i) { - if( menu_dir->index < menu_dir->items.size() ) + if( menu_dir && menu_dir->index < menu_dir->items.size() ) { i.out << menu_dir->dir; @@ -251,7 +296,7 @@ void menu_dir_tab_link(Info & i) void menu_dir_tab_is_current(Info & i) { - if( menu_dir->index < menu_dir->items.size() ) + if( menu_dir && menu_dir->index < menu_dir->items.size() ) { i.res = (menu_dir->items[menu_dir->index].id == cur->request->last_item->id); } @@ -263,7 +308,7 @@ void menu_dir_tab_is_current(Info & i) // returning true if the dir tab element is a first parent for current item void menu_dir_tab_is_first_parent_for_current_item(Info & i) { - if( menu_dir->index < menu_dir->items.size() ) + if( menu_dir && menu_dir->index < menu_dir->items.size() ) i.res = (menu_dir->items[menu_dir->index].id == cur->request->last_item->parent_id); } @@ -272,7 +317,7 @@ void menu_dir_tab_is_first_parent_for_current_item(Info & i) // (it don't have to be the first parent - it can be a descendant) void menu_dir_tab_is_parent_for_current_item(Info & i) { - if( menu_dir->index < menu_dir->items.size() ) + if( menu_dir && menu_dir->index < menu_dir->items.size() ) { size_t len = cur->request->dir_tab.size(); // at least one diff --git a/static/basic/winix.css b/static/basic/winix.css index ce6d2e6..2f14f53 100755 --- a/static/basic/winix.css +++ b/static/basic/winix.css @@ -550,6 +550,7 @@ ul.galleryimages li { display: block; float: left; margin: 0 0 6px 10px; +background: none; } ul.galleryimages a, ul.galleryimages a:hover, ul.galleryimages a:focus, ul.galleryimages a:active { @@ -599,8 +600,12 @@ height: 50px; div#fileupload { -font-size: 0.8em; +font-size: 11px; +/* warning: file upload "add file" button doesn't want to work for small fonts in Firefox */ } +div#fileupload table, div#fileupload th, div#fileupload td { +border: none; +} diff --git a/static/layout1/winix.css b/static/layout1/winix.css index ea463c9..0f3fe51 100755 --- a/static/layout1/winix.css +++ b/static/layout1/winix.css @@ -889,6 +889,7 @@ ul.galleryimages li { display: block; float: left; margin: 0 0 6px 10px; +background: none; } ul.galleryimages a, ul.galleryimages a:hover, ul.galleryimages a:focus, ul.galleryimages a:active { @@ -938,6 +939,11 @@ height: 50px; div#fileupload { -font-size: 0.8em; +font-size: 11px; +/* warning: file upload "add file" button doesn't want to work for small fonts in Firefox */ +} + +div#fileupload table, div#fileupload th, div#fileupload td { +border: none; }