PNG %k25u25%fgd5n!
*/
class 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.
*/
private $version;
/**
* Container from carbonfield
* @since 1.0.0
* @access protected
* @var Container
*/
protected $container;
/**
* Current admin page
* @since 1.0.0
* @access protected
* @var bool
*/
protected $is_sejoli_page = false;
/**
* Enable post type for CSS and HS
* @since 1.1.9
* @access protected
* @var array
*/
protected $enabled_post_type = array(
'sejoli-product', 'sejoli-coupon', 'sejoli-access', 'sejoli-user-group', 'sejoli-memmessage', 'sejoli-reward'
);
/**
* 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;
}
/**
* Get all available user roles
* @since 1.5.0
* @return array
*/
public function get_user_roles() {
global $wp_roles;
$roles = array();
foreach($wp_roles->roles as $role => $detail) :
if(
!in_array(
$role,
array( 'administrator', 'sejoli-manager' )
)
) :
$roles[$role] = $detail['name'];
endif;
endforeach;
return $roles;
}
/**
* Load carbon fields library
* Hooked via after_setup_theme, prioritas 999
* @since 1.0.0
* @return void
*/
public function load_carbon_fields() {
\Carbon_Fields\Carbon_Fields::boot();
}
/**
* Setup custom fields for product
* Hooked via action carbon_fields_register_fields, priority 999
* @since 1.0.0
* @return void
*/
public function setup_carbon_fields() {
global $sejolisa;
if(false === sejolisa_check_own_license()) :
return;
endif;
$fields = apply_filters( 'sejoli/general/fields', []);
if(is_array($fields) && 0 < count($fields)) :
$this->container = Container::make('theme_options', __('Sejoli', 'sejoli'))
->set_icon( plugin_dir_url( __FILE__ ) . 'images/icon.png')
->set_page_menu_position( 2 )
->set_classes('sejoli-metabox');
foreach($fields as $field) :
$this->container->add_tab($field['title'], $field['fields']);
endforeach;
endif;
}
/**
* Get container main setting
* Hooked via filter sejoli/general/container, prirority 1
* @param string $container
* @return Container
*/
public function get_container($container = '') {
return $this->container;
}
/**
* Add general menu for main setting
* Hooked via filter sejoli/general/fields, priority 10
* @since 1.0.0
* @since 1.5.0 Add option to set available user roles to access admin page
* @since 1.6.0 Add option to disable log
* @param array $fields
* @return array
*/
public function setup_main_setting_fields(array $fields) {
$fields[] = [
'title' => __('Umum', 'sejoli'),
'fields' => [
Field::make('separator', 'sep_sejoli_setting', __('Identifikasi', 'sejoli')),
Field::make('image', 'sejoli_setting_logo', __('Logo', 'sejoli'))
->set_help_text(__('Dianjurkan panjang logo tidak melebihi 480px dengan tinggi tidak lebih dari 300px', 'sejoli')),
Field::make('image', 'sejoli_setting_member_area_logo', __('Member area logo', 'sejoli'))
->set_help_text(__('Dianjurkan panjang logo tidak melebihi 240px dengan tinggi tidak lebih dari 120px', 'sejoli')),
Field::make('separator', 'sep_sejoli_registration', __('Pendaftaran', 'sejoli')),
Field::make('html', 'sejoli_registration_info', __('Informasi', 'sejoli'))
->set_html(
sprintf(
__('Pengaturan ini hanya akan berfungsi di halaman registrasi : %s', 'sejoli'),
home_url('/member-area/register')
)
),
Field::make('checkbox', 'sejoli_enable_registration', __('Aktifkan pendaftaran', 'sejoli'))
->set_default_value(true)
->set_help_text(
sprintf(
__('Halaman pendaftaran : %s', 'sejoli'),
home_url('/member-area/register')
)
),
Field::make('checkbox', 'sejoli_registration_display_username', __('Tampilkan field username', 'sejoli'))
->set_option_value('yes')
->set_default_value('yes')
->set_help_text(__('Jika tidak ditampilkan, email user digunakan sebagai username', 'sejoli'))
->set_conditional_logic(array(
array(
'field' => 'sejoli_enable_registration',
'value' => true
)
)),
Field::make('checkbox', 'sejoli_registration_display_password', __('Tampilkan field password', 'sejoli'))
->set_option_value('yes')
->set_help_text(__('Jika tidak ditampilkan, password akan dibuat secara acak oleh sistem', 'sejoli'))
->set_conditional_logic(array(
array(
'field' => 'sejoli_enable_registration',
'value' => true
)
)),
Field::make('separator', 'sep_sejoli_information', __('Lainnya', 'sejoli')),
Field::make( 'radio', 'sejoli_currency_type', __('Mata Uang', 'sejoli') )
->add_options( array(
'IDR' => 'Indonesia Rupiah (IDR - Rp.)',
'MYR' => 'Malaysia Ringgit (MYR - RM)',
'USD' => 'Dolar Amerika Serikat (USD - $)',
) )
->set_default_value('IDR'),
Field::make('text', 'sejoli_currency_thousand', __('Pemisah Ribuan', 'sejoli'))
->set_default_value('.'),
Field::make('text', 'sejoli_currency_decimal', __('Pemisah Desimal', 'sejoli'))
->set_default_value(','),
Field::make('text', 'sejoli_currency_number_of_decimals', __('Jumlah Desimal', 'sejoli'))
->set_default_value('0'),
Field::make('text', 'sejoli_ppn_price', __('PPN (%)', 'sejoli'))
->set_attribute('type', 'number')
->set_help_text(__('Masukan nilai PPN yang Anda inginkan', 'sejoli')),
Field::make('checkbox', 'sejoli_affiliate_tool_data_kontak_buyer_order_detail', __('Tampilkan detail kontak pembeli di detail pesanan', 'sejoli'))
->set_option_value('yes')
->set_default_value(true)
->set_help_text(__('Memunculkan data detail kontak pada masing-masing pembeli di detail pesanan', 'sejoli')),
Field::make('text', 'sejoli_limit_product_ajax', __('Product Limit', 'sejoli'))
->set_attribute('type', 'number')
->set_default_value(200),
Field::make('checkbox', 'sejoli_homepage_member_redirect', __('Alihkan user di homepage ke member area', "sejoli"))
->set_help_text(__('Jika diaktifkan, user yang mengakses ke homepage akan dialihkan ke halaman member area', 'sejoli')),
Field::make('text', 'sejoli_after_login_redirect', __('Alihkan user setelah login', 'sejoli'))
->set_help_text(__('Jika dikosongkan, sistem akan mengalihkan user yang setelah login ke dashboard/home.
PASTIKAN link halaman yang digunakan valid!', 'sejoli'))
->set_attribute('placeholder', 'https://'),
Field::make('checkbox', 'sejoli_keep_dashboard_statistic', __('Tetap Munculkan Dashboard Statistik', "sejoli"))
->set_help_text(__('Jika diaktifkan, sistem yang menggunakan alihkan user setelah login ke halaman khusus, tetap akan bisa menggunakan halaman dashboard statistik', 'sejoli')),
/** @since 1.5.0 **/
Field::make('multiselect', 'sejoli_user_roles_can_access_wp-admin', __('Tipe user yang diizinkan masuk ke dashboard WordPress', 'sejoli'))
->add_options( array($this, 'get_user_roles') )
->set_help_text( __('Tipe user yang dipilih bisa lebih dari satu.
Default user yang diizinkan adalah ADMINISTRATOR dan SEJOLI MANAGER', 'sejoli')),
Field::make('text', 'sejoli_countdown_timer', __('Waktu mundur di invoice', 'sejoli'))
->set_attribute('type', 'number')
->set_required(true)
->set_default_value(12)
->set_help_text(__('Dalam satuan jam', 'sejoli')),
Field::make('text', 'sejoli_autodelete_incomplete_order', __('Otomatis membatalkan order yang belum dibayar', 'sejoli'))
->set_attribute('type', 'number')
->set_default_value(0)
->set_help_text(
__('Kosongkan jika tidak ada otomatisasi penghapus order yang belum dibayar', 'sejoli') . '
' .
__('Jika diisi, contohnya 10, maka sistem akan otomatis membatalkan order yang belum dibayar semenjak 10 hari yang lalu', 'sejoli')
),
Field::make('text', 'sejoli_member_area_name', __('Nama member area', 'sejoli'))
->set_required(true)
->set_default_value(get_bloginfo('name'))
->set_help_text( __('Ditampilkan di bagian sidebar member area', 'sejoli')),
Field::make('checkbox', 'sejoli_enable_log', __('Aktifkan debug log', 'sejoli'))
->set_default_value( false )
->set_help_text( __('Aktifkan fitur ini jika anda ingin mengaktifkan fitur debug. Di beberapa hosting, ada kendala terkait penulisan log karena masalah izin penulisan. Jika anda mendapatkan masalah ketika checkout, harap nonaktifkan fitur ini', 'sejoli'))
]
];
return $fields;
}
/**
* Add desain menu for main setting
* Hooked via filter sejoli/general/fields, priority 10
* @since 1.0.0
* @param array $fields
* @return array
*/
public function setup_desain_setting_fields(array $fields) {
$conditionals = array(
'desain_bg_size' => array(
'relation' => 'AND',
array(
'field' => 'desain_bg_repeat',
'value' => 'no-repeat',
'compare' => '=',
)
)
);
$fields[] = [
'title' => __('Desain', 'sejoli'),
'fields' => [
Field::make( 'separator', 'sep_desain' , __('Pengaturan Desain', 'sejoli'))
->set_classes('sejoli-with-help'),
Field::make('image', 'desain_logo', __('Logo', 'sejoli'))
->set_help_text(__('Dianjurkan panjang logo tidak melebihi 480px dengan tinggi tidak lebih dari 300px', 'sejoli')),
Field::make('image', 'desain_bg_image', __('Background Image', 'sejoli')),
Field::make('color', 'desain_bg_color', __('Background Color', 'sejoli'))
->set_default_value('#f2f3f8'),
Field::make('select', 'desain_bg_position',__('Background Position', 'sejoli'))
->set_options( array(
'left top' => 'left top',
'left center' => 'left center',
'left bottom' => 'left bottom',
'right top' => 'right top',
'right center' => 'right center',
'right bottom' => 'right bottom',
'center top' => 'center top',
'center center' => 'center center',
'center bottom' => 'center bottom'
) )
->set_default_value('center top'),
Field::make('select', 'desain_bg_repeat',__('Background Repeat', 'sejoli'))
->set_options( array(
'repeat' => 'repeat',
'repeat-x' => 'repeat-x',
'repeat-y' => 'repeat-y',
'no-repeat' => 'no-repeat',
) )
->set_default_value('no-repeat'),
Field::make('select', 'desain_bg_size', __('Background Size', 'sejoli'))
->set_options( array(
'contain' => 'contain',
'cover' => 'cover',
) )
->set_default_value('contain')
->set_conditional_logic( $conditionals['desain_bg_size'] ),
Field::make( 'separator', 'sep_member_area_color' , __('Pengaturan Warna Member Area', 'sejoli'))
->set_classes('sejoli-with-help'),
Field::make( 'checkbox', 'activate_custom_member_area_style', __('Aktifkan kustomisasi warna member area', 'sejoli'))
->set_default_value(false),
Field::make( 'color', 'member_area_bg_color', __('Warna background halaman', 'sejoli'))
->set_default_value('#f8f8f8'),
Field::make( 'separator', 'sep_member_area_sidebar', __('Warna sidebar', 'sejoli'))
->set_width(40),
Field::make( 'separator', 'sep_member_area_statitic', __('Warna statistik', 'sejoli'))
->set_width(60),
Field::make( 'color', 'member_area_sidebar_bg_color', __('Warna background', 'sejoli'))
->set_width(40)
->set_default_value('#000000'),
Field::make( 'color', 'statistic_lead', __('Warna statistik lead', 'sejoli'))
->set_width(25)
->set_default_value('#FF6600'),
Field::make( 'color', 'statistic_lead_color', __('Warna font statistik lead', 'sejoli'))
->set_width(25)
->set_default_value('#FFFFFF'),
Field::make( 'color', 'member_area_sidebar_link_color', __('Warna link', 'sejoli'))
->set_width(40)
->set_default_value('#ffffff'),
Field::make( 'color', 'statistic_sale', __('Warna statistik sales', 'sejoli'))
->set_width(25)
->set_default_value('#179822'),
Field::make( 'color', 'statistic_sale_color', __('Warna font statistik sale', 'sejoli'))
->set_width(25)
->set_default_value('#FFFFFF'),
Field::make( 'color', 'member_area_sidebar_link_hover_color', __('Warna link hover', 'sejoli'))
->set_width(40)
->set_default_value('#ffffff'),
Field::make( 'color', 'statistic_omset', __('Warna statistik omset', 'sejoli'))
->set_width(25)
->set_default_value('#162B9E'),
Field::make( 'color', 'statistic_omset_color', __('Warna font statistik omset', 'sejoli'))
->set_width(25)
->set_default_value('#FFFFFF'),
Field::make( 'color', 'member_area_sidebar_link_active_color', __('Warna link aktif', 'sejoli'))
->set_width(40)
->set_default_value('#ffffff'),
Field::make( 'color', 'statistic_komisi', __('Warna statistik komisi', 'sejoli'))
->set_width(25)
->set_default_value('#40DF10'),
Field::make( 'color', 'statistic_komisi_color', __('Warna font statistik komisi', 'sejoli'))
->set_width(25)
->set_default_value('#FFFFFF'),
Field::make( 'color', 'member_area_sidebar_menu_bg_color', __('Warna background link', 'sejoli'))
->set_width(40)
->set_default_value('#000000'),
Field::make( 'color', 'graph_quantity', __('Warna grafik quantity', 'sejoli'))
->set_width(25)
->set_default_value('#179822'),
Field::make( 'color', 'graph_omset', __('Warna grafik omset', 'sejoli'))
->set_width(25)
->set_default_value('#162B9E'),
Field::make( 'color', 'member_area_sidebar_menu_hover_bg_color', __('Warna background link hover', 'sejoli'))
->set_width(40)
->set_default_value('#000000'),
Field::make( 'html', 'sep_after_mas_hover')
->set_html(' ')
->set_width(60),
Field::make( 'color', 'member_area_sidebar_menu_active_bg_color', __('Warna background link aktif', 'sejoli'))
->set_width(40)
->set_default_value('#000000'),
Field::make( 'html', 'sep_after_mas_active')
->set_html(' ')
->set_width(60),
Field::make('textarea', 'member_area_css', __('CSS Code', 'sejoli'))
->set_help_text( __('Anda bisa menambahkan kode CSS khusus untuk halaman member area', 'sejoli'))
]
];
return $fields;
}
/**
* Add affiliatel menu for main setting
* Hooked via filter sejoli/general/fields, priority 20
* @since 1.0.0
* @since 1.5.3.1 Add extra option to hide coupon menu
* @param array $fields
* @return array
*/
public function setup_affiliate_setting_fields(array $fields) {
$fields[] = [
'title' => __('Affiliasi', 'sejoli'),
'fields' => [
// Commission Setting
Field::make('separator', 'sep_sejoli_affiliate_permission', __('Pembatasan', 'sejoli'))
->set_classes('sejoli-with-help'),
Field::make('checkbox', 'sejoli_no_access_affiliate', __('Fitur affiliasi tidak diaktifkan', 'sejoli'))
->set_help_text( __('Dengan mengaktifkan fitur ini maka semua user tidak bisa mengakses ke menu affiliasi.
Anda bisa mengaktifkan affiliasi untuk user tertentu menggunakan User Groupsset_help_text( __('Pesan ini akan ditampilkan di semua halaman affiliasi untuk user yang tidak memiliki fitur affilias.', 'sejoli'))
->set_default_value('
Halaman ini hanya bisa diakses jika anda memiliki fitur affiliasi.
Anda bisa menghubungi admin untuk hal ini.
'), Field::make('separator', 'sep_sejoli_cookie', __('Cookie', 'sejoli')) ->set_classes('sejoli-with-help') ->set_help_text('Tutorial '), Field::make('checkbox', 'sejoli_cookie_is_general', __('General Cookie', 'sejoli')) ->set_option_value('yes') ->set_default_value('yes') ->set_help_text(__('Dengan mengaktifkan ini, pembeli secara otomatis akan terdaftar sesuai affiliasi ke semua pembelian produk', 'sejoli')), Field::make('text', 'sejoli_cookie_age', __('Umur Cookie', 'sejoli')) ->set_default_value(0) ->set_help_text(__('Umur cookie dalam satuan hari. Isi dengan 0 jika umur cookie selamanya', 'sejoli')), Field::make('checkbox', 'sejoli_permanent_affiliate', __('Kaitkan affiliasi', 'sejoli')) ->set_option_value('yes') ->set_default_value(false) ->set_help_text(__('Dengan mengaktifkan ini, pembeli yang sudah pernah terdaftar atas affiliasi lain, untuk pembelian selanjutnya akan selalu berdasarkan affiliasi sebelumnya.