*/
class Applyonline_Admin {
/**
* The ID of this plugin.
*
* @since 1.0.0
* @access private
* @var string $plugin_name The ID of this plugin.
*/
private $plugin_name;
/**
* The version of this plugin.
*
* @since 1.0.0
* @access private
* @var string $version The current version of this plugin.
*/
protected $version;
/**
* Initialize the class and set its properties.
*
* @since 1.0.0
* @param string $plugin_name The name of this plugin.
* @param string $version The version of this plugin.
*/
public function __construct( $plugin_name, $version ) {
$this->plugin_name = $plugin_name;
$this->version = $version;
// Hook - Applicant Listing - Column Name
add_filter( 'manage_edit-aol_application_columns', array ( $this, 'applicants_list_columns' ) );
// Hook - Applicant Listing - Column Value
add_action( 'manage_aol_application_posts_custom_column', array ( $this, 'applicants_list_columns_value' ), 10, 2 );
//Fix comments on application
add_filter('comment_row_actions', array($this, 'comments_fix'), 10, 2);
add_filter('post_row_actions',array($this, 'aol_post_row_actions'), 10, 2);
//Filter Aplications based on parent.
add_action( 'pre_get_posts', array($this, 'applications_filter') );
// Add Application data to the Application editor.
add_action ( 'edit_form_after_title', array ( $this, 'aol_application_post_editor' ) );
//Application Print
add_action('init', array($this, 'application_print'));
add_filter( 'post_date_column_status', array($this, 'application_date_column'), 10, 2);
$this->hooks_to_search_in_post_metas();
new Applyonline_MetaBoxes();
new Applyonline_Settings($version);
}
/**
* Register the stylesheets for the admin area.
*
* @since 1.0.0
*/
public function enqueue_styles() {
/**
* This function is provided for demonstration purposes only.
*
* An instance of this class should be passed to the run() function
* defined in Applyonline_Loader as all of the hooks are defined
* in that particular class.
*
* The Applyonline_Loader will then create the relationship
* between the defined hooks and the functions defined in this
* class.
*/
wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/applyonline-admin.css', array(), $this->version, 'all' );
}
/**
* Register the JavaScript for the admin area.
*
* @since 1.0.0
*/
public function enqueue_scripts() {
/**
* This function is provided for demonstration purposes only.
*
* An instance of this class should be passed to the run() function
* defined in Applyonline_Loader as all of the hooks are defined
* in that particular class.
*
* The Applyonline_Loader will then create the relationship
* between the defined hooks and the functions defined in this
* class.
*/
$localize['app_submission_message'] = 'Form has been submitted successfully. If required, we will get back to you shortly.';
$localize['aol_required_fields_notice'] = 'Fields with (*) are compulsory.';
wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/applyonline-admin.js', array( 'jquery', 'jquery-ui-sortable' ), $this->version, false );
wp_localize_script( $this->plugin_name, 'aol_admin', $localize );
}
public function settings_notice(){
$notices = get_option('aol_dismissed_notices', array());
if(in_array('aol', $notices) OR !current_user_can('manage_options')) return;
?>
';
do_action('aol_metabox_after');
}
function ad_features( $post ) {
// Add a nonce field so we can check for it later.
wp_nonce_field( 'myplugin_adpost_meta_awesome_box', 'adpost_meta_box_nonce' );
/*
* Use get_post_meta() to retrieve an existing value
* from the database and use the value for the form.
*/
?>
application_fields_generator($this->app_field_types);
}
/**
* Save the meta when the post is saved.
*
* @param int $post_id The ID of the post being saved.
*/
function save_metas( $post_id ) {
/*
* We need to verify this came from our screen and with proper authorization,
* because the save_post action can be triggered at other times.
*/
// Check if our nonce is set.
if ( ! isset( $_POST['adpost_meta_box_nonce'] ) ) {
return;
}
// Verify that the nonce is valid.
if ( ! wp_verify_nonce( $_POST['adpost_meta_box_nonce'], 'myplugin_adpost_meta_awesome_box' ) ) {
return;
}
// If this is an autosave, our form has not been submitted, so we don't want to do anything.
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
// Check the user's permissions.
if ( ! current_user_can( 'edit_post', $post_id ) ) {
return;
}
/* OK, it's safe for us to save the data now. */
$types = get_aol_ad_types();
if ( !in_array($_POST['post_type'], $types) ) return;
//Delete fields.
$old_keys = (array)get_post_custom_keys($post_id);
$new_keys = array_keys($_POST);
$removed_keys = array_diff($old_keys, $new_keys); //List of removed meta keys.
foreach($removed_keys as $key => $val):
if(substr($val, 0, 4) == '_aol') delete_post_meta($post_id, $val); //Remove meta from the db.
endforeach;
// Add/update new value.
$fields_order = array();
foreach ($_POST as $key => $val):
// Make sure that it is set.
if ( substr($key, 0, 13)=='_aol_feature_' and isset( $val ) ) {
//Sanitize user input.
$my_data = sanitize_text_field( $val );
update_post_meta( $post_id, $key, $my_data); // Add new value.
}
// Make sure that it is set.
elseif ( substr($key, 0, 9) == '_aol_app_' and isset( $val ) ) {
//$my_data = serialize($val);
$val['options'] = explode(',', $val['options']);
$val['options'] = implode(',', array_map('trim',$val['options']));
/*END - Remove white spaces */
update_post_meta( $post_id, $key, $val); // Add new value.
$fields_order[] = $key;
}
//
endforeach;
update_post_meta( $post_id, '_aol_fields_order', $fields_order); // Add new value.
}
}
/**
* This class contains all nuts and bolts of plugin settings.
*
*
* @since 1.3
* @package Applyonline_settings
* @author Farhan Noor
**/
class Applyonline_Settings extends Applyonline_MetaBoxes{
private $version;
public function __construct($version) {
//parent::__construct(); //Acitvating Parent's constructor
$this->version = $version;
//Registering Submenus.
add_action('admin_menu', array($this, 'sub_menus'));
//Registering Settings.
add_action( 'admin_init', array($this, 'registers_settings') );
add_filter( 'plugin_row_meta', array($this, 'plugin_row_meta'), 10, 2 );
//Manageing AOL role capabilites.
add_filter( "option_page_capability_aol_settings_group", 'aol_manager_capability' );
add_filter( "option_page_capability_aol_ad_template", 'aol_manager_capability' );
add_filter( "option_page_capability_aol_ads", 'aol_manager_capability' );
add_filter( "option_page_capability_aol_applications", 'aol_manager_capability' );
}
public function plugin_row_meta($links, $file){
if ( strpos( $file, 'apply-online.php' ) !== false ) {
$links['settings'] = 'Settings';
}
return $links;
}
public function sub_menus(){
add_menu_page( __('Settings', 'apply-online'), _x('Apply Online', 'admin', 'apply-online'), 'edit_applications', 'aol-settings', array($this, 'settings_page_callback'), 'dashicons-admin-site',31 );
add_submenu_page('aol-settings', __('Settings', 'apply-online'), __('Settings', 'apply-online'), 'delete_others_ads', 'aol-settings');
$filters = aol_ad_filters();
foreach($filters as $key => $val){
add_submenu_page( 'aol-settings', '', sprintf(__('%s Filter', 'apply-online'), $val), 'delete_others_ads', "edit-tags.php?taxonomy=aol_ad_".sanitize_key($key)."&post_type=aol_ad", null );
}
}
function save_settings(){
if(!current_user_can('edit_applications')) return;
if ( !empty( $_POST['aol_default_app_fields'] ) && check_admin_referer( 'aol_awesome_pretty_nonce','aol_default_app_fields' ) ) {
//Remove unnecessary fields
foreach($_POST as $key => $val){
if(substr($key, 0, 4) != '_aol') unset($_POST[$key]);
}
//Save aol default fields in DB.
update_option('aol_default_fields', $_POST);
}
}
public function settings_page_callback(){
$this->save_settings();
$tabs = $tabs = json_decode(json_encode($this->settings_api()), FALSE);
ob_start();
?>
In your WordPress admin panel, go to "All Ads" menu with globe icon and add a new ad listing here.
How to show ad listings on the front-end?
You may choose either option.
Write [aol] shortcode in an existing page or add a new page and write shortcode anywhere in the page editor. Now click on VIEW to see all of your ads on front-end.
The url lists all the applications using your theme's default look and feel.
(If above not working, try saving permalinks without any change)
Can I show selected ads on front-end?
Yes, you can show any number of ads on your website by using shortcode with "ads" attribute. Ad ids must be separated with commas i.e. [aol ads="1,2,3" type="ad"]. Default type is "ad".
Can I show ads without excerpt/summary?
Yes, use shortcode with "excerpt" attribute i.e. [aol excerpt="no"]
What attributes can i use in the shortcode?
Shortcode with default attributes is [aol ads="1,2,3" excerpt="yes" type="ad"]. Use only required attributes.
Can I display application form only using shortocode?
Yes, [aol_form id="0"] is the shortcode to display a particular application form in WordPress pages or posts. Use correct form id in the shortocode.
Filters under ApplyOnline section are not accessible.
Try deactivating & then reactivating this plugin.
Ads archive page on front-end shows 404 error or Nothing Found.