00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include <string>
00015
00016 #include "openLogger.h"
00017 using namespace std;
00018 #include "groups.hpp"
00019
00020
00021 string baseUrl;
00022
00023 #include "w3intranet.h"
00024 #include "sublist_base.hpp"
00025
00026 class services_List: public sublist_base
00027 {
00028 public:
00029 long long group_id;
00030
00031
00032 services_List(cgiScript&sc, long long id):sublist_base(sc),group_id(id)
00033 {
00034 ;
00035 }
00036 ~services_List(){;}
00037
00038 bool list_display( void )
00039 {
00040 bool breturn = true;
00041 editLink = listTemplate.getParagraph("hotcolumn");
00042 editLink = editLink.replace("$prog$","group_services_ui.cgi");
00043 hotCol=1;
00044 ocString sql= "select sp.id, s.cat_name, s.menu_name from group_services sp "
00045 "inner join services s on s.id = sp.service_id where sp.group_id = ";
00046 sql.append(group_id);
00047 emitHeadings("Id|Category|Service Name");
00048 getData(sql);
00049 emitData();
00050 emitEnd();
00051 return breturn;
00052 }
00053 void derived_complete_event( void )
00054 {
00055 ocString loco = "group_services_ui.cgi";
00056 if( group_id)
00057 {
00058 loco += "?group_id=";
00059 loco.append(group_id);
00060 }
00061 ocString adder = listTemplate.getParagraph("list_new");
00062 webIO << adder.replace("$cols","2")
00063 .replace("$location",loco.c_str())
00064 .replace("$item","Service");
00065 }
00066
00067
00068 virtual void sendHotField( int iField, ocString & td )
00069 {
00070 ocString linkId = rs.getField(0).format();
00071 if( group_id)
00072 {
00073 linkId += "&group_id=";
00074 linkId.append(group_id);
00075 }
00076 webIO << td.replace( "$data$",
00077 editLink.replaceAll( "$key$", linkId.c_str() )
00078 .replaceAll( "$col$", rs.getField(iField).format().c_str() ).c_str());
00079 }
00080 };
00081 class groups_List: public list_base
00082 {
00083 public:
00084
00085 groups_List(cgiScript&sc,Session_Obj & session):list_base(sc,session){;}
00086 ~groups_List(){;}
00087
00088 bool list_display( void )
00089 {
00090 bool breturn = true;
00091
00092 hotCol=-2;
00093 editLink = listTemplate.getParagraph("hotcolumn");
00094 editLink = editLink.replace("$prog$","groupsUI.meta");
00095 emitFilter( "groupsUI.meta",
00096 " <B>FILTER (by Name)</B>" );
00097 string heading =
00098 "<a class='sortcol' href='groupsUI.meta?sort=id'>id</a>|"
00099 "<a class='sortcol' href='groupsUI.meta?sort=name'>name</a>|"
00100 "<a class='sortcol' href='groupsUI.meta?sort=site_admin'>site_admin</a>"
00101 ;
00102 emitHeadings(heading);
00103 getFilteredData(
00104 "id, "
00105 "name, "
00106 "site_admin "
00107 ,"groups",
00108 "name like '$filter$%'" );
00109 emitData();
00110 emitNavigation("groupsUI.meta");
00111 emitEnd();
00112 return breturn;
00113 }
00114 };
00115
00116 class groups_form: public groups_Obj, public forms_base
00117 {
00118 public:
00119 groups_form(cgiScript & script):groups_Obj(),forms_base(script){setKey(*this);}
00120 virtual ~groups_form(){;}
00121
00122 void form_id_transfer( void )
00123 {
00124 llongFXfer( "id", id );
00125 }
00126 void form_data_transfer( void )
00127 {
00128 stringFXfer( "name", name);
00129 boolFXfer( "site_admin", site_admin);
00130
00131 stringFXfer( "role_id", group_roles);
00132 }
00133 bool isupplemental( void )
00134 {
00135 return setRoles();
00136 }
00137
00138 bool usupplemental( changeMap & changes )
00139 {
00140 bool bRet = deleteRoles();
00141 if(bRet) bRet = setRoles();
00142 return bRet;
00143 }
00144
00145 bool dsupplemental( void )
00146 {
00147 return deleteRoles();
00148 }
00149
00150 bool ssupplemental( void )
00151 {
00152 return retrieveRoles();
00153 }
00154 bool dbf_action( string mode, changeMap & changes )
00155 {
00156 return db_action( mode, changes );
00157 }
00158
00159
00160 bool form_display( void )
00161 {
00162 bool breturn = true;
00163 ocString sql;
00164
00165 script << makeTop("groupsUI.meta", "groups")
00166 << formTemplate.getParagraph("advanced_begin");
00167 script << makeStaticBox("id", "id", id ,"8");
00168 script << "<br class='clearall'>" << endl;
00169 script << formTemplate.getParagraph("advanced_end");
00170
00171 script << makeTextBox("name", "name", name ,"25");
00172 script << "<br class='clearall'>" << endl;
00173 script << makeBoolBox("site_admin", "site_admin", site_admin );
00174 script << "<br class='clearall'>" << endl;
00175 script << makeComboBox("Roles","role_id",group_roles,
00176 "select id, name from roles",
00177 "", " multiple='multiple' size='6'" );
00178 script << "<br class='clearall'>" << endl;
00179
00180 if ( id != 0 )
00181 {
00182 script << "<div class='ctrlgroup'>"
00183 "<div class='lable'>GROUP Services:</div><div class='control'>";
00184 services_List svclist(script,id);
00185 svclist.loadListTemplates("Templates/poplist.htmp");
00186 svclist.list_display();
00187 script << "</div></div>";
00188 }
00189 script << "<br class='clearall'>" << endl;
00190 script << makeButtons( key() );
00191 script << makeBottom( m_result ) << endl;
00192 return breturn;
00193 }
00194 };
00195
00196 bool intraMain(page & pg ,cgiScript & script)
00197 {
00198
00199 groups_form myFrm(script);
00200 groups_List mylist(script,oLogin.Session());
00201
00202 script.closeHeader();
00203 cgiTemplates pgTemplate;
00204 pgTemplate.load("Templates/adminPane.htmp");
00205
00206 script << ocString(pgTemplate.getParagraph("top"))
00207 .replaceAll("$heading$","groups");
00208
00209 myFrm.loadControlTemplates("Templates/divform.htmp");
00210 myFrm.form_action();
00211 myFrm.form_display();
00212
00213 mylist.loadListTemplates("Templates/navlist.htmp");
00214 mylist.list_display();
00215
00216 ocString end = pgTemplate.getParagraph("bottom");
00217 script << end;
00218
00219 return true;
00220 }
00221
00222
00223 int main(int argc, char ** argv)
00224 {
00225 baseUrl = "groupsUI.meta";
00226
00227 cgiScript script("text/html",false);
00228 bool isSignedOn = check(script);
00229 script.closeHeader();
00230
00231
00232
00233 script.ScriptName() =
00234 ocString( script.ScriptName().c_str()).replace("groupsUI.meta","services").c_str();
00235
00236 page pg(script);
00237
00238 writelog( "load page" );
00239 if( pg.load() )
00240 {
00241 writelog( "instance of page control" );
00242 page_control ctrl(pg);
00243 ctrl.addOp ( "servicelist", new servicelist_functor(pg,script,isSignedOn) );
00244 ctrl.addOp ( "userinterface", new form_functor(pg,script,isSignedOn) );
00245 writelog( "page control emit" );
00246 ctrl.emit();
00247 }
00248 else
00249 {
00250 script << "<html><head><title>Page Unavailable</title></head>" << endl
00251 << "<body><h1>Sorry</h1>" << endl
00252 << "<p>The page you requested is not available</p></body></html>";
00253 }
00254 return 0;
00255 }
00256
00257
00258 #include "read_write_base.cpp"
00259 #include "forms_base.cpp"
00260