/** * set the html for the listbuilder page * this function is registered in xajax * @param string $list_title title of list * @return xajaxResponse every xajax registered function needs to return this object */ function action_get_listbuilder_page($list_title) { global $logging; global $user; global $list_table_description; global $firstthingsfirst_field_descriptions; global $user_start_time_array; $field_types = array_keys($firstthingsfirst_field_descriptions); $old_list_loaded = FALSE; $logging->info("USER_ACTION " . __METHOD__ . " (user="******")"); # store start time $user_start_time_array[__METHOD__] = microtime(TRUE); # create necessary objects $response = new xajaxResponse(); $json = new Services_JSON(); # load list details when list title has been given if (strlen($list_title)) { $counter = 0; $definition = array(); $record = $list_table_description->select_record($list_title); # just create an empty list when list could not be loaded if (count($record) == 0) { $definition = array(0, FIELD_TYPE_DEFINITION_AUTO_NUMBER, "id", "", 1, FIELD_TYPE_DEFINITION_TEXT_LINE, "", "", 2, FIELD_TYPE_DEFINITION_ATTACHMENTS, DB_ATTACHMENTS_NAME, ""); $old_definition = htmlentities($json->encode($definition), ENT_QUOTES); $largest_id = 2; } else { $old_definition = $record[LISTTABLEDESCRIPTION_DEFINITION_FIELD_NAME]; $field_names = array_keys($old_definition); $largest_id = count($field_names) - 1; # create definition array from stored definition foreach ($field_names as $field_name) { $row = $old_definition[$field_name]; $definition[$counter * 4] = $counter; $definition[$counter * 4 + 1] = $row[0]; $definition[$counter * 4 + 2] = ListTable::_get_field_name($field_name); $definition[$counter * 4 + 3] = $row[1]; # copy in field_visible_in_overview if ($field_name == DB_ID_FIELD_NAME) { $definition[$counter * 4 + 3] = $row[2]; } $counter += 1; } $old_definition = htmlentities($json->encode($definition), ENT_QUOTES); $old_list_loaded = TRUE; } } else { $definition = array(0, FIELD_TYPE_DEFINITION_AUTO_NUMBER, "id", "", 1, FIELD_TYPE_DEFINITION_TEXT_LINE, "", "", 2, FIELD_TYPE_DEFINITION_ATTACHMENTS, DB_ATTACHMENTS_NAME, ""); $old_definition = htmlentities($json->encode($definition), ENT_QUOTES); $largest_id = 2; } # different page title when list title has been given if ($old_list_loaded == TRUE) { $page_title = translate("LABEL_MODIFY_LIST") . " '" . $record[LISTTABLEDESCRIPTION_TITLE_FIELD_NAME] . "'"; } else { $page_title = translate("LABEL_CONFIGURE_NEW_LIST"); } $html_str = ""; $html_str .= "\n\n <div id=\"listbuilder_statics_pane\" class=\"listbuilder_pane\">\n"; $html_str .= " </div> <!-- listbuilder_pane -->\n"; $html_str .= " <div id=\"listbuilder_configuration_pane\" class=\"listbuilder_pane\">\n"; $html_str .= " </div> <!-- listbuilder_pane -->\n"; #action bar $html_str .= " <div id=\"action_bar\" align=\"left\" valign=\"top\">\n"; $html_str .= " <div class=\"corner top_left_normal\"></div>\n"; $html_str .= " <div class=\"corner top_right_normal\"></div>\n"; # display the selection box to add a new column $html_str .= " " . get_select("add_select", 0, "") . "\n"; $args_str = "(document.getElementById('add_select').value, xajax.getFormValues('database_definition_form'), "; $args_str .= "document.getElementById('largest_id').innerHTML)"; $html_str .= " <span id=\"action_bar_button_add\">"; $html_str .= get_href(get_onclick(ACTION_INSERT_LISTBUILDER_ROW, HTML_NO_PERMISSION_CHECK, "", "", $args_str), translate("BUTTON_ADD_FIELD"), "icon_add"); $html_str .= "</span>\n"; # display the modify button when a title has been given if ($old_list_loaded == TRUE) { $args_str = "handleFunction(%22" . ACTION_MODIFY_LIST . "%22, %22" . $record[LISTTABLEDESCRIPTION_TITLE_FIELD_NAME] . "%22, document.getElementById(%22listbuilder_list_title_id%22).value, "; $args_str .= "document.getElementById(%22listbuilder_list_description_id%22).value, "; $args_str .= "xajax.getFormValues(%22database_definition_form%22))"; $html_str .= " <span id=\"action_bar_button_modify\">"; $html_str .= get_href(get_onclick_confirm(ACTION_MODIFY_LIST, $list_title, "action_bar_button_modify", "above", $args_str, translate("LABEL_CONFIRM_MODIFY")), translate("BUTTON_MODIFY_LIST"), "icon_accept"); $html_str .= "</span>\n"; } else { $args_str = "(document.getElementById(%27listbuilder_list_title_id%27).value, "; $args_str .= "document.getElementById(%27listbuilder_list_description_id%27).value, "; $args_str .= "xajax.getFormValues(%27database_definition_form%27))"; $html_str .= " <span id=\"action_bar_button_create\">"; $html_str .= get_href(get_onclick(ACTION_CREATE_LIST, HTML_NO_LIST_PERMISSION_CHECK, "action_bar_button_create", "above", $args_str), translate("BUTTON_CREATE_LIST"), "icon_accept"); $html_str .= "</span>\n"; } # add largest id $html_str .= " <span id=\"largest_id\" class=\"invisible_collapsed\">" . $largest_id . "</span>\n"; $html_str .= " <div class=\"corner bottom_left_normal\"></div>\n"; $html_str .= " <div class=\"corner bottom_right_normal\"></div>\n"; $html_str .= " </div> <!-- action_bar -->\n"; $response->assign("page_title", "innerHTML", $page_title); $response->assign("navigation_container", "innerHTML", get_page_navigation(PAGE_TYPE_LISTBUILDER)); $response->assign("main_body", "innerHTML", $html_str); # set html for listbuilder statics pane $html_str = ""; $html_str .= " <div class=\"corner top_left_normal\"></div>\n"; $html_str .= " <div class=\"corner top_right_normal\"></div>\n"; $html_str .= " <div class=\"listbuilder_title\">" . translate("LABEL_GENERAL_SETTINGS") . "</div>\n"; $html_str .= " <div class=\"listbuilder_contents\">\n"; $html_str .= " <div class=\"listbuilder_contents_line\">\n"; $html_str .= " <div class=\"listbuilder_contents_line_left\">" . translate("LABEL_TITLE_OF_THIS_LIST") . "</div>\n"; $html_str .= " <div class=\"listbuilder_contents_line_right\">"; # set value for title when list title has been given if ($old_list_loaded == TRUE) { $html_str .= "<input size=\"20\" maxlength=\"100\" id=\"listbuilder_list_title_id\""; $html_str .= " value=\"" . $record[LISTTABLEDESCRIPTION_TITLE_FIELD_NAME] . "\" type=\"text\"></div>\n"; } else { $html_str .= "<input size=\"20\" maxlength=\"100\" id=\"listbuilder_list_title_id\" type=\"text\"></div>\n"; } $html_str .= " </div> <!-- listbuilder_contents_line -->\n"; $html_str .= " <div class=\"listbuilder_contents_line\">\n"; $html_str .= " <div class=\"listbuilder_contents_line_left\">" . translate("LABEL_SHORT_DESCRIPTION_OF_THIS_LIST") . "</div>\n"; $html_str .= " <div class=\"listbuilder_contents_line_right\">"; # set value for description when list title has been given if ($old_list_loaded == TRUE) { $html_str .= "<textarea cols=\"60\" rows=\"4\" id=\"listbuilder_list_description_id\">"; $html_str .= $record[LISTTABLEDESCRIPTION_DESCRIPTION_FIELD_NAME] . "</textarea></div>\n"; } else { $html_str .= "<textarea cols=\"60\" rows=\"4\" id=\"listbuilder_list_description_id\"></textarea></div>\n"; } $html_str .= " </div> <!-- listbuilder_contents_line -->\n"; $html_str .= " </div> <!-- listbuilder_contents -->\n"; $html_str .= " <div class=\"corner bottom_left_normal\"></div>\n"; $html_str .= " <div class=\"corner bottom_right_normal\"></div>\n"; $response->custom_response->assign_with_effect("listbuilder_statics_pane", $html_str); # set html for listbuilder configuration pane $html_str = get_field_definition_table($definition); $response->custom_response->assign_with_effect("listbuilder_configuration_pane", $html_str); $response->assign("largest_id", "innerHTML", $largest_id); $response->assign("footer_text", "innerHTML", " "); if ($old_list_loaded == FALSE && strlen($list_title) > 0) { $error_message_str = $list_table_description->get_error_message_str(); $error_log_str = $list_table_description->get_error_log_str(); $error_str = $list_table_description->get_error_str(); set_error_message("tab_listbuilder_id", "below", $error_message_str, $error_log_str, $error_str, $response); } # log total time for this function $logging->info(get_function_time_str(__METHOD__)); return $response; }
/** * get html for action bar * @param $list_title string title of list * @param $action string highlight given action in the action bar (highlight none when action is empty) * @param $result Result result object * @return string returned html */ function get_action_bar($list_title, $action) { global $mobile; $this->_log->trace("get action bar (list_title=" . $list_title . ", action=" . $action . ")"); $html_str = ""; $html_str .= "\n <div class=\"corner top_left_normal\"></div>\n"; $html_str .= " <div class=\"corner top_right_normal\"></div>\n"; $html_str .= " <div id=\"action_bar\" align=\"left\" valign=\"top\">\n"; $html_str .= " "; # set a different title when this is the user settings page if ($this->configuration[HTML_TABLE_PAGE_TYPE] == PAGE_TYPE_USER_SETTINGS) { $html_str .= "<strong>" . $this->configuration[HTML_TABLE_RECORD_NAME] . " " . $this->_user->get_name() . "</strong>"; } else { if ($this->configuration[HTML_TABLE_PAGE_TYPE] != PAGE_TYPE_PORTAL) { if ($action == "edit") { $html_str .= "<strong>" . translate("LABEL_EDIT_RECORD") . $this->configuration[HTML_TABLE_RECORD_NAME] . "</strong>"; } else { if ($action == "insert") { $html_str .= "<strong>" . translate("LABEL_ADD_RECORD") . $this->configuration[HTML_TABLE_RECORD_NAME] . "</strong>"; } else { if ($action == "import") { $html_str .= "<strong>" . translate("LABEL_IMPORT_RECORDS") . "</strong>"; } else { if ($this->configuration[HTML_TABLE_PAGE_TYPE] != PAGE_TYPE_USERLISTTABLEPERMISSIONS) { $html_str .= "<span id=\"action_bar_button_insert\">"; # use different function name when page type is list or user admin because we use more types of permissions if ($this->configuration[HTML_TABLE_PAGE_TYPE] == PAGE_TYPE_LIST || $this->configuration[HTML_TABLE_PAGE_TYPE] == PAGE_TYPE_USER_ADMIN) { $html_str .= get_href(get_onclick("action_get_insert_" . $this->configuration[HTML_TABLE_JS_NAME_PREFIX] . "record", $this->permissions_list_title, "action_bar_button_insert", "above", "(%27" . $list_title . "%27, %27%27)"), translate("BUTTON_ADD_RECORD") . $this->configuration[HTML_TABLE_RECORD_NAME], "icon_add"); } else { $html_str .= get_href(get_onclick("action_get_" . $this->configuration[HTML_TABLE_JS_NAME_PREFIX] . "record", $this->permissions_list_title, "action_bar_button_insert", "above", "(%27" . $list_title . "%27, %27%27)"), translate("BUTTON_ADD_RECORD") . $this->configuration[HTML_TABLE_RECORD_NAME], "icon_add"); } $html_str .= "</span> "; } } } } } } # only display the import and print buttons when no action is active and only when this is a list page if ($action == "" && $this->configuration[HTML_TABLE_PAGE_TYPE] == PAGE_TYPE_LIST) { # show the print button $html_str .= "<span id=\"action_bar_button_print\">"; $html_str .= get_href(get_onclick(ACTION_GET_LIST_PRINT_PAGE, $this->permissions_list_title, "", "", "window.open(%27index.php?action=" . ACTION_GET_LIST_PRINT_PAGE . "&list=" . $list_title . "%27)"), translate("BUTTON_PRINT_LIST"), "icon_print"); $html_str .= "</span> "; # show the import button $html_str .= "<span id=\"action_bar_button_import\">"; $html_str .= get_href(get_onclick(ACTION_GET_LIST_IMPORT, $this->permissions_list_title, "action_bar_button_import", "above", "(%27" . $list_title . "%27)"), translate("BUTTON_IMPORT_RECORDS"), "icon_unarchive"); $html_str .= "</span> "; # show the export button $html_str .= "<span id=\"action_bar_button_export\">"; $html_str .= get_href(get_onclick_confirm(ACTION_EXPORT_LIST_RECORDS, $this->permissions_list_title, "action_bar_button_export", "above", "handleFunction(%22" . ACTION_EXPORT_LIST_RECORDS . "%22, %22" . $list_title . "%22)", translate("LABEL_EXPORT_CONFIRM")), translate("BUTTON_EXPORT_RECORDS"), "icon_archive"); $html_str .= "</span>"; } else { $html_str .= " "; } $html_str .= "\n </div> <!-- action_bar -->\n"; if ($action == "") { $html_str .= " <div class=\"corner bottom_left_normal\"></div>\n"; $html_str .= " <div class=\"corner bottom_right_normal\"></div>\n"; } $this->_log->trace("got action bar"); return $html_str; }