<% //====== Article PAGE LOGIC ================================== // Copyright 2005 SiC. All Rights Reserved. // Last Update: 2005-05-07 11:21:17 //============================================================ switch(String(input["act"])){ case "new": articleNew(false); break; case "save": articleNew(true); break; case "edit": articleEdit(false); break; case "update": articleEdit(true); break; case "delete": articleDelete(); break; default: articleView(); } pageFooter(); // View Article Rountines ---------------------- function articleView(){ var theArticle=new lbsArticle(); var strError=theArticle.loadByID(input["id"]); if(strError!=false){ pageHeader(lang["error"]); redirectMessage(lang["error"], strError, lang["goback"], "javascript:window.history.back();", false, "errorbox"); }else{ if(!theUser.checkViewPermission(theArticle)){ pageHeader(lang["error"]); redirectMessage(lang["error"], lang["no_rights_view"], lang["goback"], "javascript:window.history.back();", false, "errorbox"); }else{ theCache.genSecurityCode(); // Load article data theArticle.loadSideArticle(); // Load Comments data var bTimeOrder=theCache.settings["commentTimeOrder"]==1 ? true : false; var bWithTrackBack=theCache.settings["showTrackbackWithComment"]==1 ? true : false; var intTrackbackPos=theCache.settings["showTrackbackPosition"]; var intPageSize=theCache.settings["commentPerPage"]; var intEntryCount=0; // Check current page number if(input["page"]){ input["page"]=func.checkInt(input["page"]); if(input["page"]<=0){ input["page"]=1; } }else{ input["page"]=1; } intEntryCount=theArticle.loadComments(bTimeOrder, bWithTrackBack, intTrackbackPos, intPageSize, input["page"]); // Generate the calendar for that month if(theCache.settings["enableDynamicCalendar"]==1&&(theArticle.postTime.getMonth()!=(new Date()).getMonth())){ theCache.calendarHTML = theCache.generateCalendar(theArticle.postTime.getFullYear(), theArticle.postTime.getMonth()+1); } connBlog.updateSQL("[blog_Article]","log_viewCount=log_viewCount+1", "log_id="+theArticle.id); theCache.updateArticleCounter(theArticle.id,"view",1); pageHeader(theArticle.title); outputArticle(theArticle, intEntryCount, intPageSize, input["page"]); } } } // New Article Rountines ---------------------- function articleNew(bSaveFlag){ if(theUser.rights["post"]<2){ // Check User Right - without DB Query pageHeader(lang["error"]); redirectMessage(lang["error"], lang["no_rights"], lang["goback"], "javascript:window.history.back();", false, "errorbox"); }else{ var theArticle=new lbsArticle(); // Fill Blank Data if(!bSaveFlag){ theArticle.ubbFlags="111111"; // Output Edit Form pageHeader(lang["new_article"]); outputForm(lang["new_article"]+" ["+lang["author"]+": "+theUser.username+"]", "?act=save", theArticle, false); }else{ // Save Changes var strError=theArticle.fillFromPost(false); if(strError!=false){ pageHeader(lang["error"]); redirectMessage(lang["error"], strError, lang["goback"], "javascript:window.history.back();", false, "errorbox"); }else{ // Insert new article theArticle.insert(); var strDone=lang["save_done"]; var bAutoRedirect=true; // Do trackback if requested if(theArticle.trackbackURL!="" && theCache.settings["enableTrackbackOut"]==1 && theArticle.mode==1){ var tmpA=connBlog.query("SELECT TOP 1 log_ID FROM blog_Article WHERE log_authorID="+theUser.id+" AND log_trackbackURL='"+theArticle.trackbackURL+"' ORDER BY log_postTime DESC"); if(tmpA){ theArticle.id=tmpA[0]["log_id"]; delete tmpA; var tbError = doTrackback(theArticle.trackbackURL, theCache.settings["baseURL"]+"?id="+theArticle.id, theArticle.title, theArticle.content0, theCache.settings["blogTitle"]); if(tbError==""){ strDone+="
"+lang["trackback_done"]; }else{ strDone+="
"+lang["trackback_error"]+": "+tbError+""; bAutoRedirect=false; } } } // Update counters connBlog.updateSQL("[blog_User]","user_articleCount=user_articleCount+1", "user_id="+theUser.id); connBlog.updateSQL("[blog_Category]","cat_articleCount=cat_articleCount+1", "cat_id="+theArticle.categoryID); theCache.loadArticles(); theCache.loadCategories(); theCache.loadCalendar(); // Output Message pageHeader(lang["done"]); redirectMessage(lang["done"], strDone, lang["redirect"], "default.asp", bAutoRedirect, "messagebox"); } } } } // Edit Article Rountines ---------------------- function articleEdit(bSaveFlag){ if(theUser.rights["edit"]<1){ // Check User Right - without DB Query pageHeader(lang["error"]); redirectMessage(lang["error"], lang["no_rights"], lang["goback"], "javascript:window.history.back();", false, "errorbox"); }else{ var theArticle=new lbsArticle(); var strError=false; if(bSaveFlag){ // Use a simple query when save changes for better performance input["log_id"]=func.checkInt(input["log_id"]); if(!input["log_id"]){ strError=lang["invalid_parameter"]; }else{ // Check if the article exists and load required data for saving changes if(theArticle.load("log_id, log_catID, log_authorID, log_postTime, log_trackbackURL","log_id="+input["log_id"])){ strError=false; }else{ strError=lang["article_not_found"]; } } }else{ // Load full data for Edit Form strError=theArticle.loadByID(input["id"]); } if(strError!=false){ // Article not found pageHeader(lang["error"]); redirectMessage(lang["error"], strError, lang["goback"], "javascript:window.history.back();", false, "errorbox"); }else{ if(theUser.id!=theArticle.authorID&&theUser.rights["edit"]<2){ // Check Edit Rights Again pageHeader(lang["error"]); redirectMessage(lang["error"], lang["no_rights"], lang["goback"], "javascript:window.history.back();", false, "errorbox"); }else{ if(!bSaveFlag){ // Output Edit Form pageHeader("["+lang["edit"]+"] "+theArticle.title); outputForm(lang["edit"]+": "+theArticle.title+" ["+lang["author"]+": "+theArticle.author+"]", "?act=update", theArticle, true); }else{ // Check Data var oldCategoryID=theArticle.category.id; strError=theArticle.fillFromPost(true); if(strError!=false){ pageHeader(lang["error"]); redirectMessage(lang["error"], strError, lang["goback"], "javascript:window.history.back();", false, "errorbox"); }else{ // Save Changes theArticle.update(); // Category Changed if(oldCategoryID!=theArticle.category.id){ connBlog.updateSQL("[blog_Category]","cat_ArticleCount=cat_ArticleCount+1", "cat_id="+theArticle.category.id); connBlog.updateSQL("[blog_Category]","cat_ArticleCount=cat_ArticleCount-1", "cat_id="+oldCategoryID); } var strDone=lang["update_done"]; var bAutoRedirect=true; // Do trackback if requested if(theArticle.trackbackURL!="" && theArticle.trackbackAgain && theCache.settings["enableTrackbackOut"]==1 && theArticle.mode==1){ var tbError = doTrackback(theArticle.trackbackURL, theCache.settings["baseURL"]+"?id="+theArticle.id, theArticle.title, theArticle.content0, theCache.settings["blogTitle"]); if(tbError==""){ strDone+="
"+lang["trackback_done"]; }else{ strDone+="
"+lang["trackback_error"]+": "+tbError+""; bAutoRedirect=false; } } theCache.loadCategories(); theCache.loadArticles(); theCache.loadCalendar(); theCache.loadComments(); pageHeader(lang["done"]); redirectMessage(lang["done"], strDone, lang["redirect"], "?id="+theArticle.id, bAutoRedirect, "messagebox"); } } } } } } // Delete Article ------------------------------------------------------ function articleDelete(){ if(theUser.rights["delete"]<1){ // Check User Right - without DB Query pageHeader(lang["error"]); redirectMessage(lang["error"], lang["no_rights"], lang["goback"], "javascript:window.history.back();", false, "errorbox"); }else{ var theArticle=new lbsArticle(); var strError; input["log_id"]=func.checkInt(input["log_id"]); if(!input["id"]){ strError=lang["invalid_parameter"]; }else{ // Check if the article exists theArticle.load("log_id, log_authorID, log_catID","log_id="+input["id"]); strError=false; } if(strError!=false){ // Article not found pageHeader(lang["error"]); redirectMessage(lang["error"], strError, lang["goback"], "javascript:window.history.back();", false, "errorbox"); }else{ if(theUser.id!=theArticle.authorID&&theUser.rights["delete"]<2){ // Check Delete Rights Again pageHeader(lang["error"]); redirectMessage(lang["error"], lang["no_rights"], lang["goback"], "javascript:window.history.back();", false, "errorbox"); }else{ theArticle.doDelete(); connBlog.updateSQL("[blog_User]","user_articleCount=user_articleCount-1", "user_id="+theArticle.authorID); connBlog.updateSQL("[blog_Category]","cat_articleCount=cat_articleCount-1", "cat_id="+theArticle.categoryID); theCache.loadArticles(); theCache.loadCategories(); theCache.loadCalendar(); theCache.loadComments(); pageHeader(lang["done"]); redirectMessage(lang["done"], lang["delete_done"], lang["redirect"], "default.asp", true, "messagebox"); } } } } // Send Trackback ------------------------------------------- function doTrackback(trackbackURL,url,title,excerpt,blogName){ title = Server.URLEncode(func.cutString(title,100)); excerpt = Server.URLEncode(func.cutString(excerpt, 252)); url = Server.URLEncode(url); blogName = Server.URLEncode(func.cutString(blogName,100)); var strError=""; var queryString = "title="+title+"&url="+url+"&blog_name="+blogName+"&excerpt="+func.trimUBB(excerpt); var objXMLHTTP; var objDom; try{ objXMLHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP"); }catch(e){ return lang["create_object_fail_xmlhttp"]; } //---This is the old GET method of trackback described in Specification--- //---I put it here just for the memory of history------------------------- // objXMLHTTP.Open "GET", trackbackURL&"&"&queryString, false // objXMLHTTP.Send //---End Code Segment----------------------------------------------------- try{ objXMLHTTP.open("POST", trackbackURL, false); objXMLHTTP.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); objXMLHTTP.send(queryString); }catch(e){ strError = lang["server_no_response"]; } // Give some time to wait for the response if(objXMLHTTP.readyState!=4){ try{ objXMLHTTP.waitForResponse(15); }catch(e){ strError = lang["server_no_response"]; } } // Check for status again and abort the procedure when failed if(objXMLHTTP.readyState!=4||objXMLHTTP.status!=200){ objXMLHTTP.abort(); strError = lang["server_no_response"]; }else{ // Read in the response data try{ objDom = Server.CreateObject("Microsoft.XMLDOM"); }catch(e){ return lang["create_object_fail_xmldom"]; } objDom.async=false; objDom.loadXML(objXMLHTTP.responseText); if(objDom.parseError.errorCode!=0){ strError = lang["parse_error"]; }else{ // Check for returned error code if(objDom.getElementsByTagName("error")[0].text!="0"){ strError = func.HTMLEncode(objDom.getElementsByTagName("message")[0].text); } } } delete objXMLHTTP; delete objDom; return strError; } %>