load_translations();
if ( Nextgen_Helper::is_installed_v2() ) {
Nextgen_Helper::install_lightbox_v2(
'arifancybox',
__( 'ARI Fancy Lightbox', 'ari-fancy-lightbox' ),
'class="ari-fancybox" data-fancybox-group="%GALLERY_NAME%"'
);
}
if ( is_admin() ) {
$this->special_handlers();
add_action( 'admin_enqueue_scripts', function() { $this->admin_enqueue_scripts(); } );
add_action( 'admin_menu', function() { $this->admin_menu(); } );
add_action( 'admin_init', function() { $this->admin_init(); } );
add_filter( 'plugin_action_links_' . plugin_basename( ARIFANCYLIGHTBOX_EXEC_FILE ) , function( $links ) { return $this->plugin_action_links( $links ); } );
} else {
add_action( 'init', function() { $this->client_init(); } );
add_action( 'wp_enqueue_scripts', function() { $this->enqueue_scripts(); } );
$loader = new Loader();
$loader->run();
}
do_action( 'ari-fancybox-loaded' );
parent::init();
}
private function client_init() {
$this->foogallery_support();
}
private function special_handlers() {
$settings_tab_key = 'afl_settings_tabs_state';
add_filter( 'pre_option_ari_fancy_lightbox_settings', function( $value ) use ( $settings_tab_key ) {
if ( Request::exists( $settings_tab_key ) ) {
$active_tab = Request::get_var( $settings_tab_key );
set_transient( $settings_tab_key, $active_tab, 1000 );
}
return $value;
});
}
private function load_translations() {
load_plugin_textdomain( 'ari-fancy-lightbox', false, ARIFANCYLIGHTBOX_SLUG . '/languages' );
}
private function admin_menu() {
$pages = array();
$settings_cap = 'manage_options';
$pages[] = add_menu_page(
__( 'ARI Fancy Lightbox', 'ari-fancy-lightbox' ),
__( 'ARI Fancy Lightbox', 'ari-fancy-lightbox' ),
$settings_cap,
'ari-fancy-lightbox',
array( $this, 'display_settings' ),
! ARI_WP_LEGACY ? 'dashicons-format-image' : ''
);
foreach ( $pages as $page ) {
add_action( 'load-' . $page, function() {
Screen::register();
});
}
}
private function admin_enqueue_scripts() {
$options = $this->options;
wp_register_script( 'ari-fancy-lightbox-app', $options->assets_url . 'common/app.js', array( 'jquery' ), $options->version );
wp_register_script( 'ari-fancy-lightbox-app-helper', $options->assets_url . 'common/helper.js', array( 'ari-fancy-lightbox-app' ), $options->version );
wp_register_style( 'ari-fancy-lightbox-app', $options->assets_url . 'common/css/style.css', array(), $options->version );
wp_register_style( 'ari-qtip', $options->assets_url . 'qtip/css/jquery.qtip.min.css', array(), $options->version );
wp_register_script( 'ari-qtip', $options->assets_url . 'qtip/js/jquery.qtip.min.js', array( 'jquery' ), $options->version );
$form_dependencies = array( 'jquery', 'jquery-ui-slider', 'ari-qtip' );
if ( wp_script_is( 'jquery-ui-spinner', 'registered' ) )
$form_dependencies[] = 'jquery-ui-spinner';
wp_register_script( 'ari-form-elements', $options->assets_url . 'common/form-elements.js', $form_dependencies, $options->version );
wp_register_script( 'ari-wp-tabs', $options->assets_url . 'common/tabs.js', array( 'jquery' ), $options->version );
$this->common_enqueue_scripts();
}
private function enqueue_scripts() {
$this->common_enqueue_scripts();
}
private function common_enqueue_scripts() {
$options = $this->options;
wp_register_script( 'ari-fancybox', $options->assets_url . 'fancybox/jquery.fancybox.min.js', array( 'jquery' ), $options->version );
wp_register_style( 'ari-fancybox', $options->assets_url . 'fancybox/jquery.fancybox.min.css', array(), $options->version );
}
private function admin_init() {
Settings::instance()->init();
if ( get_option( 'ari_fancy_lightbox_redirect', false ) ) {
delete_option( 'ari_fancy_lightbox_redirect' );
if ( ! isset( $_GET['activate-multi'] ) ) {
Response::redirect( admin_url( 'admin.php?page=ari-fancy-lightbox' ) );
}
}
$no_header = (bool) Request::get_var( 'noheader' );
if ( ! $no_header ) {
$page = Request::get_var( 'page' );
if ( 0 === strpos( $page, 'ari-fancy-lightbox' ) ) {
ob_start();
add_action( 'admin_page_' . $page , function() {
ob_end_flush();
}, 99 );
}
}
$this->foogallery_support();
}
protected function need_to_update() {
$installed_version = get_option( ARIFANCYLIGHTBOX_VERSION_OPTION );
return ( $installed_version != $this->options->version );
}
protected function install() {
$installer = new \Ari_Fancy_Lightbox\Installer();
return $installer->run();
}
private function plugin_action_links( $links ) {
$settings_link = '' . __( 'Settings', 'ari-fancy-lightbox' ) . '';
$support_link = '' . __( 'Support', 'ari-fancy-lightbox' ) . '';
$upgrade_link = '' . __( 'Upgrade', 'ari-fancy-lightbox' ) . '';
$links[] = $settings_link;
$links[] = $support_link;
$links[] = $upgrade_link;
return $links;
}
private function foogallery_support() {
if ( ! defined( 'FOOGALLERY_VERSION' ) )
return ;
add_filter( 'foogallery_gallery_template_field_lightboxes', function( $lightboxes ) {
$lightboxes['arifancylightbox'] = __( 'ARI Fancy Lightbox', 'ari-fancy-lightbox' );
return $lightboxes;
}, 99 );
add_filter( 'foogallery_attachment_html_link_attributes', function( $attr, $args, $attachment ) {
$lightbox = foogallery_gallery_template_setting( 'lightbox', 'unknown' );
if ( 'arifancylightbox' === $lightbox ) {
global $current_foogallery;
$attr['data-fancybox-group'] = $current_foogallery ? 'lightbox_' . $current_foogallery->ID : 'lightbox';
if ( ! isset( $attr['class'] ) )
$attr['class'] = '';
else
$attr['class'] .= ' ';
$attr['class'] .= 'ari-fancybox';
}
return $attr;
}, 10, 3 );
}
}