key = $key;
$this->libraries = $libraries;
}
private function get_enqueue_key() {
return 'tve_frontend_' . $this->key;
}
/**
* Module url
*
* @param boolean $include_version
*
* @return string
*/
public function get_url( $include_version = true ) {
return tve_editor_js( '/modules/' . $this->key . \TCB_Utils::get_js_suffix() ) . ( $include_version ? '?v=' . TVE_VERSION : '' );
}
/**
* @param bool $print_inline
*/
public function load( $print_inline = false ) {
/* allow multiple enqueue because it doesn't affect the code */
if ( $this->loaded === null || ! $print_inline ) {
$this->dependencies = [];
$file_url = $this->get_url();
$enqueue_key = $this->get_enqueue_key();
/* load any additional libraries that this module needs */
$this->loaded = $this->load_libraries( $print_inline );
if ( $print_inline ) {
$this->loaded .= sprintf( '', $enqueue_key, $file_url );
} else {
/* all the modules have to depend on tve_frontend in order to makes sure that it's always loaded first */
$this->dependencies[] = 'tve_frontend';
tve_enqueue_script( $enqueue_key, $file_url, $this->dependencies, false, true );
$this->loaded = '';
}
}
return $this->loaded;
}
/**
* @param bool $print_inline
*/
public function load_libraries( $print_inline = false ) {
$inline_libraries = '';
foreach ( $this->libraries as $handler => $url ) {
if ( $print_inline ) {
$inline_libraries .= sprintf( '', $url );
} elseif ( ! in_array( $handler, JS::LIBRARIES_ENQUEUED_AUTOMATICALLY, true ) ) {
tve_enqueue_script( $handler, $url, [ 'jquery' ], false, true );
$this->dependencies[] = $handler;
}
}
return $inline_libraries;
}
}