00001
00002
00003
00004
00005
00006
00007 #include "metaconnectstring"
00008 #include <iostream>
00009 #include <iomanip>
00010 #include "ocTypes.h"
00011 #include "ocString.h"
00012 #include "read_write_base.hpp"
00013 #include "forms_base.hpp"
00014 #include "list_base.hpp"
00015 #include "cgiTemplates.h"
00016 #include "groups.hpp"
00017 #include "openLogin.h"
00018 openLogin oLogin;
00019
00020 class services_List: public list_base
00021 {
00022 public:
00023 long long group_id;
00024
00025
00026 services_List(cgiScript&sc, long long id):list_base(sc),group_id(id)
00027 {
00028 ;
00029 }
00030 ~services_List(){;}
00031
00032 bool list_display( void )
00033 {
00034 bool breturn = true;
00035 editLink = listTemplate.getParagraph("hotcolumn");
00036 editLink = editLink.replace("$prog$","group_services_ui.cgi");
00037 hotCol=1;
00038 ocString sql= "select sp.id, s.name from group_services sp "
00039 "inner join services s on s.id = sp.service_id where sp.group_id = ";
00040 sql.append(group_id);
00041 emitHeadings("Id|Service Name");
00042 getData(sql);
00043 emitData();
00044 emitEnd();
00045 return breturn;
00046 }
00047 void derived_complete_event( void )
00048 {
00049 ocString loco = "group_services_ui.cgi";
00050 if( group_id)
00051 {
00052 loco += "?group_id=";
00053 loco.append(group_id);
00054 }
00055 ocString adder = listTemplate.getParagraph("list_new");
00056 webIO << adder.replace("$cols","2")
00057 .replace("$location",loco.c_str())
00058 .replace("$item","Service");
00059 }
00060
00061
00062 virtual void sendHotField( int iField, ocString & td )
00063 {
00064 ocString linkId = rs.getField(0).format();
00065 if( group_id)
00066 {
00067 linkId += "&group_id=";
00068 linkId.append(group_id);
00069 }
00070 webIO << td.replace( "$data$",
00071 editLink.replaceAll( "$key$", linkId.c_str() )
00072 .replaceAll( "$col$", rs.getField(iField).format().c_str() ).c_str());
00073 }
00074 };
00075
00076
00077
00078
00079
00080
00081 class groups_Form: public groups, public forms_base
00082 {
00083 public:
00084
00085 groups_Form(cgiScript & script):groups(),forms_base(script){setKey(*this);}
00086 ~groups_Form(){;}
00087
00088 void form_id_transfer( void )
00089 {
00090 llongFXfer( "id", id );
00091 }
00092 void form_data_transfer( void )
00093 {
00094 stringFXfer( "name", name );
00095
00096
00097 stringFXfer( "role_id", group_roles);
00098 boolFXfer( "site_admin", site_admin );
00099 }
00100
00101 bool isupplemental( void )
00102 {
00103 return setRoles();
00104 }
00105
00106 bool usupplemental( changeMap & changes )
00107 {
00108 bool bRet = deleteRoles();
00109 if(bRet) bRet = setRoles();
00110 return bRet;
00111 }
00112
00113 bool dsupplemental( void )
00114 {
00115 return deleteRoles();
00116 }
00117
00118 bool ssupplemental( void )
00119 {
00120 return retrieveRoles();
00121 }
00122 bool dbf_action( string mode, changeMap & changes )
00123 {
00124 return db_action( mode, changes );
00125 }
00126
00127 bool form_display( void )
00128 {
00129 bool breturn = true;
00130 script << makeTop("groups_ui.cgi", "GROUPS")
00131 << makeStaticBox("Id","id",id,"12" )
00132 << makeTextBox("Name","name",name,"24")
00133
00134
00135 << makeBoolBox("Site Administrators?","site_admin", site_admin)
00136 << makeComboBox("Roles","role_id",group_roles,
00137 "select id, name from roles",
00138 "", " multiple='multiple' size='6'" )
00139 << makeButtons( key() );
00140 if ( id != 0 )
00141 {
00142 script << "<tr><td colspan='2'>";
00143 services_List svclist(script,id);
00144 svclist.loadListTemplates("Templates/poplist.htmp");
00145 svclist.list_display();
00146 script << "<b>GROUP Services:</b></td></tr>";
00147 }
00148 script << makeBottom( m_result ) << endl;
00149 return breturn;
00150 }
00151 };
00152
00153
00154 class groups_List: public list_base
00155 {
00156 public:
00157
00158 groups_List(cgiScript&sc):list_base(sc)
00159 {
00160 ;
00161 }
00162 ~groups_List(){;}
00163
00164 bool list_display( void )
00165 {
00166 bool breturn = true;
00167 editLink = listTemplate.getParagraph("hotcolumn");
00168 editLink = editLink.replace("$prog$","groups_ui.cgi");
00169 hotCol=1;
00170
00171 emitFilter( "groups_ui.cgi",
00172 " <B>FILTER</B>" );
00173
00174 emitHeadings("Id|Group Name");
00175
00176 getFilteredData( "id, name",
00177 "groups",
00178 "name like '$filter$%'",
00179 "name" );
00180 emitData();
00181
00182 emitNavigation("groups_ui.cgi");
00183
00184 emitEnd();
00185 return breturn;
00186 }
00187 void derived_data_event( void )
00188 {
00189
00190 }
00191
00192 };
00193
00194 int main( int argc, char ** argv )
00195 {
00196 cgiScript script( "text/html", false );
00197 groups_Form myFrm(script);
00198 groups_List mylist(script);
00199 if( oLogin.testLoginStatus() )
00200 {
00201 script.closeHeader();
00202 cgiTemplates pgTemplate;
00203 pgTemplate.load("Templates/adminPane.htmp");
00204
00205 script << ocString(pgTemplate.getParagraph("top"))
00206 .replaceAll("$heading$","groups");
00207
00208 myFrm.loadControlTemplates("Templates/form.htmp");
00209 myFrm.form_action();
00210 myFrm.form_display();
00211
00212
00213 mylist.loadListTemplates("Templates/list.htmp");
00214 mylist.list_display();
00215
00216 script << pgTemplate.getParagraph("bottom");
00217 }
00218 else
00219 {
00220 script.Redirect("signIn.html");
00221 }
00222 };
00223
00224
00225 #include "read_write_base.cpp"
00226 #include "forms_base.cpp"
00227
00228
00229