diff --git a/winixd/html/fun_ls.html b/winixd/html/fun_ls.html
index bc00405..0b18c9a 100644
--- a/winixd/html/fun_ls.html
+++ b/winixd/html/fun_ls.html
@@ -87,8 +87,8 @@
d |
[child_dirs.content.privileges_octal] |
- [child_dirs.content.user_name] |
- [child_dirs.content.group_name] |
+ [if child_dirs.content.has_user][child_dirs.content.user.login][end] |
+ [if child_dirs.content.has_group][child_dirs.content.group.name][end] |
[if child_dirs.is_parent_for_current_dir]
../
@@ -101,10 +101,10 @@
[for items]
|
- [if items.type_is_symlink]l[else][if items.has_static_file]s[else]-[end][end] |
+ [if items.type_is_symlink]l[else][if items.content.has_static_file]s[else]-[end][end] |
[items.content.privileges_octal] |
- [items.content.user_name] |
- [items.content.group_name] |
+ [if items.content.has_user][items.content.user.login][end] |
+ [if items.content.has_group][items.content.group.name][end] |
[items.url][if items.type_is_symlink] -> [items.content.link_to][end] |
[end]
diff --git a/winixd/models/group.cpp b/winixd/models/group.cpp
index 5355881..28b536e 100644
--- a/winixd/models/group.cpp
+++ b/winixd/models/group.cpp
@@ -39,6 +39,42 @@ namespace Winix
{
+Group::Group()
+{
+ Clear();
+}
+
+
+void Group::fields()
+{
+ field(L"id", id, morm::FT::no_insertable | morm::FT::no_updatable | morm::FT::primary_key);
+ field(L"name", name);
+}
+
+
+void Group::table()
+{
+ table_name(L"core", L"group");
+}
+
+
+void Group::after_insert()
+{
+ get_last_sequence_for_primary_key(L"core.group_id_seq", id);
+}
+
+
+void Group::Clear()
+{
+ id = -1;
+ name.clear();
+ //members.clear();
+}
+
+
+
+
+
bool Group::do_migration(int & current_table_version)
{
bool ok = true;
diff --git a/winixd/models/group.h b/winixd/models/group.h
index 8d10c0c..1ccdff1 100644
--- a/winixd/models/group.h
+++ b/winixd/models/group.h
@@ -53,36 +53,13 @@ public:
std::wstring name; // group name
//std::vector members; // users id
- Group()
- {
- Clear();
- }
+ Group();
+ void fields();
+ void table();
+ void after_insert();
- void fields()
- {
- field(L"id", id, morm::FT::no_insertable | morm::FT::no_updatable | morm::FT::primary_key);
- field(L"name", name);
- }
-
- void table()
- {
- table_name(L"core", L"group");
- }
-
- void after_insert()
- {
- get_last_sequence_for_primary_key(L"core.group_id_seq", id);
- }
-
-
- void Clear()
- {
- id = -1;
- name.clear();
- //members.clear();
- }
-
+ void Clear();
bool do_migration(int & current_table_version);
diff --git a/winixd/models/itemcontent.cpp b/winixd/models/itemcontent.cpp
index d08a440..e6e2b13 100644
--- a/winixd/models/itemcontent.cpp
+++ b/winixd/models/itemcontent.cpp
@@ -40,6 +40,7 @@
#include "core/request.h"
#include "core/users.h"
#include "core/groups.h"
+#include "templates/miscspace.h"
namespace Winix
@@ -88,6 +89,8 @@ void ItemContent::fields()
field(L"print_content", &ItemContent::print_content);
field(L"has_static_file", &ItemContent::has_static_file);
field(L"privileges_octal", &ItemContent::privileges_octal);
+ field(L"has_user", &ItemContent::has_user);
+ field(L"has_group", &ItemContent::has_group);
field(L"user", &ItemContent::user);
field(L"group", &ItemContent::group);
field(L"type_is", &ItemContent::type_is);
@@ -101,6 +104,19 @@ void ItemContent::fields()
field(L"has_thumb", &ItemContent::has_thumb);
field(L"display_user_name", &ItemContent::display_user_name);
+ field(L"meta_to_str", &ItemContent::meta_to_str);
+ field(L"meta_prop", &ItemContent::meta_prop);
+ field(L"meta_prop_no_escape", &ItemContent::meta_prop_no_escape);
+ field(L"meta_prop_tab", &ItemContent::meta_prop_tab);
+ field(L"meta_prop_tab_value", &ItemContent::meta_prop_tab_value);
+ field(L"meta_prop_tab_has_next",&ItemContent::meta_prop_tab_has_next);
+
+ field(L"admin_meta_to_str", &ItemContent::admin_meta_to_str);
+ field(L"admin_meta_prop", &ItemContent::admin_meta_prop);
+ field(L"admin_meta_prop_no_escape", &ItemContent::admin_meta_prop_no_escape);
+ field(L"admin_meta_prop_tab", &ItemContent::admin_meta_prop_tab);
+ field(L"admin_meta_prop_tab_value", &ItemContent::admin_meta_prop_tab_value);
+ field(L"admin_meta_prop_tab_has_next", &ItemContent::admin_meta_prop_tab_has_next);
// IMPROVEME prepare a setter functions which tests whether content_raw_type_helper and content_parsed_type_helper are correct values
@@ -433,6 +449,17 @@ void ItemContent::privileges_octal(EzcEnv & env)
}
+bool ItemContent::has_user() const
+{
+ return user_id != -1;
+}
+
+
+bool ItemContent::has_group() const
+{
+ return group_id != -1;
+}
+
void ItemContent::user(morm::ModelWrapper ** model_wrapper)
{
Users * users = get_users();
@@ -576,5 +603,75 @@ void ItemContent::display_user_name(EzcEnv & env)
}
+void ItemContent::meta_to_str(EzcEnv & env)
+{
+ meta.serialize_to_space_stream(env.out, true);
+}
+
+void ItemContent::meta_prop(EzcEnv & env)
+{
+ TemplatesFunctions::space_value(env, meta);
+}
+
+void ItemContent::meta_prop_no_escape(EzcEnv & env)
+{
+ TemplatesFunctions::space_value(env, meta, false);
+}
+
+
+void ItemContent::meta_prop_tab(EzcEnv & env)
+{
+ TemplatesFunctions::space_list_tab(env, meta);
+}
+
+void ItemContent::meta_prop_tab_value(EzcEnv & env)
+{
+ // FIXME there is no "item_meta_tab" now
+ TemplatesFunctions::space_list_tab_value(env, meta, L"item_meta_tab");
+}
+
+void ItemContent::meta_prop_tab_has_next(EzcEnv & env)
+{
+ // FIXME there is no "item_meta_tab" now
+ TemplatesFunctions::space_list_tab_has_next(env, meta, L"item_meta_tab");
+}
+
+
+
+void ItemContent::admin_meta_to_str(EzcEnv & env)
+{
+ meta_admin.serialize_to_space_stream(env.out, true);
+}
+
+void ItemContent::admin_meta_prop(EzcEnv & env)
+{
+ TemplatesFunctions::space_value(env, meta_admin);
+}
+
+void ItemContent::admin_meta_prop_no_escape(EzcEnv & env)
+{
+ TemplatesFunctions::space_value(env, meta_admin, false);
+}
+
+
+void ItemContent::admin_meta_prop_tab(EzcEnv & env)
+{
+ TemplatesFunctions::space_list_tab(env, meta_admin);
+}
+
+void ItemContent::admin_meta_prop_tab_value(EzcEnv & env)
+{
+ // FIXME there is no "item_admin_meta_tab" now
+ TemplatesFunctions::space_list_tab_value(env, meta_admin, L"item_admin_meta_tab");
+}
+
+void ItemContent::admin_meta_prop_tab_has_next(EzcEnv & env)
+{
+ // FIXME there is no "item_admin_meta_tab" now
+ TemplatesFunctions::space_list_tab_has_next(env, meta_admin, L"item_admin_meta_tab");
+}
+
+
+
} // namespace Winix
diff --git a/winixd/models/itemcontent.h b/winixd/models/itemcontent.h
index 5b92327..2b24efe 100644
--- a/winixd/models/itemcontent.h
+++ b/winixd/models/itemcontent.h
@@ -270,6 +270,8 @@ public:
bool is_sticky_bit_set() const;
+ bool has_user() const;
+ bool has_group() const;
protected:
@@ -292,7 +294,18 @@ protected:
void file_type_is_sound(EzcEnv & env);
void has_thumb(EzcEnv & env);
void display_user_name(EzcEnv & env);
-
+ void meta_to_str(EzcEnv & env);
+ void meta_prop(EzcEnv & env);
+ void meta_prop_no_escape(EzcEnv & env);
+ void meta_prop_tab(EzcEnv & env);
+ void meta_prop_tab_value(EzcEnv & env);
+ void meta_prop_tab_has_next(EzcEnv & env);
+ void admin_meta_to_str(EzcEnv & env);
+ void admin_meta_prop(EzcEnv & env);
+ void admin_meta_prop_no_escape(EzcEnv & env);
+ void admin_meta_prop_tab(EzcEnv & env);
+ void admin_meta_prop_tab_value(EzcEnv & env);
+ void admin_meta_prop_tab_has_next(EzcEnv & env);
MORM_MEMBER_FIELD(ItemContent)
diff --git a/winixd/templates/item.cpp b/winixd/templates/item.cpp
index 265badd..b1ec2ff 100644
--- a/winixd/templates/item.cpp
+++ b/winixd/templates/item.cpp
@@ -375,75 +375,75 @@ void item_sort(Info & i)
-void item_meta_str(Info & i)
-{
- cur->request->last_item->item_content.meta.serialize_to_space_stream(i.out, true);
-}
-
-
-void item_meta(Info & i)
-{
- space_value(i, cur->request->last_item->item_content.meta);
-}
-
-
-void item_meta_noescape(Info & i)
-{
- space_value(i, cur->request->last_item->item_content.meta, false);
-}
+//void item_meta_str(Info & i)
+//{
+// cur->request->last_item->item_content.meta.serialize_to_space_stream(i.out, true);
+//}
+//
+//
+//void item_meta(Info & i)
+//{
+// space_value(i, cur->request->last_item->item_content.meta);
+//}
+//
+//
+//void item_meta_noescape(Info & i)
+//{
+// space_value(i, cur->request->last_item->item_content.meta, false);
+//}
-void item_meta_tab(Info & i)
-{
- space_list_tab(i, cur->request->last_item->item_content.meta);
-}
-
-
-void item_meta_tab_value(Info & i)
-{
- space_list_tab_value(i, cur->request->last_item->item_content.meta, L"item_meta_tab");
-}
-
-
-
-void item_meta_tab_has_next(Info & i)
-{
- space_list_tab_has_next(i, cur->request->last_item->item_content.meta, L"item_meta_tab");
-}
+//void item_meta_tab(Info & i)
+//{
+// space_list_tab(i, cur->request->last_item->item_content.meta);
+//}
+//
+//
+//void item_meta_tab_value(Info & i)
+//{
+// space_list_tab_value(i, cur->request->last_item->item_content.meta, L"item_meta_tab");
+//}
+//
+//
+//
+//void item_meta_tab_has_next(Info & i)
+//{
+// space_list_tab_has_next(i, cur->request->last_item->item_content.meta, L"item_meta_tab");
+//}
-void item_admin_meta_str(Info & i)
-{
- cur->request->last_item->item_content.meta_admin.serialize_to_space_stream(i.out, true);
-}
-
-
-void item_admin_meta(Info & i)
-{
- space_value(i, cur->request->last_item->item_content.meta_admin);
-}
-
-
-void item_admin_meta_tab(Info & i)
-{
- space_list_tab(i, cur->request->last_item->item_content.meta_admin);
-}
-
-
-void item_admin_meta_tab_value(Info & i)
-{
- space_list_tab_value(i, cur->request->last_item->item_content.meta_admin, L"item_admin_meta_tab");
-}
-
-
-void item_admin_meta_tab_has_next(Info & i)
-{
- space_list_tab_has_next(i, cur->request->last_item->item_content.meta_admin, L"item_admin_meta_tab");
-}
-
+//void item_admin_meta_str(Info & i)
+//{
+// cur->request->last_item->item_content.meta_admin.serialize_to_space_stream(i.out, true);
+//}
+//
+//
+//void item_admin_meta(Info & i)
+//{
+// space_value(i, cur->request->last_item->item_content.meta_admin);
+//}
+//
+//
+//void item_admin_meta_tab(Info & i)
+//{
+// space_list_tab(i, cur->request->last_item->item_content.meta_admin);
+//}
+//
+//
+//void item_admin_meta_tab_value(Info & i)
+//{
+// space_list_tab_value(i, cur->request->last_item->item_content.meta_admin, L"item_admin_meta_tab");
+//}
+//
+//
+//void item_admin_meta_tab_has_next(Info & i)
+//{
+// space_list_tab_has_next(i, cur->request->last_item->item_content.meta_admin, L"item_admin_meta_tab");
+//}
+//
void item_can_content_be_html_filtered(Info & i)
{
diff --git a/winixd/templates/misc.cpp b/winixd/templates/misc.cpp
index f86d128..fc19f9c 100644
--- a/winixd/templates/misc.cpp
+++ b/winixd/templates/misc.cpp
@@ -161,6 +161,25 @@ void print_user_name(Info & i, User * puser, const std::wstring & guest_name)
}
+bool should_escape(Info & env)
+{
+ bool res = true;
+
+ for(size_t i=0 ; i < env.params.size() ; ++i)
+ {
+ // CHECKME what about env.params[i].is_function ?
+
+ if( env.params[i].str == L"noescape" || env.params[i].str == L"raw" )
+ {
+ res = false;
+ break;
+ }
+ }
+
+ return res;
+}
+
+
diff --git a/winixd/templates/misc.h b/winixd/templates/misc.h
index e51342d..60d213a 100644
--- a/winixd/templates/misc.h
+++ b/winixd/templates/misc.h
@@ -82,6 +82,7 @@ void print_date_nice(Info & i, const pt::Date & date);
void print_user_name(Info & i, User * puser, const std::wstring & guest_name);
+bool should_escape(Info & env);
} // namespace TemplatesFunctions
diff --git a/winixd/templates/templates.cpp b/winixd/templates/templates.cpp
index 873987b..75da6a3 100644
--- a/winixd/templates/templates.cpp
+++ b/winixd/templates/templates.cpp
@@ -475,17 +475,17 @@ void Templates::CreateFunctions()
ezc_functions.Insert("item_is_link_redirect", item_is_link_redirect);
ezc_functions.Insert("item_file_size", item_file_size);
ezc_functions.Insert("item_sort", item_sort);
- ezc_functions.Insert("item_meta_str", item_meta_str);
- ezc_functions.Insert("item_meta", item_meta);
- ezc_functions.Insert("item_meta_noescape", item_meta_noescape);
- ezc_functions.Insert("item_meta_tab", item_meta_tab);
- ezc_functions.Insert("item_meta_tab_value", item_meta_tab_value);
- ezc_functions.Insert("item_meta_tab_has_next", item_meta_tab_has_next);
- ezc_functions.Insert("item_admin_meta_str", item_admin_meta_str);
- ezc_functions.Insert("item_admin_meta", item_admin_meta);
- ezc_functions.Insert("item_admin_meta_tab", item_admin_meta_tab);
- ezc_functions.Insert("item_admin_meta_tab_value", item_admin_meta_tab_value);
- ezc_functions.Insert("item_admin_meta_tab_has_next", item_admin_meta_tab_has_next);
+// ezc_functions.Insert("item_meta_str", item_meta_str);
+// ezc_functions.Insert("item_meta", item_meta);
+// ezc_functions.Insert("item_meta_noescape", item_meta_noescape);
+// ezc_functions.Insert("item_meta_tab", item_meta_tab);
+// ezc_functions.Insert("item_meta_tab_value", item_meta_tab_value);
+// ezc_functions.Insert("item_meta_tab_has_next", item_meta_tab_has_next);
+// ezc_functions.Insert("item_admin_meta_str", item_admin_meta_str);
+// ezc_functions.Insert("item_admin_meta", item_admin_meta);
+// ezc_functions.Insert("item_admin_meta_tab", item_admin_meta_tab);
+// ezc_functions.Insert("item_admin_meta_tab_value", item_admin_meta_tab_value);
+// ezc_functions.Insert("item_admin_meta_tab_has_next", item_admin_meta_tab_has_next);
ezc_functions.Insert("item_can_content_be_html_filtered", item_can_content_be_html_filtered);
/*
diff --git a/winixd/templates/templates.h b/winixd/templates/templates.h
index 6d8172b..a1ba83e 100644
--- a/winixd/templates/templates.h
+++ b/winixd/templates/templates.h
@@ -365,17 +365,17 @@ namespace TemplatesFunctions
void item_is_link_redirect(Info & i);
void item_file_size(Info & i);
void item_sort(Info & i);
- void item_meta_str(Info & i);
- void item_meta(Info & i);
- void item_meta_noescape(Info & i);
- void item_meta_tab(Info & i);
- void item_meta_tab_value(Info & i);
- void item_meta_tab_has_next(Info & i);
- void item_admin_meta_str(Info & i);
- void item_admin_meta(Info & i);
- void item_admin_meta_tab(Info & i);
- void item_admin_meta_tab_value(Info & i);
- void item_admin_meta_tab_has_next(Info & i);
+ //void item_meta_str(Info & i);
+ //void item_meta(Info & i);
+ //void item_meta_noescape(Info & i);
+// void item_meta_tab(Info & i);
+// void item_meta_tab_value(Info & i);
+// void item_meta_tab_has_next(Info & i);
+// void item_admin_meta_str(Info & i);
+// void item_admin_meta(Info & i);
+// void item_admin_meta_tab(Info & i);
+// void item_admin_meta_tab_value(Info & i);
+// void item_admin_meta_tab_has_next(Info & i);
void item_can_content_be_html_filtered(Info & i);
/*