From: <ps...@us...> - 2009-06-19 15:35:01
|
Revision: 1545 http://znc.svn.sourceforge.net/znc/?rev=1545&view=rev Author: psychon Date: 2009-06-19 15:34:59 +0000 (Fri, 19 Jun 2009) Log Message: ----------- CTempalte: Fix a minor error in a debug message Patch by KiNgMaR, thanks Modified Paths: -------------- trunk/Template.cpp Modified: trunk/Template.cpp =================================================================== --- trunk/Template.cpp 2009-06-18 19:32:12 UTC (rev 1544) +++ trunk/Template.cpp 2009-06-19 15:34:59 UTC (rev 1545) @@ -43,7 +43,7 @@ CTemplate* pTemplate = GetCurRow(); if (!pTemplate) { - DEBUG("Loop [" + GetName() + "] has no row index [" + CString(GetCurRow()) + "]"); + DEBUG("Loop [" + GetName() + "] has no row index [" + CString(GetRowIndex()) + "]"); return ""; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pr...@us...> - 2010-03-03 01:47:32
|
Revision: 1802 http://znc.svn.sourceforge.net/znc/?rev=1802&view=rev Author: prozacx Date: 2010-03-03 01:47:26 +0000 (Wed, 03 Mar 2010) Log Message: ----------- Removed some debug comments and a debug print Modified Paths: -------------- trunk/Template.cpp Modified: trunk/Template.cpp =================================================================== --- trunk/Template.cpp 2010-03-01 02:06:25 UTC (rev 1801) +++ trunk/Template.cpp 2010-03-03 01:47:26 UTC (rev 1802) @@ -668,20 +668,8 @@ } if (sExpr.find("!=") != CString::npos) { - // GOOD: - // >>>>>>>>>>>>>>>>>>> [PageName] [index] -> [PageName != "index"] - // >>>>>>>>>>>>>>>>>>> [PageName] [help] -> [PageName != "help"] - // - // BAD: - // >>>>>>>>>>>>>>>>>>> [PageName] ["index"] -> [PageName != "index"] - // >>>>>>>>>>>>>>>>>>> [PageName] ["help"] -> [PageName != "help"] - // - -//CString CTemplate::Token(const CString& sStr, unsigned int uPos, bool bRest, const CString& sSep, bool bAllowEmpty, - // const CString& sLeft, const CString& sRight, bool bTrimQuotes) { sName = sExpr.Token(0, false, "!=").Trim_n(); sValue = sExpr.Token(1, true, "!=", false, "\"", "\"", true).Trim_n(); - DEBUG(">>>>>>>>>>>>>>>>>>> [" + sName + "] [" + sValue + "] -> [" + sExpr + "]"); bNegate = !bNegate; } else if (sExpr.find("==") != CString::npos) { sName = sExpr.Token(0, false, "==").Trim_n(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cf...@us...> - 2010-04-28 21:34:18
|
Revision: 1948 http://znc.svn.sourceforge.net/znc/?rev=1948&view=rev Author: cflakes Date: 2010-04-28 21:34:09 +0000 (Wed, 28 Apr 2010) Log Message: ----------- Added the ability to sort template loop data based on a key. e.g. <? LOOP name SORTASC=key ?> or <? LOOP name SORTDESC=key ?> Patch by BrianC, thanks again. Modified Paths: -------------- trunk/Template.cpp Modified: trunk/Template.cpp =================================================================== --- trunk/Template.cpp 2010-04-27 15:40:24 UTC (rev 1947) +++ trunk/Template.cpp 2010-04-28 21:34:09 UTC (rev 1948) @@ -9,6 +9,7 @@ #include "Template.h" #include "FileUtils.h" #include <sstream> +#include <algorithm> using std::stringstream; @@ -201,6 +202,15 @@ return true; } +class CLoopSorter { + CString m_sType; +public: + CLoopSorter(const CString& sType) : m_sType(sType) {} + bool operator()(CTemplate* pTemplate1, CTemplate* pTemplate2) { + return (pTemplate1->GetValue(m_sType, false) < pTemplate2->GetValue(m_sType, false)); + } +}; + CTemplate& CTemplate::AddRow(const CString& sName) { CTemplate* pTmpl = new CTemplate(m_spOptions, this); m_mvLoops[sName].push_back(pTmpl); @@ -429,8 +439,24 @@ CString sLoopName = sArgs.Token(0); bool bReverse = (sArgs.Token(1).Equals("REVERSE")); + bool bSort = (sArgs.Token(1).Left(4).Equals("SORT")); vector<CTemplate*>* pvLoop = GetLoop(sLoopName); + if (bSort) { + CString sKey; + + if(sArgs.Token(1).TrimPrefix_n("SORT").Left(4).Equals("ASC=")) { + sKey = sArgs.Token(1).TrimPrefix_n("SORTASC="); + } else if(sArgs.Token(1).TrimPrefix_n("SORT").Left(5).Equals("DESC=")) { + sKey = sArgs.Token(1).TrimPrefix_n("SORTDESC="); + bReverse = true; + } + + if (!sKey.empty()) { + std::sort(pvLoop->begin(), pvLoop->end(), CLoopSorter(sKey)); + } + } + if (pvLoop) { // If we found data for this loop, add it to our context vector //unsigned long uBeforeLoopTag = uCurPos - iPos2 - 4; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cf...@us...> - 2010-04-29 19:53:09
|
Revision: 1953 http://znc.svn.sourceforge.net/znc/?rev=1953&view=rev Author: cflakes Date: 2010-04-29 19:53:03 +0000 (Thu, 29 Apr 2010) Log Message: ----------- Fixed a possible segfault with empty loops in CTemplate introduced AND identified by BrianC. Modified Paths: -------------- trunk/Template.cpp Modified: trunk/Template.cpp =================================================================== --- trunk/Template.cpp 2010-04-29 10:31:47 UTC (rev 1952) +++ trunk/Template.cpp 2010-04-29 19:53:03 UTC (rev 1953) @@ -442,7 +442,7 @@ bool bSort = (sArgs.Token(1).Left(4).Equals("SORT")); vector<CTemplate*>* pvLoop = GetLoop(sLoopName); - if (bSort) { + if (bSort && pvLoop->size() > 1) { CString sKey; if(sArgs.Token(1).TrimPrefix_n("SORT").Left(4).Equals("ASC=")) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cf...@us...> - 2010-04-29 20:00:09
|
Revision: 1954 http://znc.svn.sourceforge.net/znc/?rev=1954&view=rev Author: cflakes Date: 2010-04-29 20:00:03 +0000 (Thu, 29 Apr 2010) Log Message: ----------- Properly fixed the last commit. Stupid CTemplate. Stupid me. Modified Paths: -------------- trunk/Template.cpp Modified: trunk/Template.cpp =================================================================== --- trunk/Template.cpp 2010-04-29 19:53:03 UTC (rev 1953) +++ trunk/Template.cpp 2010-04-29 20:00:03 UTC (rev 1954) @@ -442,7 +442,7 @@ bool bSort = (sArgs.Token(1).Left(4).Equals("SORT")); vector<CTemplate*>* pvLoop = GetLoop(sLoopName); - if (bSort && pvLoop->size() > 1) { + if (bSort && pvLoop != NULL && pvLoop->size() > 1) { CString sKey; if(sArgs.Token(1).TrimPrefix_n("SORT").Left(4).Equals("ASC=")) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |