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;
}