00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "openLogin.h"
00023 #include "cgiTemplates.h"
00024 #include "objectBase.h"
00025 #include "connectstring"
00026 #include "forms.h"
00027 #include "siteLimit.h"
00028
00029 class pageObject: public objectBase
00030 {
00031 string siteLimitation,sql,template_sql;
00032 public:
00033 pageObject(openLogin &lin, cgiScript & script):objectBase(lin,script)
00034 {
00035 string siteLimitation = siteFocus(lin);
00036
00037
00038 addField( "id", FIELD_TYPE_LONGLONG );
00039 addField( "site_id", FIELD_TYPE_LONGLONG );
00040 addField( "template_id", FIELD_TYPE_LONGLONG );
00041 addField( "name", FIELD_TYPE_STRING );
00042 addField( "url", FIELD_TYPE_STRING );
00043 addField( "meta_description", FIELD_TYPE_STRING );
00044
00045
00046 addControl( "id", staticEntry( "id", "10" ) );
00047 sql += "select id, name from metasite.sites";
00048 template_sql += "select id, name from metasite.templates";
00049 if( siteLimitation.length() != 0 )
00050 {
00051 sql += " where id ";
00052 sql += siteLimitation;
00053 template_sql += " where site_id ";
00054 template_sql += siteLimitation;
00055 }
00056
00057 sql += " order by name";
00058 addControl( "site_id", cmboEntry( "site_id", sql ) );
00059 addControl( "template_id", cmboEntry( "template_id", template_sql ) );
00060 addControl( "name", textEntry( "name", "64" ) );
00061 addControl( "url", textEntry( "url", "64" ) );
00062 addControl( "meta_description", areaEntry( "meta_description" ) );
00063
00064
00065 setName("pages");
00066 }
00067
00068
00069 bool validate(void){ return true; }
00070
00071
00072 bool cleanup(void) { return true; }
00073 };
00074
00075 void page_menuList( cgiScript & script,
00076 cgiInput & args,
00077 cgiTemplates & htmlDoc,
00078 ocString & bottom1,
00079 string & id )
00080 {
00081 string newLink = "page_menuForm.cgi?page_id=";
00082 newLink += id;
00083 ocString childtop = htmlDoc.getParagraph("childtop");
00084 script << childtop.replace("__child__",
00085 "Page Menu "
00086 "<span class='instructions'>Add/Modify page menus here.</span>")
00087 .replace("_header_","Page Name</th><th>Menu Name</th><th>Place Order")
00088 .replace("_link_",newLink.c_str());
00089 mySqlDB db(CONNECTSTRING);
00090 mySqlRS rs(db);
00091 string sql = "select pm.id, p.name, m.name, pm.place_order "
00092 "from metasite.page_menus pm "
00093 "inner join metasite.menus m on m.id = pm.menu_id "
00094 "inner join metasite.pages p on p.id = pm.page_id where pm.page_id = ";
00095 sql+= id;
00096 sql += " order by p.name, pm.place_order";
00097 script << "<!-- " << sql << "-->" << endl;
00098
00099 for( bool b = rs.open(sql); b; b= rs.next() )
00100 {
00101 string vis = rs.getField(1).format() + "</td><td>";
00102 string compoundId=rs.getField(0).format() + "&page_id=";
00103 compoundId+=id;
00104 vis += rs.getField(2).format() + "</td><td>";
00105 vis += rs.getField(3).format();
00106 ocString listitem = htmlDoc.getParagraph("childitem");
00107 script << listitem.replace("_id_",rs.getField(0).format().c_str())
00108 .replace("_listdata_",vis.c_str())
00109 .replace("_link_","page_menuForm.cgi")
00110 .replace("_id_",compoundId.c_str());
00111 }
00112 script << htmlDoc.getParagraph("childbottom");
00113 }
00114 void paragraphList( cgiScript & script,
00115 cgiInput & args,
00116 cgiTemplates & htmlDoc,
00117 ocString & bottom1,
00118 string & id )
00119 {
00120 string newLink = "paragraphForm.cgi?page_id=";
00121 newLink += id;
00122 ocString childtop = htmlDoc.getParagraph("childtop");
00123 script << childtop.replace("__child__",
00124 "Paragraphs "
00125 "<span class='instructions'>Add/Modify paragraphs to/on the page here.</span>")
00126 .replace("_header_","Paragraph</th><th>Placement Order</th><th>Template Tag")
00127 .replace("_link_",newLink.c_str());
00128 string sql;
00129 mySqlDB db(CONNECTSTRING);
00130 mySqlRS rs(db);
00131 sql = "select id, name, place_order, template_tag "
00132 "from metasite.paragraphs "
00133 "where page_id = ";
00134 sql+= id;
00135 sql += " order by place_order";
00136 script << "<!-- " << sql << "-->" << endl;
00137
00138 for( bool b = rs.open(sql); b; b= rs.next() )
00139 {
00140 string vis = rs.getField(1).format() + "</td><td>";
00141 string compoundId=rs.getField(0).format() + "&page_id=";
00142 compoundId+=id;
00143 vis += rs.getField(2).format() + "</td><td>";
00144 vis += rs.getField(3).format();
00145 ocString listitem = htmlDoc.getParagraph("childitem");
00146 script << listitem.replace("_id_",rs.getField(0).format().c_str())
00147 .replace("_listdata_",vis.c_str())
00148 .replace("_link_","paragraphForm.cgi")
00149 .replace("_id_",compoundId.c_str());
00150 }
00151 script << htmlDoc.getParagraph("childbottom");
00152 }
00153 void pageForm(cgiScript & script, openLogin & login)
00154 {
00155 pageObject obj(login,script);
00156 cgiTemplates htmlDoc;
00157 htmlDoc.load("Templates/siteAdminForm.html");
00158 ocString top(htmlDoc.getParagraph("top"));
00159 cgiInput & args = script.ClientArguments();
00160
00161 script << top.replace( "_entity_", "Page" )
00162 .replace( "_link_", "pageList.cgi" )
00163 .replace( "__link__", "pageForm.cgi" ) << endl;
00164
00165 obj.go();
00166
00167 ocString listTemplate(htmlDoc.getParagraph("formitem"));
00168
00169 script << listTemplate.replace ( "_label_", "Id" )
00170 .replace ( "_form_item_", obj.getControl("id")->getHtml().c_str() );
00171
00172 script << listTemplate.replace ( "_label_", "Site" )
00173 .replace ( "_form_item_", obj.getControl("site_id")->getHtml().c_str() );
00174
00175 script << listTemplate.replace ( "_label_", "Template" )
00176 .replace ( "_form_item_", obj.getControl("template_id")->getHtml().c_str() );
00177
00178 script << listTemplate.replace ( "_label_", "Name" )
00179 .replace ( "_form_item_", obj.getControl("name")->getHtml().c_str() );
00180
00181 script << listTemplate.replace ( "_label_", "URL" )
00182 .replace ( "_form_item_", obj.getControl("url")->getHtml().c_str() );
00183
00184 script << listTemplate.replace ( "_label_", "Metatag Description Text" )
00185 .replace ( "_form_item_", obj.getControl("meta_description")->getHtml().c_str() );
00186
00187
00188 ocString bottom1(htmlDoc.getParagraph("altbottom1"));
00189
00190 string id = obj.getControl("id")->getContent();
00191 if( id.length() )
00192 {
00193 script << bottom1.replace("_form_buttons_", formButtons(args).c_str());
00194 page_menuList( script, args, htmlDoc, bottom1, id );
00195 paragraphList( script, args, htmlDoc, bottom1, id );
00196 }
00197 else
00198 {
00199 script << bottom1.replace("_form_buttons_", formButtons(args).c_str()).replace( "__more_instructions__", " " );
00200 }
00201 ocString bottom2(htmlDoc.getParagraph("altbottom2"));
00202 script << bottom2.replace( "__results__", obj.resultString().c_str() )
00203 .replace( "__js__", "document.forms[0].name.focus();" ) << endl;
00204 }
00205
00206 int main( int argcount, char ** args )
00207 {
00208 bool isSignedOn = false;
00209
00210
00211
00212 cgiScript script("text/html",false);
00213 openLogin login;
00214
00215
00216 if ( login.testLoginStatus() )
00217 {
00218 isSignedOn = true;
00219 }
00220 if( isSignedOn )
00221 {
00222 script.closeHeader();
00223 pageForm(script,login);
00224 }
00225 else
00226 {
00227 script.Redirect("signIn.html");
00228 script.closeHeader();
00229 return(0);
00230 }
00231 }