Allow for prefill of form elements, improved I18N.
This commit is contained in:
@@ -18,15 +18,23 @@
|
||||
#include "aqhome/http/httpservice_conf.h"
|
||||
|
||||
#include <gwenhywfar/gwenhywfar.h>
|
||||
#include <gwenhywfar/args.h>
|
||||
#include <gwenhywfar/debug.h>
|
||||
#include <gwenhywfar/endpoint.h>
|
||||
#include <gwenhywfar/mdigest.h>
|
||||
#include <gwenhywfar/text.h>
|
||||
#include <gwenhywfar/timestamp.h>
|
||||
#include <gwenhywfar/i18n.h>
|
||||
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------------------------------
|
||||
* defines
|
||||
* ------------------------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------------------------------
|
||||
* forward declarations
|
||||
* ------------------------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
static int _handleUrl(AQH_HTTP_URLHANDLER *uh, AQH_HTTP_REQUEST *rq);
|
||||
static int _handleGet(AQH_HTTP_URLHANDLER *uh, AQH_HTTP_REQUEST *rq);
|
||||
static int _handlePost(AQH_HTTP_URLHANDLER *uh, AQH_HTTP_REQUEST *rq);
|
||||
@@ -35,10 +43,14 @@ static void _handleGetList(AQH_HTTP_URLHANDLER *uh, AQH_HTTP_REQUEST *rq, GWEN_B
|
||||
|
||||
static void _handleGetAdd(AQH_HTTP_URLHANDLER *uh, AQH_HTTP_REQUEST *rq, GWEN_BUFFER *pageBuf);
|
||||
static int _handlePostAdd(AQH_HTTP_URLHANDLER *uh, AQH_HTTP_REQUEST *rq);
|
||||
static int _writeAddPage(AQH_HTTP_URLHANDLER *uh, AQH_HTTP_REQUEST *rq, GWEN_BUFFER *pageBuf);
|
||||
static int _writeAddPage(AQH_HTTP_URLHANDLER *uh, AQH_HTTP_REQUEST *rq, GWEN_DB_NODE *dbValues, GWEN_BUFFER *pageBuf);
|
||||
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------------------------------
|
||||
* implementations
|
||||
* ------------------------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
AQH_HTTP_URLHANDLER *AQH_RoomsHttpUrlHandler_new(AQH_SERVICE *sv)
|
||||
{
|
||||
@@ -211,9 +223,13 @@ void _handleGetList(AQH_HTTP_URLHANDLER *uh, AQH_HTTP_REQUEST *rq, GWEN_BUFFER *
|
||||
if (sto) {
|
||||
const AQH_ROOM_LIST *rl;
|
||||
|
||||
GWEN_Buffer_AppendString(pageBuf, "<h2>Rooms</h2>");
|
||||
GWEN_Buffer_AppendString(pageBuf, "<table>");
|
||||
GWEN_Buffer_AppendString(pageBuf, "<tr><th>Id</th><th>Name</th><th>Description</th></tr>");
|
||||
GWEN_Buffer_AppendArgs(pageBuf,
|
||||
"<h2>%s</h2>"
|
||||
"<table>"
|
||||
" <tr><th>Id</th><th>%s</th><th>%s</th></tr>",
|
||||
I18N("Rooms"),
|
||||
I18N("Name"),
|
||||
I18N("Description"));
|
||||
rl=AQH_Storage_GetRoomList(sto);
|
||||
if (rl) {
|
||||
const AQH_ROOM *r;
|
||||
@@ -232,15 +248,14 @@ void _handleGetList(AQH_HTTP_URLHANDLER *uh, AQH_HTTP_REQUEST *rq, GWEN_BUFFER *
|
||||
r=AQH_Room_List_Next(r);
|
||||
}
|
||||
}
|
||||
GWEN_Buffer_AppendString(pageBuf, "</table>");
|
||||
GWEN_Buffer_AppendString(pageBuf, "<a href=\"/rooms/add\">Add Room</a><br>");
|
||||
GWEN_Buffer_AppendArgs(pageBuf, "</table><a href=\"/rooms/add\">%s</a><br>", I18N("Add Room"));
|
||||
}
|
||||
else {
|
||||
GWEN_Buffer_AppendString(pageBuf, "<p>Internal error.</p>");
|
||||
}
|
||||
}
|
||||
else {
|
||||
GWEN_Buffer_AppendString(pageBuf, "<p>No permissions to see list of rooms.</p>");
|
||||
GWEN_Buffer_AppendArgs(pageBuf, "<p>%s</p>", I18N("No permissions to see list of rooms."));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -253,7 +268,7 @@ void _handleGetAdd(AQH_HTTP_URLHANDLER *uh, AQH_HTTP_REQUEST *rq, GWEN_BUFFER *p
|
||||
DBG_ERROR(NULL, "ADD");
|
||||
perms=AQH_HttpRequest_GetModulePerms(rq);
|
||||
if (perms & AQHOME_HTTP_PERMS_ADD_ROOM) {
|
||||
_writeAddPage(uh, rq, pageBuf);
|
||||
_writeAddPage(uh, rq, NULL, pageBuf);
|
||||
}
|
||||
else {
|
||||
DBG_INFO(NULL, "No permissions to add a room.");
|
||||
@@ -263,18 +278,36 @@ void _handleGetAdd(AQH_HTTP_URLHANDLER *uh, AQH_HTTP_REQUEST *rq, GWEN_BUFFER *p
|
||||
|
||||
|
||||
|
||||
int _writeAddPage(AQH_HTTP_URLHANDLER *uh, AQH_HTTP_REQUEST *rq, GWEN_BUFFER *pageBuf)
|
||||
int _writeAddPage(AQH_HTTP_URLHANDLER *uh, AQH_HTTP_REQUEST *rq, GWEN_DB_NODE *dbValues, GWEN_BUFFER *pageBuf)
|
||||
{
|
||||
int rv;
|
||||
int pos;
|
||||
const char *name=NULL;
|
||||
const char *descr=NULL;
|
||||
|
||||
pos=GWEN_Buffer_GetPos(pageBuf);
|
||||
rv=AQH_HttpService_AddFile(AQH_HttpUrlHandler_GetHttpService(uh), NULL, "roomadd.html", pageBuf);
|
||||
if (rv<0) {
|
||||
DBG_ERROR(AQH_LOGDOMAIN, "Error reading file \"roomadd.html\"");
|
||||
GWEN_Buffer_Crop(pageBuf, 0, pos);
|
||||
GWEN_Buffer_AppendString(pageBuf, "<p>Internal error.</p>");
|
||||
if (dbValues) {
|
||||
name=GWEN_DB_GetCharValue(dbValues, "name", 0, NULL);
|
||||
descr=GWEN_DB_GetCharValue(dbValues, "description", 0, NULL);
|
||||
}
|
||||
GWEN_Buffer_AppendArgs(pageBuf,
|
||||
"<h2>%s</h2><br>\n"
|
||||
"<form action=\"/rooms/add\" method=\"post\" enctype=\"application/x-www-form-urlencoded\">"
|
||||
" <table>"
|
||||
" <tr>"
|
||||
" <td><label for=\"name\">%s: </label></td>"
|
||||
" <td><input type=\"text\" name=\"name\" value=\"%s\" required></td>"
|
||||
" </tr>"
|
||||
" <tr>"
|
||||
" <td><label for=\"description\">%s: </label></td>"
|
||||
" <td><input type=\"text\" name=\"description\" value=\"%s\" ></td>"
|
||||
" </tr>"
|
||||
" </table>"
|
||||
" <input type=\"submit\" value=\"%s\">"
|
||||
"</form>",
|
||||
I18N("Create a Room"),
|
||||
I18N("Room Name"),
|
||||
name?name:"",
|
||||
I18N("Description"),
|
||||
descr?descr:"",
|
||||
I18N("Add Room"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -298,11 +331,11 @@ int _handlePostAdd(AQH_HTTP_URLHANDLER *uh, AQH_HTTP_REQUEST *rq)
|
||||
|
||||
db=AQH_HttpRequest_GetDbPostBody(rq);
|
||||
|
||||
roomName=GWEN_DB_GetCharValue(db, "roomname", 0, NULL);
|
||||
roomDescr=GWEN_DB_GetCharValue(db, "descr", 0, NULL);
|
||||
roomName=GWEN_DB_GetCharValue(db, "name", 0, NULL);
|
||||
roomDescr=GWEN_DB_GetCharValue(db, "description", 0, NULL);
|
||||
|
||||
if (!(roomName && *roomName)) {
|
||||
msgOut=AQH_HttpUrlHandler_CreatePageMessage(uh, rq, "red", "Missing room name", 1, _writeAddPage);
|
||||
msgOut=AQH_HttpUrlHandler_CreatePageMessage(uh, rq, "red", I18N("Missing room name"), 1, db, _writeAddPage);
|
||||
AQH_HttpRequest_SetResponseMsg(rq, msgOut);
|
||||
return 0;
|
||||
}
|
||||
@@ -316,7 +349,7 @@ int _handlePostAdd(AQH_HTTP_URLHANDLER *uh, AQH_HTTP_REQUEST *rq)
|
||||
if (roomDescr && *roomDescr)
|
||||
AQH_Room_SetDescription(r, roomDescr);
|
||||
if (AQH_Storage_GetRoomByName(sto, roomName)!=NULL) {
|
||||
msgOut=AQH_HttpUrlHandler_CreatePageMessage(uh, rq, "red", "Room already exists", 1, _writeAddPage);
|
||||
msgOut=AQH_HttpUrlHandler_CreatePageMessage(uh, rq, "red", I18N("Room already exists"), 1, db, _writeAddPage);
|
||||
AQH_HttpRequest_SetResponseMsg(rq, msgOut);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user