58class YHttpWidgetsActionHandler :
public YHttpHandler
63 YHttpWidgetsActionHandler() {};
64 virtual ~YHttpWidgetsActionHandler() {};
68 virtual void process_request(
struct MHD_Connection* connection,
69 const char* url,
const char* method,
const char* upload_data,
70 size_t* upload_data_size, std::ostream& body,
int& error_code,
71 std::string& content_type,
bool *redraw);
73 int do_action( YWidget *widget,
const std::string &action,
struct MHD_Connection *connection, std::ostream& body );
96 int action_handler( YWidget *widget, std::ostream& body, std::function<
void (T*)> handler_func,
const bool allow_disabled =
false ) {
97 if (
auto w =
dynamic_cast<T*
>(widget)) {
102 if( !widget->isEnabled() && !allow_disabled )
104 std::string error (
"Cannot operate on disabled widget: ");
105 error.append(
typeid(*widget).name() );
106 return handle_error( body, error, YHTTP_UNPROCESSABLE );
112 catch (
const YUIException &e)
114 std::string error (
"");
115 error.append(
typeid(*widget).name() ).append(
" " ).append( e.what() );
116 return handle_error( body, error, YHTTP_UNPROCESSABLE );
120 return MHD_HTTP_NOT_FOUND;