fixed: meta and admin meta information were not saved in memory (in system.dirs)

when 'meta' winix function was used
added: to DbItemsQuery
       sort_index_asc and sort_index_date
       different sort type can be made by 'index' and by 'date'
		     



git-svn-id: svn://ttmath.org/publicrep/winix/trunk@1013 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
Tomasz Sowa 2015-06-16 02:37:07 +00:00
parent f54df8d600
commit 632b49ab90
8 changed files with 34 additions and 16 deletions

View File

@ -869,6 +869,15 @@ void Db::GetItemsQueryWhere(const DbItemQuery & iq, DbTextStream & query)
} }
void Db::GetItemsQueryOrder(bool sort_asc)
{
if( sort_asc )
query << R(" asc");
else
query << R(" desc");
}
void Db::GetItemsQueryOrder(const DbItemQuery & iq, DbTextStream & query) void Db::GetItemsQueryOrder(const DbItemQuery & iq, DbTextStream & query)
{ {
if( iq.sel_sort_index || iq.sel_date ) if( iq.sel_sort_index || iq.sel_date )
@ -876,7 +885,10 @@ void Db::GetItemsQueryOrder(const DbItemQuery & iq, DbTextStream & query)
query << R(" order by"); query << R(" order by");
if( iq.sel_sort_index ) if( iq.sel_sort_index )
{
query << R(" sort_index"); query << R(" sort_index");
GetItemsQueryOrder(iq.sort_index_asc);
}
if( iq.sel_date ) if( iq.sel_date )
{ {
@ -884,12 +896,8 @@ void Db::GetItemsQueryOrder(const DbItemQuery & iq, DbTextStream & query)
query << R(","); query << R(",");
query << R(" item.date_creation"); query << R(" item.date_creation");
GetItemsQueryOrder(iq.sort_date_asc);
} }
if( iq.sort_asc )
query << R(" asc");
else
query << R(" desc");
} }
} }

View File

@ -159,6 +159,7 @@ protected:
void GetItemsQuerySelect(const DbItemQuery & iq, DbTextStream & query, bool skip_other_sel); void GetItemsQuerySelect(const DbItemQuery & iq, DbTextStream & query, bool skip_other_sel);
void GetItemsQueryJoin(const DbItemQuery & iq, DbTextStream & query); void GetItemsQueryJoin(const DbItemQuery & iq, DbTextStream & query);
void GetItemsQueryWhere(const DbItemQuery & iq, DbTextStream & query); void GetItemsQueryWhere(const DbItemQuery & iq, DbTextStream & query);
void GetItemsQueryOrder(bool sort_asc);
void GetItemsQueryOrder(const DbItemQuery & iq, DbTextStream & query); void GetItemsQueryOrder(const DbItemQuery & iq, DbTextStream & query);
void GetItemsQueryLimit(const DbItemQuery & iq, DbTextStream & query); void GetItemsQueryLimit(const DbItemQuery & iq, DbTextStream & query);
PGresult * GetItemsQuery(const DbItemQuery & iq, DbTextStream & query, bool skip_other_sel = false); PGresult * GetItemsQuery(const DbItemQuery & iq, DbTextStream & query, bool skip_other_sel = false);

View File

@ -5,7 +5,7 @@
*/ */
/* /*
* Copyright (c) 2010-2014, Tomasz Sowa * Copyright (c) 2010-2015, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -49,7 +49,8 @@ DbItemQuery::DbItemQuery()
void DbItemQuery::Clear() void DbItemQuery::Clear()
{ {
sort_asc = true; sort_index_asc = true;
sort_date_asc = true;
SetAll(true, false); SetAll(true, false);

View File

@ -5,7 +5,7 @@
*/ */
/* /*
* Copyright (c) 2010-2014, Tomasz Sowa * Copyright (c) 2010-2015, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -75,7 +75,8 @@ struct DbItemQuery
bool type_equal; bool type_equal;
int file_type; int file_type;
bool file_type_equal; // if true means file_type should be equal bool file_type_equal; // if true means file_type should be equal
bool sort_asc; bool sort_index_asc;
bool sort_date_asc;
const std::vector<long> * id_tab; // != 0 if WhereIdIn was used const std::vector<long> * id_tab; // != 0 if WhereIdIn was used

View File

@ -5,7 +5,7 @@
*/ */
/* /*
* Copyright (c) 2011-2014, Tomasz Sowa * Copyright (c) 2011-2015, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -133,7 +133,12 @@ void Meta::ChangeAdminMeta()
const std::wstring & meta_str = cur->request->PostVar(L"itemmeta"); const std::wstring & meta_str = cur->request->PostVar(L"itemmeta");
if( EditAdminMeta(cur->request->last_item->id, meta_str, true) ) if( EditAdminMeta(cur->request->last_item->id, meta_str, true) )
{
if( cur->request->last_item->type == Item::dir )
cur->request->last_item->ameta = space;
system->RedirectToLastItem(); system->RedirectToLastItem();
}
} }
} }
@ -145,7 +150,12 @@ void Meta::ChangeMeta()
const std::wstring & meta_str = cur->request->PostVar(L"itemmeta"); const std::wstring & meta_str = cur->request->PostVar(L"itemmeta");
if( EditMeta(cur->request->last_item->id, meta_str, true) ) if( EditMeta(cur->request->last_item->id, meta_str, true) )
{
if( cur->request->last_item->type == Item::dir )
cur->request->last_item->meta = space;
system->RedirectToLastItem(); system->RedirectToLastItem();
}
} }
} }

View File

@ -72,12 +72,8 @@ void ExportThread::SetBaseUrl(const std::wstring & url)
void ExportThread::AddMessage(const Message & message) void ExportThread::AddMessage(const Message & message)
{ {
log << log1 << "export thread: a" << logsave << logend;
message_tab.insert(message_tab.end(), message); message_tab.insert(message_tab.end(), message);
WakeUpThread(); WakeUpThread();
log << log1 << "export thread: b" << logsave << logend;
} }

View File

@ -5,7 +5,7 @@
*/ */
/* /*
* Copyright (c) 2011-2014, Tomasz Sowa * Copyright (c) 2011-2015, Tomasz Sowa
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -106,6 +106,7 @@ void read_from_db(long dir_id, int param, bool with_meta)
iq.sel_subject = true; iq.sel_subject = true;
iq.sel_url = true; iq.sel_url = true;
iq.sel_sort_index = true; iq.sel_sort_index = true;
iq.sort_date_asc = false; // !! FIXED ME we need an option for this
iq.sel_type = true; iq.sel_type = true;
iq.sel_file = true; iq.sel_file = true;
iq.sel_meta = with_meta; iq.sel_meta = with_meta;

View File

@ -86,7 +86,7 @@ void FunThread::PrepareThread(long file_id)
DbItemQuery iq; DbItemQuery iq;
if( system->mounts.pmount->IsArg(thread_info->mount_par_thread, L"sort_desc") ) if( system->mounts.pmount->IsArg(thread_info->mount_par_thread, L"sort_desc") )
iq.sort_asc = false; iq.sort_date_asc = false; // sort_index_asc we are ignoring
iq.WhereIdIn(id_tab); iq.WhereIdIn(id_tab);
iq.WhereType(Item::file); iq.WhereType(Item::file);