2017-07-18 02:51:48 +00:00
//------------------------------------------
// Forums code
//------------------------------------------
$ ForumCacheVersion = 8 ; //lucky seven...NOT!
$ ForumCachePath = "webcache/" @ getField ( wonGetAuthInfo ( ) , 3 ) @ "/" ;
$ ForumsConnecting = "CONNECTING" ;
$ ForumsGetForums = "FETCHING FORUM LIST " ;
$ ForumsGetTopics = "FETCHING TOPICS " ;
$ ForumsTitle = "FORUMS" ;
$ ForumsGetPosts = "FETCHING POSTS " ;
$ TopicColumnCount = 0 ;
$ TopicColumnName [ 0 ] = "Topic" ;
$ TopicColumnRange [ 0 ] = "50 1000" ;
$ TopicColumnCount + + ;
$ TopicColumnName [ 1 ] = "Posts" ;
$ TopicColumnRange [ 1 ] = "25 100" ;
$ TopicColumnFlags [ 1 ] = "numeric center" ;
$ TopicColumnCount + + ;
$ TopicColumnName [ 2 ] = "Posted By" ;
$ TopicColumnRange [ 2 ] = "50 300" ;
$ TopicColumnCount + + ;
$ TopicColumnName [ 3 ] = "Last Post Date" ;
$ TopicColumnRange [ 3 ] = "50 300" ;
$ TopicColumnCount + + ;
$ ForumColumnCount = 0 ;
$ ForumColumnName [ 0 ] = "Message Tree" ;
$ ForumColumnRange [ 0 ] = "50 1000" ;
$ ForumColumnCount + + ;
$ ForumColumnName [ 1 ] = "Posted By" ;
$ ForumColumnRange [ 1 ] = "50 300" ;
$ ForumColumnCount + + ;
$ ForumColumnName [ 2 ] = "Date Posted" ;
$ ForumColumnRange [ 2 ] = "50 300" ;
$ ForumColumnCount + + ;
// format of a forum post is:
// Post ID
// Parent Post ID
// subject
// Author
// Post date
// Text lines
//Forums message vector post:
// postId
// parentId
// Topic
// Poster
// Date
// Message Line0
// MessageLine 1
// MessageLine 2
// Update is defined as:
// PostId
// UpdateId
// parentId
// poster
// Date
// topic
// body lines
if ( ! isObject ( ForumsMessageVector ) )
{
new MessageVector ( ForumsMessageVector ) ;
}
//-----------------------------------------------------------------------------
function DateStrCompare ( % date1 , % date2 )
{
% d1 = getSubStr ( % date1 , 0 , 2 ) ;
% d2 = getSubStr ( % date2 , 0 , 2 ) ;
if ( % d1 = = % d2 )
{
% d1 = getSubStr ( % date1 , 3 , 2 ) ;
% d2 = getSubStr ( % date2 , 3 , 2 ) ;
if ( % d1 = = % d2 )
{
% d1 = getSubStr ( % date1 , 6 , 4 ) ;
% d2 = getSubStr ( % date2 , 6 , 4 ) ;
if ( % d1 = = % d2 )
{
if ( getSubStr ( % date1 , 17 , 1 ) $ = "a" )
% d1 = getSubStr ( % date1 , 11 , 2 ) + 12 ;
else
% d1 = getSubStr ( % date1 , 11 , 2 ) ;
if ( getSubStr ( % date2 , 17 , 1 ) $ = "a" )
% d2 = getSubStr ( % date2 , 11 , 2 ) + 12 ;
else
% d2 = getSubStr ( % date2 , 11 , 2 ) ;
if ( % d1 = = % d2 )
{
% d1 = getSubStr ( % date1 , 14 , 2 ) ;
% d2 = getSubStr ( % date2 , 14 , 2 ) ;
if ( % d1 > = % d2 )
return true ;
else
return false ;
}
else if ( % d1 > % d2 )
return true ;
else
return false ;
}
else if ( % d1 > % d2 )
return true ;
else
return false ;
}
else if ( % d1 > % d2 )
return true ;
else
return false ;
}
else if ( % d1 > % d2 )
return true ;
else
return false ;
}
//-----------------------------------------------------------------------------
function BackToTopics ( )
{
CacheForumTopic ( ) ;
ForumsGui . eid = schedule ( 250 , ForumsGui , ForumsGoTopics ) ;
}
//-----------------------------------------------------------------------------
function CacheForumTopic ( )
{
% allRead = true ;
% numLines = ForumsMessageVector . getNumLines ( ) ;
for ( % line = 0 ; % line < % numLines ; % line + + )
{
% lineText = ForumsMessageVector . getLineText ( % line ) ;
if ( getRecord ( % lineText , 0 ) $ = "0" )
% allRead = false ;
// Keep track of the latest date:
% lineDate = getRecord ( % lineText , 5 ) ;
if ( % latest $ = "" | | strcmp ( % lineDate , % latest ) > 0 )
% latest = % lineDate ;
}
if ( ! ForumsMessageList . highestUpdate )
ForumsMessageList . highestUpdate = 0 ;
% newGroup = TopicsListGroup . getObject ( ForumsTopicsList . getSelectedRow ( ) ) ;
ForumsMessageList . lastID = % newGroup . updateid ;
% latest = GetField ( ForumsTopicsList . getRowTextbyID ( ForumsTopicsList . getSelectedID ( ) ) , 3 ) ;
ForumsMessageVector . dump ( $ ForumCachePath @ "tpc" @ ForumsMessageVector . tid , ForumsMessageList . lastID TAB $ ForumCacheVersion TAB % allRead TAB % latest ) ;
}
//-----------------------------------------------------------------------------
function ForumsAcceptPost ( )
{
% parentId = ForumsMessageList . getSelectedId ( ) ;
% text = ForumsMessageVector . getLineTextByTag ( % parentId ) ;
% author = getRecord ( % text , 4 ) ;
% dev = getLinkName ( % author ) ;
% date = getRecord ( % text , 5 ) ;
% body = getRecords ( % text , 7 ) ;
ForumsGui . ebstat = FO_EditBtn . Visible ;
ForumsGui . destat = FO_DeleteBtn . Visible ;
$ NewsTitle = getRecord ( % text , 3 ) ;
ForumsMessageList . state = "newsAccept" ;
Canvas . pushDialog ( NewsPostDlg ) ;
NewsCategoryMenu . clear ( ) ;
NewsCategoryMenu . add ( "General" , 0 ) ;
NewsCategoryMenu . add ( "Announcements" , 1 ) ;
NewsCategoryMenu . add ( "Events" , 2 ) ;
NewsCategoryMenu . add ( "Updates" , 3 ) ;
NewsCategoryMenu . setSelected ( 0 ) ;
NewsPostBodyText . setValue ( "submitted by " @ % dev @ "\n\n" @ ForumsGetTextDisplay ( % body ) ) ;
NewsPostDlg . postID = - 1 ;
NewsPostDlg . action = "News" ;
}
//-----------------------------------------------------------------------------
function ForumsEditPost ( )
{
ForumsGui . ebstat = FO_EditBtn . Visible ;
ForumsGui . destat = FO_DeleteBtn . Visible ;
% text = ForumsMessageVector . getLineTextByTag ( ForumsComposeDlg . parentPost ) ;
$ ForumsSubject = getRecord ( % text , 3 ) ;
Canvas . pushDialog ( ForumsComposeDlg ) ;
ForumsBodyText . setValue ( ForumsGetTextDisplay ( % text , 7 ) ) ;
ForumsComposeDlg . post = ForumsComposeDlg . parentPost ;
ForumsComposeDlg . action = "Edit" ;
}
//-----------------------------------------------------------------------------
function ForumsGetTextDisplay ( % text , % offSet )
{
% msgText = "" ;
% rc = getRecordCount ( % text ) ;
for ( % i = % offSet ; % i < % rc ; % i + + )
% msgText = % msgText @ getRecord ( % text , % i ) @ "\n" ;
return % msgText ;
}
//-----------------------------------------------------------------------------
function ForumsGoTopics ( % direction )
{
// ForumsTopicsList.direction = %direction;
ForumsTopicsList . MaxDate = "" ;
ForumsTopicsList . MinDate = "" ;
ForumShell . setTitle ( $ ForumsConnecting ) ;
ForumsThreadPane . setVisible ( false ) ;
ForumsTopicsPane . setVisible ( true ) ;
FO_RejectBtn . visible = false ;
FO_EditBtn . visible = false ;
FO_AcceptBtn . visible = false ;
if ( ForumsTopicsList . rowCount ( ) = = 0 | | ForumsTopicsList . refreshFlag )
{
FM_NewTopic . setActive ( true ) ;
ForumShell . setTitle ( $ ForumsConnecting ) ;
ForumsGui . eid = schedule ( 250 , ForumsGui , GetTopicsList ) ;
}
else
ForumsTopicsList . updateReadStatus ( ) ; //looks at file if any posts have been added/edited/deleted...
ForumShell . setTitle ( "FORUMS: " @ getField ( ForumsList . getRowTextbyID ( ForumsList . getSelectedID ( ) ) , 0 ) ) ;
}
//-----------------------------------------------------------------------------
function ForumsRefreshTopics ( )
{
ForumsTopicsList . refreshFlag = true ;
// ForumsMessageVector.clear();
// ForumsMessageVector.tid = "";
ForumsGui . eid = schedule ( 250 , ForumsGui , GetTopicsList ) ;
}
//-----------------------------------------------------------------------------
function ForumsMessageAddRow ( % text )
{
% rc = ForumsMessageList . rowCount ( ) ;
% isRead = getRecord ( % text , 0 ) ;
% id = getRecord ( % text , 1 ) ;
% parentId = getRecord ( % text , 2 ) ;
% subject = getRecord ( % text , 3 ) ;
% author = getField ( getTextName ( getRecord ( % text , 4 ) , 0 ) , 0 ) ;
% authorName = getField ( getRecord ( % text , 4 ) , 0 ) ;
% date = getRecord ( % text , 5 ) ;
% ref = getRecord ( % text , 6 ) ;
% oldRow = ForumsMessageList . getRowNumById ( % id ) ;
% selId = ForumsMessageList . getSelectedId ( ) ;
if ( ! % selID )
{
% selID = ForumsGui . lastSelected ;
ForumsGui . lastSelected = "" ;
}
if ( % parentId )
{
for ( % i = 0 ; % i < % rc ; % i + + )
{
// check for existing?
if ( ForumsMessageList . getRowId ( % i ) = = % parentId )
{
% parentRow = ForumsMessageList . getRowText ( % i ) ;
2017-07-18 02:55:25 +00:00
// echo("Found parent");
2017-07-18 02:51:48 +00:00
break ;
}
}
% indentLevel = getField ( % parentRow , 3 ) + 1 ;
% indentSpace = "" ;
for ( % j = 0 ; % j < % indentLevel ; % j + + )
% indentSpace = % indentSpace @ " " ;
}
else
% indentSpace = "" ;
% rowText = % indentSpace @ % subject TAB % author TAB % date TAB % indentLevel TAB % parentId TAB % ref TAB % authorName ;
if ( % oldRow ! = - 1 ) //if there's a rownumber - message exists
{
ForumsMessageList . removeRow ( % oldRow ) ;
ForumsMessageList . addRow ( % id , % rowText , % oldRow ) ;
}
else if ( ! % parentId ) //if a first post
{
ForumsMessageList . addRow ( % id , % rowText , 0 ) ;
}
else //continue from %i
{
for ( % i + + ; % i < % rc ; % i + + )
{
% row = ForumsMessageList . getRowText ( % i ) ;
while ( % row ! $ = "" )
{
% rowParent = getField ( % row , 4 ) ;
if ( % rowParent = = % parentId )
break ;
% row = ForumsMessageList . getRowTextById ( % rowParent ) ;
}
if ( % row $ = "" )
break ;
}
if ( % i < = % rc )
ForumsMessageList . addRow ( % id , % rowText , % i ) ;
else
ForumsMessageList . addRow ( % id , % rowText ) ;
}
ForumsMessageList . setRowStyleById ( % id , ! % isRead ) ;
}
//-----------------------------------------------------------------------------
function ForumsNewTopic ( )
{
if ( ForumsList . getSelectedID ( ) = = 105 )
{
$ NewsCategory = "" ;
$ NewsTitle = "" ;
Canvas . pushDialog ( NewsPostDlg ) ;
NewsPostDlg . postId = - 1 ;
NewsPostBodyText . setValue ( "" ) ;
}
else
{
$ ForumsSubject = "" ;
Canvas . pushDialog ( ForumsComposeDlg ) ;
ForumsBodyText . setValue ( "" ) ;
ForumsComposeDlg . parentPost = 0 ;
ForumsComposeDlg . action = "Post" ;
}
}
//-----------------------------------------------------------------------------
function ForumsNext ( )
{
% Currow = ForumsMessageList . getSelectedRow ( ) ;
if ( % Currow < ForumsMessageList . rowCount ( ) )
ForumsMessageList . setSelectedRow ( % Currow + 1 ) ;
}
//-----------------------------------------------------------------------------
function ForumsOpenThread ( % tid )
{
ForumsGui . eid = schedule ( 250 , ForumsGui , GetTopicPosts ) ;
}
//-----------------------------------------------------------------------------
function ForumsPost ( )
{
2017-07-18 02:55:25 +00:00
$ ForumsSubject = FP_SubjectEdit . getValue ( ) ;
2017-07-18 02:51:48 +00:00
if ( trim ( $ ForumsSubject ) $ = "" )
{
MessageBoxOK ( "POST FAILED" , "Your post cannot be accepted without text in the Subject line." ,
"FP_SubjectEdit.makeFirstResponder(1);" ) ;
return ;
}
ForumsTopicsList . refreshFlag = 1 ;
TextCheck ( $ ForumsSubject , ForumsGui ) ;
if ( ! ForumsGui . textCheck )
{
if ( ForumsComposeDlg . action ! $ = "Post" | | ForumsComposeDlg . parentPost ! = 0 )
{
% proxy = ForumsMessageList ;
% newGroup = TopicsListGroup . getObject ( ForumsTopicsList . getSelectedRow ( ) ) ;
% proxy . lastId = % newGroup . updateid ;
% proxy . highestUpdate = % proxy . lastId ;
% proxy . state = "updateCheck" ;
}
else
{
% proxy = ForumsGui ;
% proxy . state = "newTopic" ;
}
if ( ForumsComposeDlg . action $ = "Post" | | ForumsComposeDlg . action $ = "Reply" )
{
% proxy = ForumsMessageList ;
% proxy . state = "replyPost" ;
% proxy . key = LaunchGui . key + + ;
canvas . SetCursor ( ArrowWaitCursor ) ;
DatabaseQuery ( 12 , ForumsComposeDlg . forum TAB
ForumsComposeDlg . topic TAB
ForumsComposeDlg . parentPost TAB
$ ForumsSubject TAB
ForumsBodyText . getValue ( ) ,
% proxy , % proxy . key ) ;
}
else if ( ForumsComposeDlg . action $ = "Edit" )
{
% proxy = ForumsMessageList ;
% proxy . key = LaunchGui . key + + ;
% proxy . state = "editPost" ;
canvas . SetCursor ( ArrowWaitCursor ) ;
DatabaseQuery ( 13 , ForumsComposeDlg . parentPost TAB
$ ForumsSubject TAB
ForumsBodyText . getValue ( )
, % proxy
, % proxy . key ) ;
}
else if ( ForumsComposeDlg . action $ = "News" )
{
% proxy . state = "postNews" ;
% proxy . key = LaunchGui . key + + ;
canvas . SetCursor ( ArrowWaitCursor ) ;
DatabaseQuery ( 14 , ForumsComposeDlg . post TAB
$ ForumsSubject TAB
ForumsBodyText . getValue ( ) ,
% proxy , % proxy . key ) ;
}
Canvas . popDialog ( ForumsComposeDlg ) ;
}
else
{
messageBoxOK ( "ERROR" , "Please remove any of the following characters contained in your subject line and resubmit" NL "" NL " : < > * ^ | ~ @ % & / \\ ` \"" ) ;
FP_SubjectEdit . makeFirstResponder ( 1 ) ;
}
}
//-----------------------------------------------------------------------------
function ForumsPrevious ( )
{
% Currow = ForumsMessageList . getSelectedRow ( ) ;
if ( % Currow > 0 )
ForumsMessageList . setSelectedRow ( % Currow - 1 ) ;
}
//-----------------------------------------------------------------------------
function ForumsRejectPost ( ) //forumsDeletePost()
{
ForumsGui . ebstat = FO_EditBtn . Visible ;
ForumsGui . destat = FO_DeleteBtn . Visible ;
ForumsMessageList . key = LaunchGui . key + + ;
ForumsMessageList . state = "deletePost" ;
canvas . SetCursor ( ArrowWaitCursor ) ;
MessageBoxYesNo ( "CONFIRM" , "Are you sure you wish to remove the selected post?" ,
"DatabaseQuery(14," @ ForumsComposeDlg . parentPost @ "," @ ForumsMessagelist @ "," @ ForumsMessagelist . key @ ");" , "canvas.SetCursor(defaultCursor);" ) ;
}
//-----------------------------------------------------------------------------
function ForumsReply ( )
{
% text = ForumsMessageVector . getLineTextByTag ( ForumsComposeDlg . parentPost ) ;
ForumsGui . ebstat = FO_EditBtn . Visible ;
ForumsGui . destat = FO_DeleteBtn . Visible ;
$ ForumsSubject = getRecord ( % text , 3 ) ;
Canvas . pushDialog ( ForumsComposeDlg ) ;
ForumsBodyText . setValue ( "" ) ;
QuoteBtn . setVisible ( ForumsMessageVector . getNumLines ( ) > 0 ) ;
// MessageBoxYesNo("QUOTE?","Include Topic Post Text?","GetQuotedText();","ForumsBodyText.setValue(\"\");");
ForumsComposeDlg . action = "Reply" ;
}
//-----------------------------------------------------------------------------
function GetQuotedText ( )
{
2017-07-18 02:55:25 +00:00
if ( ForumsComposeDlg . parentPost = = 0 )
{
ForumsBodyText . setValue ( "<spush><color:FFCCAA>ALL YOUR BASE ARE BELONG TO US<spop>\n\n" ) ;
ForumsBodyText . MakeFirstResponder ( 1 ) ;
ForumsBodyText . setCursorPosition ( 3600 ) ;
}
else
{
ForumsBodyText . setValue ( "<spush><color:FFCCAA>\"" @ trim ( ForumsText . getText ( ) ) @ "\"<spop>\n\n" ) ;
ForumsBodyText . MakeFirstResponder ( 1 ) ;
ForumsBodyText . setCursorPosition ( 3600 ) ;
}
2017-07-18 02:51:48 +00:00
// ForumsBodyText.setCursorPosition(strLen(ForumsBodyTExt.getText())+5);
}
//-----------------------------------------------------------------------------
function LaunchForums ( % forum , % topic )
{
ForumsGui . setVisible ( false ) ;
ForumsGui . launchForum = % forum ;
ForumsGui . launchTopic = % topic ;
forumsList . clear ( ) ;
if ( trim ( ForumsGui . launchTopic ) $ = "" )
{
ForumsThreadPane . setVisible ( false ) ;
ForumsTopicsPane . setVisible ( true ) ;
}
LaunchTabView . viewTab ( "FORUMS" , ForumsGui , 0 ) ;
}
//-----------------------------------------------------------------------------
function GetForumsList ( )
{
ForumsList . clear ( ) ;
ForumsGui . onWake ( ) ;
}
//-----------------------------------------------------------------------------
function GetTopicsList ( )
{
ForumsGui . key = LaunchGui . key + + ;
ForumShell . setTitle ( $ ForumsGetTopics ) ;
ForumsGui . state = "getTopicList" ;
ForumsTopicsList . clear ( ) ;
canvas . SetCursor ( ArrowWaitCursor ) ;
ForumsTopicsList . clearList ( ) ;
2017-07-18 02:55:25 +00:00
DatabaseQueryArray ( 8 , 80 , ForumsComposeDlg . forum , ForumsGui , ForumsGui . key ) ;
2017-07-18 02:51:48 +00:00
ForumsTopicsList . refreshFlag = 0 ;
}
//-----------------------------------------------------------------------------
function GetTopicPosts ( )
{
ForumsGui . key = LaunchGui . key + + ;
ForumShell . setTitle ( $ ForumsGetPosts ) ;
ForumsGui . state = "getPostList" ;
canvas . SetCursor ( ArrowWaitCursor ) ;
ForumsThreadPane . setVisible ( true ) ;
ForumsTopicsPane . setVisible ( false ) ;
ForumsText . setValue ( "" ) ;
FO_TopicText . setValue ( strupr ( getField ( ForumsTopicsList . getRowTextByID ( ForumsComposeDlg . Topic ) , 0 ) ) ) ;
if ( ! ForumsComposeDlg . Topic )
ForumsComposeDlg . topic = ForumsTopicsList . getSelectedID ( ) ;
ForumsMessageList . loadCache ( getField ( ForumsList . getRowTextByID ( ForumsList . getSelectedID ( ) ) , 1 ) ) ;
if ( ForumsMessageList . lastID = = 0 )
{
ForumsMessageVector . clear ( ) ;
ForumsMessageList . clear ( ) ;
}
DatabaseQueryArray ( 9 , 0 , ForumsComposeDlg . Topic TAB ForumsMessageList . lastID , ForumsGui , ForumsGui . key ) ;
}
//-----------------------------------------------------------------------------
//-- ForumsGui ---------------------------------------------------------------
//-----------------------------------------------------------------------------
function ForumsGui : : onAdd ( % this )
{
% this . initialized = false ;
}
//-----------------------------------------------------------------------------
function ForumsGui : : onWake ( % this )
{
// First time only:
if ( ! % this . initialized )
{
FM_NewTopic . setActive ( false ) ;
ForumsThreadPane . setVisible ( false ) ;
ForumsTopicsPane . setVisible ( true ) ;
ForumsMessageList . thread = "" ;
ForumsMessageList . lastId = "" ;
// Both panes should have the same minimum extents...
% minExtent = FO_MessagePane . getMinExtent ( ) ;
FO_Frame . frameMinExtent ( 0 , firstWord ( % minExtent ) , restWords ( % minExtent ) ) ;
FO_Frame . frameMinExtent ( 1 , firstWord ( % minExtent ) , restWords ( % minExtent ) ) ;
% this . initialized = true ;
}
Canvas . pushDialog ( LaunchToolbarDlg ) ;
if ( ForumsList . rowCount ( ) = = 0 )
{
ForumsGui . key = LaunchGui . key + + ;
ForumShell . setTitle ( $ ForumsConnecting ) ;
ForumsGui . state = "getForumList" ;
canvas . SetCursor ( ArrowWaitCursor ) ;
DatabaseQueryArray ( 7 , 200 , "" , ForumsGui , ForumsGui . key ) ;
}
// Make these buttons inactive until a message is selected:
FO_ReplyBtn . setActive ( false ) ;
FO_NextBtn . setActive ( false ) ;
FO_PreviousBtn . setActive ( false ) ;
}
//-----------------------------------------------------------------------------
function ForumsGui : : onSleep ( % this )
{
Canvas . popDialog ( LaunchToolbarDlg ) ;
// Stop the scheduled refreshes:
cancel ( % this . messageRefresh ) ;
}
//-----------------------------------------------------------------------------
function ForumsGui : : setKey ( % this , % key )
{
}
//-----------------------------------------------------------------------------
function ForumsGui : : onClose ( % this , % key )
{
}
//-----------------------------------------------------------------------------
function ForumsGui : : onDatabaseQueryResult ( % this , % status , % resultString , % key )
{
if ( % this . key ! = % key )
return ;
2017-07-18 02:55:25 +00:00
// echo("RECV: " @ %status TAB %resultString);
2017-07-18 02:51:48 +00:00
if ( getField ( % status , 0 ) = = 0 )
{
switch $ ( % this . state )
{
case "getForumList" :
if ( getField ( % resultString , 0 ) > 0 )
{
% this . forumCount = - 1 ;
ForumShell . setTitle ( $ ForumsGetForums @ ": " @ getField ( % resultString , 0 ) ) ;
% this . state = "ForumList" ;
ForumsList . clear ( ) ;
}
else
{
% this . state = "done" ;
MessageBoxOK ( "NO DATA" , "No Forums found" ) ;
}
case "getTopicList" :
if ( getField ( % resultString , 0 ) > 0 )
{
ForumShell . setTitle ( $ ForumsGetTopics @ ": " @ getField ( % resultString , 0 ) ) ;
% this . state = "TopicList" ;
}
else
{
% this . state = "done" ;
ForumsTopicsList . updateReadStatus ( ) ;
}
case "getPostList" :
% statFlag = getField ( % status , 2 ) ;
% forumFlag = getField ( ForumsList . getRowTextbyId ( ForumsList . getSelectedID ( ) ) , 1 ) ;
% forumID = getField ( ForumsList . getRowTextById ( ForumsList . getSelectedID ( ) ) , 2 ) ;
% forumTID = ForumsTopicsList . getSelectedID ( ) ;
// if(%statFlag >= %forumFlag)
% this . bflag = % statFlag ;
// else
// %this.bflag = %forumFlag;
switch $ ( % this . bflag )
{
case 0 :
FO_RejectBtn . visible = false ;
FO_EditBtn . visible = false ;
case 1 :
FO_RejectBtn . visible = false ;
FO_EditBtn . visible = false ;
case 2 :
switch ( % forumID )
{
case 1402 :
FO_AcceptBtn . visible = true ;
FO_RejectBtn . text = "REJECT" ;
FO_RejectBtn . visible = true ;
FO_EditBtn . visible = true ;
FO_AcceptBtn . text = "ACCEPT" ;
default :
FO_RejectBtn . text = "DELETE" ;
FO_RejectBtn . visible = true ;
FO_EditBtn . visible = true ;
}
case 3 :
switch ( % forumID )
{
case 1402 :
FO_AcceptBtn . visible = true ;
FO_RejectBtn . text = "REJECT" ;
FO_RejectBtn . visible = true ;
FO_EditBtn . visible = true ;
FO_AcceptBtn . text = "ACCEPT" ;
default :
FO_RejectBtn . text = "DELETE" ;
FO_RejectBtn . visible = true ;
FO_EditBtn . visible = true ;
}
case 4 :
switch ( % forumID )
{
case 1402 :
FO_AcceptBtn . visible = true ;
FO_RejectBtn . text = "REJECT" ;
FO_RejectBtn . visible = true ;
FO_EditBtn . visible = true ;
FO_AcceptBtn . text = "ACCEPT" ;
default :
FO_RejectBtn . text = "DELETE" ;
FO_RejectBtn . visible = true ;
FO_EditBtn . visible = true ;
}
}
if ( getField ( % resultString , 0 ) > 0 )
{
ForumShell . setTitle ( $ ForumsGetPosts @ ": " @ getField ( % resultString , 0 ) ) ;
% this . state = "PostList" ;
if ( ! ForumsGui . visible )
ForumsGui . setVisible ( true ) ;
}
else
{
% this . state = "done" ;
ForumsMessageList . loadCache ( % forumID ) ;
}
case "postNews" :
% this . state = "done" ;
messageBoxOK ( "CONFIRMED" , "Your News Reply has been submitted" ) ;
}
}
else if ( getSubStr ( getField ( % status , 1 ) , 0 , 9 ) $ = "ORA-04061" )
{
% this . state = "error" ;
MessageBoxOK ( "ERROR" , "There was an error processing your request, please wait a few moments and try again." ) ;
}
else
{
% this . state = "error" ;
MessageBoxOk ( "ERROR" , getField ( % status , 1 ) ) ;
}
ForumShell . setTitle ( "FORUMS: " @ getField ( ForumsList . getRowTextbyID ( ForumsList . getSelectedID ( ) ) , 0 ) ) ;
canvas . SetCursor ( defaultCursor ) ;
}
//-----------------------------------------------------------------------------
function ForumsGui : : onDatabaseRow ( % this , % row , % isLastRow , % key )
{
if ( % this . key ! = % key )
return ;
2017-07-18 02:55:25 +00:00
// echo("RECV: " @ %row);
2017-07-18 02:51:48 +00:00
% forumTID = getField ( ForumsList . getRowTextbyId ( ForumsList . getSelectedID ( ) ) , 2 ) ;
switch $ ( % this . state )
{
case "ForumList" :
ForumsList . addRow ( getField ( % row , 0 ) , getField ( % row , 1 ) TAB getField ( % row , 2 ) TAB getField ( % row , 3 ) ) ;
if ( % isLastRow ) //is last line
{
if ( ForumsGui . launchForum ! $ = "" )
{
ForumsList . selectForum ( ForumsGui . LaunchForum ) ;
ForumsGui . LaunchForum = "" ;
}
else
ForumsList . setSelectedRow ( 1 ) ;
}
case "TopicList" :
% id = getField ( % row , 1 ) ;
% topic = getField ( % row , 2 ) ;
% postCount = getField ( % row , 3 ) ;
% date = getField ( % row , 6 ) ;
% name = getField ( % row , 8 ) ;
% hasDeletes = getField ( % row , 12 ) ;
% slevel = getField ( % row , 13 ) ;
% maxUpdateId = getField ( % row , 14 ) ;
ForumsTopicsList . addRow ( % id , % topic TAB % postCount TAB % name TAB % date TAB % hasDeletes ) ;
ForumsTopicsList . addTopic ( % id , % topic , % date , % maxUpdateID , % slevel , % row ) ;
if ( % isLastRow ) //is last line
{
% this . state = "done" ;
ForumShell . setTitle ( "FORUMS: " @ getField ( ForumsList . getRowTextbyID ( ForumsList . getSelectedID ( ) ) , 0 ) ) ;
ForumsTopicsList . updateReadStatus ( ) ;
% this . refreshFlag = false ;
if ( ForumsGui . LaunchTopic ! $ = "" )
{
ForumsTopicsList . selectTopic ( ForumsGui . LaunchTopic ) ;
ForumsGui . LaunchTopic = "" ;
}
else if ( ForumsMessageVector . tid ! $ = "" )
ForumsTopicsList . setSelectedbyId ( ForumsMessageVector . tid ) ;
}
case "PostList" :
% isAuthor = getField ( % row , 0 ) ;
% postId = getField ( % row , 2 ) ;
% parent = getField ( % row , 3 ) ;
% high = getField ( % row , 4 ) ;
% poster = getFields ( % row , 5 , 8 ) ;
% date = getField ( % row , 10 ) ;
% topic = getField ( % row , 13 ) ;
% body = getFields ( % row , 14 ) ;
if ( % high > ForumsMessageList . highestUpdate )
ForumsMessageList . highestUpdate = % high ;
if ( % parent = = % postId )
% parent = 0 ;
% text = 0 NL
% postId NL
% parent NL
% topic NL
% poster NL
% date NL
% isAuthor NL
% body ;
% li = ForumsMessageVector . getLineIndexByTag ( % postId ) ;
if ( % li ! = - 1 )
ForumsMessageVector . deleteLine ( % li ) ;
if ( ForumsMessageList . allRead & & DateStrCompare ( ForumsMessageList . lastDate , % date ) )
% text = setRecord ( % text , 0 , "1" ) ;
ForumsMessageVector . pushBackLine ( % text , % postId ) ;
if ( % isLastRow )
{
ForumsMessageVector . tid = ForumsTopicsList . getSelectedID ( ) ;
CacheForumTopic ( ) ;
ForumsMessageList . loadCache ( ForumsTopicsList . getSelectedID ( ) ) ;
}
}
}
//-----------------------------------------------------------------------------
//-- ForumsList --------------------------------------------------------------
//-----------------------------------------------------------------------------
function ForumsList : : onSelect ( % this )
{
if ( isEventPending ( ForumsGUI . eid ) )
cancel ( ForumsGui . eid ) ;
FM_NewTopic . setActive ( true ) ;
ForumsComposeDlg . forum = ForumsList . getSelectedID ( ) ;
ForumShell . setTitle ( "FORUMS: " @ getField ( ForumsList . getRowTextbyID ( ForumsList . getSelectedID ( ) ) , 0 ) ) ;
ForumsGui . eid = schedule ( 250 , ForumsGui , GetTopicsList ) ;
}
//-----------------------------------------------------------------------------
function ForumsList : : connectionTerminated ( % this , % key )
{
ForumShell . setTitle ( "FORUMS: " @ getField ( ForumsList . getRowTextbyID ( ForumsList . getSelectedID ( ) ) , 0 ) ) ;
if ( % key ! = % this . key )
return ;
}
//-----------------------------------------------------------------------------
function ForumsList : : selectForum ( % this , % forum )
{
% rowCount = % this . rowCount ( ) ;
for ( % row = 0 ; % row < % rowCount ; % row + + )
{
if ( % forum $ = getField ( % this . getRowText ( % row ) , 0 ) )
{
% this . setSelectedRow ( % row ) ;
break ;
}
}
if ( % row = = % rowCount )
warn ( "\"" @ % forum @ "\" forum not found!" ) ;
}
//-----------------------------------------------------------------------------
//-- ForumsTopicsList --------------------------------------------------------
//-----------------------------------------------------------------------------
function ForumsTopicsList : : onAdd ( % this )
{
new GuiControl ( TopicsPopupDlg ) {
profile = "GuiModelessDialogProfile" ;
horizSizing = "width" ;
vertSizing = "height" ;
position = "0 0" ;
extent = "640 480" ;
minExtent = "8 8" ;
visible = "1" ;
setFirstResponder = "0" ;
modal = "1" ;
new ShellPopupMenu ( TopicsPopupMenu ) {
profile = "ShellPopupProfile" ;
position = "0 0" ;
extent = "0 0" ;
minExtent = "0 0" ;
visible = "1" ;
maxPopupHeight = "200" ;
noButtonStyle = "1" ;
} ;
} ;
// Add the columns from the prefs:
for ( % i = 0 ; % i < $ TopicColumnCount ; % i + + )
{
% this . addColumn ( % i ,
$ TopicColumnName [ % i ] ,
$ pref : : Topics : : Column [ % i ] ,
firstWord ( $ TopicColumnRange [ % i ] ) ,
getWord ( $ TopicColumnRange [ % i ] , 1 ) ,
$ TopicColumnFlags [ % i ] ) ;
}
% this . setSortColumn ( $ pref : : Topics : : SortColumnKey ) ;
% this . setSortIncreasing ( $ pref : : Topics : : SortInc ) ;
// Add the "Unread" style:
% this . addStyle ( 1 , $ ShellBoldFont , $ ShellFontSize , "80 220 200" , "30 255 225" , "10 60 40" ) ;
// Add the "Ignored" style:
% this . addStyle ( 2 , $ ShellFont , $ ShellFontSize , "100 100 100" , "100 100 000" , "100 100 100" ) ;
}
//-----------------------------------------------------------------------------
function ForumsTopicsList : : AddTopic ( % this , % id , % topicname , % date , % mid , % slevel , % vline )
{
if ( ! isObject ( TopicsListGroup ) )
new SimGroup ( TopicsListGroup ) ;
% topic = new scriptObject ( )
{
className = "TTopic" ;
Id = % id ;
name = % topicname ;
date = % date ;
updateid = % mid ;
slevel = % slevel ;
rcvrec = % vline ;
} ;
TopicsListGroup . Add ( % topic ) ;
}
//-----------------------------------------------------------------------------
function ForumsTopicsList : : ClearList ( )
{
if ( isObject ( TopicsListGroup ) )
TopicsListGroup . Delete ( ) ;
}
//-----------------------------------------------------------------------------
function ForumsTopicsList : : onRightMouseDown ( % this , % column , % row , % mousePos )
{
ForumsTopicsList . setSelectedRow ( % row ) ;
TopicsPopupMenu . topic = TopicsListGroup . getObject ( % row ) ;
if ( trim ( TopicsPopupMenu . topic . name ) ! $ = "" )
{
Canvas . pushDialog ( TopicsPopupDlg ) ;
TopicsPopupMenu . position = % mousePos ;
TopicsPopupDlg . onWake ( ) ;
TopicsPopupMenu . forceOnAction ( ) ;
}
else
error ( "Locate Error!" ) ;
}
//-----------------------------------------------------------------------------
function TopicsPopupDlg : : onWake ( % this )
{
ForumsGui . TDialogOpen = true ;
TopicsPopupMenu . clear ( ) ;
TopicsPopupMenu . add ( TopicsPopupMenu . topic . name SPC ": RESET CACHE" , 0 ) ;
TopicsPopupMenu . add ( TopicsPopupMenu . topic . name SPC ": IGNORE THIS TOPIC" , 1 ) ;
TopicsPopupMenu . add ( TopicsPopupMenu . topic . name SPC ": FLAG ALL READ" , 2 ) ;
Canvas . rePaint ( ) ;
}
//-----------------------------------------------------------------------------
function TopicsPopupMenu : : onSelect ( % this , % id , % text )
{
2017-07-18 02:55:25 +00:00
// echo("TPM RECV: " @ %id TAB %text);
2017-07-18 02:51:48 +00:00
switch ( % id )
{
case 0 : // 0 Reset Cache
ForumsMessageVector . clear ( ) ;
ForumsMessageVector . dump ( $ ForumCachePath @ "tpc" @ TopicsPopupMenu . topic . id , 0 TAB $ ForumCacheVersion TAB 0 TAB "2000-12-31 12:01am" ) ;
ForumsMessageVector . updateID = 0 ;
ForumsTopicsList . UpdateReadStatus ( ) ;
// ForumsRefreshTopics();
case 1 : // 1 Flag TO IGNORE (ok, 45 years...)
ForumsMessageVector . clear ( ) ;
ForumsMessageVector . dump ( $ ForumCachePath @ "tpc" @ TopicsPopupMenu . topic . id , 99999999 TAB $ ForumCacheVersion TAB 1 TAB "2045-12-31 12:01am" ) ;
ForumsMessageVector . updateID = 99999999 ;
ForumsTopicsList . UpdateReadStatus ( ) ;
// ForumsRefreshTopics();
case 2 : // 2 Flag To ALL Read
ForumsMessageVector . updateID = 99999999 ;
% cacheFile = $ ForumCachePath @ "tpc" @ TopicsPopupMenu . topic . id ;
if ( ForumsMessageVector . tid = = TopicsPopupMenu . topic . id )
{
new MessageVector ( TempVector ) ;
% numLines = ForumsMessageVector . getNumLines ( ) ;
for ( % x = 0 ; % x < % numLines ; % x + + )
{
% lineText = ForumsMessageVector . getLineText ( % x ) ;
% postID = getRecord ( % lineText , 1 ) ;
% lineText = setRecord ( % lineText , 0 , "1" ) ;
TempVector . pushBackLine ( % lineText , % postID ) ;
}
ForumsMessageVector . clear ( ) ;
for ( % line = 0 ; % line < % numLines ; % line + + )
{
% lineText = TempVector . getLineText ( % line ) ;
% postID = getRecord ( % lineText , 1 ) ;
ForumsMessageVector . pushBackLine ( % lineText , % postID ) ;
}
TempVector . delete ( ) ;
TopicsPopupMenu . topic . updateId = 0 ;
CacheForumTopic ( ) ;
ForumsTopicsList . UpdateReadStatus ( ) ;
// ForumsRefreshTopics();
}
else
{
ForumsMessageVector . clear ( ) ;
ForumsMessageVector . tid = TopicsPopupMenu . topic . id ;
% file = new FileObject ( ) ;
if ( % file . openForRead ( % cacheFile ) )
{
if ( ! % file . isEOF ( ) )
{
// First line is the update id:
% line = % file . readLine ( ) ;
if ( getField ( % line , 1 ) = = $ ForumCacheVersion )
{
if ( ! % file . isEOF ( ) )
{
// Second line is the message count:
% count = % file . readLine ( ) ;
// Now push all of the messages into the message vector:
while ( ! % file . isEOF ( ) )
{
% line = % file . readLine ( ) ;
% postId = firstWord ( % line ) ;
% text = collapseEscape ( restWords ( % line ) ) ;
// RESET THE FIELDS IF THE POST IS BEING VISITED BY THE AUTHOR.
% text = setRecord ( % text , 0 , "1" ) ;
ForumsMessageVector . pushBackLine ( % text , % postId ) ;
}
}
}
else
{
}
}
else
{
}
% file . close ( ) ;
TopicsPopupMenu . topic . updateId = 0 ;
CacheForumTopic ( ) ;
}
else
{
ForumsMessageVector . clear ( ) ;
% latest = GetField ( ForumsTopicsList . getRowText ( ForumsTopicsList . getSelectedRow ( ) ) , 3 ) ;
% newGroup = TopicsListGroup . getObject ( ForumsTopicsList . getSelectedRow ( ) ) ;
// ForumsMessageList.lastID = %newGroup.updateid;
ForumsMessageList . lastID = 0 ;
ForumsMessageVector . dump ( % cacheFile , 0 TAB $ ForumCacheVersion TAB 1 TAB % latest ) ;
}
% file . delete ( ) ;
ForumsTopicsList . UpdateReadStatus ( ) ;
// ForumsRefreshTopics();
}
}
canvas . popDialog ( TopicsPopupDlg ) ;
}
//-----------------------------------------------------------------------------
function TopicsPopupDlg : : onSleep ( % this )
{
ForumsGui . TDialogOpen = false ;
}
//-----------------------------------------------------------------------------
function ForumsTopicsList : : onSetSortKey ( % this , % sortKey , % isIncreasing )
{
$ pref : : Topics : : SortColumnKey = % sortKey ;
$ pref : : Topics : : SortInc = % isIncreasing ;
}
//-----------------------------------------------------------------------------
function ForumsTopicsList : : onColumnResize ( % this , % column , % newSize )
{
$ pref : : Topics : : Column [ % column ] = % newSize ;
}
//-----------------------------------------------------------------------------
function ForumsTopicsList : : onSelect ( % this )
{
if ( isEventPending ( ForumsGUI . eid ) )
cancel ( ForumsGui . eid ) ;
ForumsComposeDlg . topic = % this . getSelectedID ( ) ;
}
//-----------------------------------------------------------------------------
function ForumsTopicsList : : selectTopic ( % this , % topic )
{
% rowCount = % this . rowCount ( ) ;
for ( % row = 0 ; % row < % rowCount ; % row + + )
{
if ( % topic $ = getField ( % this . getRowText ( % row ) , 0 ) )
{
% this . setSelectedById ( % this . getRowId ( % row ) ) ;
break ;
}
}
if ( % this . getSelectedID > - 1 )
getTopicPosts ( ) ;
else
if ( % row = = % rowCount )
warn ( "\"" @ % topic @ "\" Topic not found!" ) ;
}
//-----------------------------------------------------------------------------
function ForumsTopicsList : : updateReadStatus ( % this )
{
for ( % row = 0 ; % row < % this . rowCount ( ) ; % row + + )
{
% style = 1 ; // unread
% cacheFile = $ ForumCachePath @ "tpc" @ % this . getRowId ( % row ) ;
% file = new FileObject ( ) ;
if ( % file . openForRead ( % cacheFile ) )
{
% header = % file . readLine ( ) ;
% topicDate = getField ( % this . getRowText ( % row ) , 3 ) ;
% updateID = getField ( % header , 0 ) ;
if ( getField ( % header , 1 ) = = $ ForumCacheVersion // Must have same cache version
& & getField ( % header , 2 ) = = 1 // "all read" flag must be set
& & strcmp ( getField ( % header , 3 ) , % topicDate ) > = 0
& & % updateID ! $ = "99999999" ) // date must be current
% style = 0 ; // read
else if ( % updateID $ = "99999999" )
% style = 2 ; //ignored
else
% style = 1 ;
}
% file . delete ( ) ;
% this . setRowStyle ( % row , % style ) ;
}
}
//-----------------------------------------------------------------------------
//-- ForumsMessageList -------------------------------------------------------
//-----------------------------------------------------------------------------
function ForumsMessageList : : onAdd ( % this )
{
// Add columns from the prefs:
for ( % i = 0 ; % i < $ ForumColumnCount ; % i + + )
% this . addColumn ( % i ,
$ ForumColumnName [ % i ] ,
$ pref : : Forum : : Column [ % i ] ,
firstWord ( $ ForumColumnRange [ % i ] ) ,
getWord ( $ ForumColumnRange [ % i ] , 1 ) ) ;
// We want no sorting done on this list -- leave them in the order that they are entered.
// Add the "Unread" style:
% this . addStyle ( 1 , $ ShellBoldFont , $ ShellFontSize , "80 220 200" , "30 255 225" , "0 0 0" ) ;
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
function ForumsMessageList : : connectionTerminated ( % this , % key )
{
ForumShell . setTitle ( "FORUMS: " @ getField ( ForumsList . getRowTextbyID ( ForumsList . getSelectedID ( ) ) , 0 ) ) ;
}
//-----------------------------------------------------------------------------
function ForumsMessageList : : loadCache ( % this , % forumTID )
{
ForumsMessageVector . clear ( ) ;
ForumsMessageList . clear ( ) ;
ForumsMessageVector . tid = % forumTID ;
switch ( ForumsGui . bflag )
{
case 0 :
FO_RejectBtn . visible = false ;
FO_EditBtn . visible = false ;
case 1 :
FO_RejectBtn . visible = false ;
FO_EditBtn . visible = false ;
case 2 :
switch ( % forumTID )
{
case 1402 :
FO_AcceptBtn . visible = true ;
FO_RejectBtn . text = "REJECT" ;
FO_RejectBtn . visible = true ;
FO_EditBtn . visible = true ;
FO_AcceptBtn . visible = true ;
default :
FO_RejectBtn . text = "DELETE" ;
FO_RejectBtn . visible = true ;
FO_EditBtn . visible = true ;
}
case 3 :
switch ( % forumTID )
{
case 1402 :
FO_AcceptBtn . visible = true ;
FO_RejectBtn . text = "REJECT" ;
FO_RejectBtn . visible = true ;
FO_EditBtn . visible = true ;
FO_AcceptBtn . visible = true ;
default :
FO_RejectBtn . text = "DELETE" ;
FO_RejectBtn . visible = true ;
FO_EditBtn . visible = true ;
}
case 4 :
switch ( % forumTID )
{
case 1402 :
FO_AcceptBtn . visible = true ;
FO_RejectBtn . text = "REJECT" ;
FO_RejectBtn . visible = true ;
FO_EditBtn . visible = true ;
FO_AcceptBtn . visible = true ;
default :
FO_RejectBtn . text = "DELETE" ;
FO_RejectBtn . visible = true ;
FO_EditBtn . visible = true ;
}
}
% this . lastId = 0 ;
% this . highestUpdate = % this . lastID ;
% cacheFile = $ ForumCachePath @ "tpc" @ ForumsComposeDlg . topic ;
% file = new FileObject ( ) ;
if ( % file . openForRead ( % cacheFile ) )
{
// %newGroup = TopicsListGroup.getObject(ForumsTopicsList.getSelectedRow());
if ( ! % file . isEOF ( ) )
{
// First line is the update id:
% line = % file . readLine ( ) ;
if ( getField ( % line , 1 ) = = $ ForumCacheVersion )
{
% this . lastID = getField ( % line , 0 ) ;
% this . highestUpdate = % this . lastID ;
% this . allRead = getField ( % line , 2 ) ;
% this . lastDate = getField ( % line , 3 ) ;
if ( ! % file . isEOF ( ) )
{
// Second line is the message count:
% line = % file . readLine ( ) ;
% count = getField ( % line , 0 ) ;
// Now push all of the messages into the message vector:
while ( ! % file . isEOF ( ) )
{
% line = % file . readLine ( ) ;
% postId = firstWord ( % line ) ;
% text = collapseEscape ( restWords ( % line ) ) ;
% date = getRecord ( % text , 5 ) ;
% isRead = getRecord ( % text , 0 ) ;
// RESET THE FIELDS IF THE POST IS BEING VISITED BY THE AUTHOR.
% ref = getRecord ( % text , 6 ) ;
if ( % ref > 1 )
{
switch ( % forumTID )
{
case 1402 :
FO_AcceptBtn . visible = false ;
FO_RejectBtn . text = "REJECT" ;
FO_RejectBtn . visible = false ;
FO_EditBtn . visible = false ;
FO_AcceptBtn . visible = false ;
default :
FO_RejectBtn . text = "DELETE" ;
FO_RejectBtn . visible = true ;
FO_EditBtn . visible = true ;
}
}
if ( % this . allRead & & DateStrCompare ( % this . lastDate , % date ) )
% text = setRecord ( % text , 0 , "1" ) ;
2017-07-18 02:55:25 +00:00
// echo( "** ADDING MESSAGE FROM CACHE - " @ %postId @ " **" );
2017-07-18 02:51:48 +00:00
ForumsMessageVector . pushBackLine ( % text , % postId ) ;
}
}
}
}
}
% file . delete ( ) ;
% numLines = ForumsMessageVector . getNumLines ( ) ;
for ( % x = 0 ; % x < % numLines ; % x + + )
{
% lineText = ForumsMessageVector . getLineText ( % x ) ;
ForumsMessageAddRow ( % lineText ) ;
}
if ( ForumsMessageList . getSelectedId ( ) = = - 1 )
ForumsMessageList . setSelectedRow ( 0 ) ;
}
//-----------------------------------------------------------------------------
function ForumsMessageList : : onColumnResize ( % this , % column , % newSize )
{
$ pref : : Forum : : Column [ % column ] = % newSize ;
}
//-----------------------------------------------------------------------------
function ForumsMessageList : : onSelect ( % this , % id , % text )
{
if ( ! ForumsMessageList . getSelectedID ( ) )
% parentId = 0 ;
else
% parentId = ForumsMessageList . getSelectedId ( ) ;
ForumsComposeDlg . parentPost = % parentId ;
% rawText = ForumsMessageVector . getLineTextByTag ( ForumsComposeDlg . parentPost ) ;
% offSet = 7 ;
if ( getRecord ( % rawText , 0 ) $ = "0" )
{
// Set the "read" flag:
% this . setRowStyleById ( % id , 0 ) ;
% line = ForumsMessageVector . getLineIndexByTag ( % parentId ) ;
ForumsMessageVector . deleteLine ( % line ) ;
% rawText = setRecord ( % rawText , 0 , "1" ) ;
ForumsMessageVector . pushBackLine ( % rawText , % parentId ) ;
CacheForumTopic ( ) ;
}
% text = ForumsGetTextDisplay ( % rawText , % offSet ) ;
ForumsText . setValue ( % text ) ;
FO_ReplyBtn . setActive ( true ) ;
FO_NextBtn . setActive ( true ) ;
FO_PreviousBtn . setActive ( true ) ;
% ref = getRecord ( % rawText , 6 ) ;
if ( % ref > 0 & & % ref > ForumsGui . bflag ) //if this is the author
{
switch ( getField ( ForumsList . getRowTextbyID ( ForumsList . getSelectedID ( ) ) , 2 ) )
{
case 1402 :
FO_AcceptBtn . visible = false ;
FO_RejectBtn . text = "REJECT" ;
FO_RejectBtn . visible = false ;
FO_EditBtn . visible = false ;
FO_AcceptBtn . visible = false ;
default :
FO_RejectBtn . text = "DELETE" ;
FO_RejectBtn . visible = true ;
FO_EditBtn . visible = true ;
}
}
else if ( ForumsGui . bflag = = 0 )
{
switch ( getField ( ForumsList . getRowTextbyID ( ForumsList . getSelectedID ( ) ) , 2 ) )
{
case 1402 :
FO_AcceptBtn . visible = false ;
FO_RejectBtn . text = "REJECT" ;
FO_RejectBtn . visible = false ;
FO_EditBtn . visible = false ;
FO_AcceptBtn . visible = false ;
default :
FO_RejectBtn . text = "DELETE" ;
FO_RejectBtn . visible = false ;
FO_EditBtn . visible = false ;
}
}
}
//-----------------------------------------------------------------------------
function ForumsMessagelist : : onDatabaseQueryResult ( % this , % status , % resultString , % key )
{
if ( % this . key ! = % key )
return ;
2017-07-18 02:55:25 +00:00
// echo("RECV: " @ %status TAB %resultString);
2017-07-18 02:51:48 +00:00
if ( getField ( % status , 0 ) = = 0 )
{
switch $ ( % this . state )
{
case "replyPost" :
% this . state = "done" ;
ForumsOpenThread ( ) ;
case "editPost" :
% this . state = "done" ;
% postId = getField ( % status , 2 ) ;
% index = ForumsMessageVector . getLineIndexByTag ( % postId ) ;
% text = ForumsMessageVector . getLineTextByTag ( % postId ) ;
% parent = getRecord ( % text , 2 ) ;
ForumsMessageVector . deleteLine ( % index ) ;
% text = setRecord ( % text , 0 , "1" ) ;
ForumsMessageVector . pushBackLine ( % text , % postID ) ;
CacheForumTopic ( ) ;
case "deletePost" :
% this . state = "done" ;
% postId = getField ( % status , 2 ) ;
% index = ForumsMessageVector . getLineIndexByTag ( % postId ) ;
% text = ForumsMessageVector . getLineTextByTag ( % postId ) ;
% parent = getRecord ( % text , 2 ) ;
ForumsTopicsList . refreshFlag = true ;
ForumsMessageVector . deleteLine ( % index ) ;
CacheForumTopic ( ) ;
// ForumsMessageList.clear();
// ForumsMessageList.loadCache();
if ( % parent ! = 0 )
{
% row = ForumsMessageList . getRowNumById ( % postId ) ;
ForumsMessageList . removeRowById ( % postId ) ;
if ( % row < ForumsMessageList . rowCount ( ) )
ForumsMessageList . setSelectedRow ( % row ) ;
else
ForumsMessageList . setSelectedRow ( % row - 1 ) ;
% this . state = "done" ;
ForumsOpenThread ( ) ;
}
else
{
ForumsTopicsList . refreshFlag = true ;
ForumsGoTopics ( 0 ) ;
}
}
}
else if ( getSubStr ( getField ( % status , 1 ) , 0 , 9 ) $ = "ORA-04061" )
{
% this . state = "error" ;
MessageBoxOK ( "ERROR" , "There was an error processing your request, please wait a few moments and try again." ) ;
}
else
{
MessageBoxOK ( "ERROR" , getFields ( % status , 1 ) ) ;
}
canvas . SetCursor ( DefaultCursor ) ;
}