2015-11-30 21:30:54 +00:00
< ? php
2018-03-19 22:24:44 +00:00
/*-------------------------------------------------------------------------------------------------------------| www . vdm . io |------/
____ ____ __ __ __
/ \ _ `\ /\ _` \ __ / \ \__ __ / \ \ / \ \__
\ \ , \L\_\ __ _ __ ___ ___ ___ ___ \ \ \ / \ \ / \_\ ____\ \ , _\ _ __ / \_\ \ \____ __ __\ \ , _\ ___ _ __
\ / _\__ \ / '__`\/\`' __\ / ' __` __`\ / __`\ /' _ `\ \ \ \ \ \/\ \ /',__\\ \ \/ /\`'__\/\ \ \ '__` \ / \ \ / \ \\ \ \ / / __ ` \ / \ ` ' __\
/ \ \L\ \ / \ __ / \ \ \ / / \ \ / \ \ / \ \ / \ \L\ \ / \ \ / \ \ \ \ \_\ \ \ \ / \__ , ` \\ \ \_\ \ \ / \ \ \ \ \L\ \ \ \_\ \\ \ \_ / \ \L\ \ \ \ /
\ ` \____\ \____\\ \_\ \ \_\ \_\ \_\ \____ / \ \_\ \_\ \ \____ / \ \_\ / \____ / \ \__\\ \_\ \ \_\ \_ , __ / \ \____ / \ \__\ \____ / \ \_\
\ / _____ / \ / ____ / \ / _ / \ / _ / \ / _ / \ / _ / \ / ___ / \ / _ / \ / _ / \ / ___ / \ / _ / \ / ___ / \ / __ / \ / _ / \ / _ / \ / ___ / \ / ___ / \ / __ / \ / ___ / \ / _ /
/------------------------------------------------------------------------------------------------------------------------------------/
2015-11-30 21:30:54 +00:00
2018-03-03 16:43:27 +00:00
@ version 2.0 . x
2015-11-30 21:30:54 +00:00
@ created 22 nd October , 2015
@ package Sermon Distributor
2016-11-27 04:20:48 +00:00
@ subpackage externalsource . php
2015-11-30 21:30:54 +00:00
@ author Llewellyn van der Merwe < https :// www . vdm . io />
@ copyright Copyright ( C ) 2015. All Rights Reserved
2015-12-23 12:44:56 +00:00
@ license GNU / GPL Version 2 or later - http :// www . gnu . org / licenses / gpl - 2.0 . html
A sermon distributor that links to Dropbox .
2018-03-19 22:24:44 +00:00
/----------------------------------------------------------------------------------------------------------------------------------*/
2015-11-30 21:30:54 +00:00
// No direct access to this file
defined ( '_JEXEC' ) or die ( 'Restricted access' );
// import the list field type
jimport ( 'joomla.form.helper' );
JFormHelper :: loadFieldClass ( 'list' );
/**
2016-11-27 04:20:48 +00:00
* Externalsource Form Field class for the Sermondistributor component
2015-11-30 21:30:54 +00:00
*/
2016-11-27 04:20:48 +00:00
class JFormFieldExternalsource extends JFormFieldList
2015-11-30 21:30:54 +00:00
{
/**
2016-11-27 04:20:48 +00:00
* The externalsource field type .
2015-11-30 21:30:54 +00:00
*
* @ var string
*/
2018-05-04 16:36:08 +00:00
public $type = 'externalsource' ;
2015-11-30 21:30:54 +00:00
/**
* Override to add new button
*
* @ return string The field input markup .
*
* @ since 3.2
*/
2016-02-26 12:46:30 +00:00
protected function getInput ()
2015-11-30 21:30:54 +00:00
{
2016-07-16 12:19:44 +00:00
// see if we should add buttons
2015-11-30 21:30:54 +00:00
$setButton = $this -> getAttribute ( 'button' );
2016-07-16 12:19:44 +00:00
// get html
2015-11-30 21:30:54 +00:00
$html = parent :: getInput ();
2016-07-16 12:19:44 +00:00
// if true set button
2015-11-30 21:30:54 +00:00
if ( $setButton === 'true' )
{
2016-07-16 12:19:44 +00:00
$button = array ();
$script = array ();
$buttonName = $this -> getAttribute ( 'name' );
// get the input from url
2017-02-17 20:21:37 +00:00
$app = JFactory :: getApplication ();
$jinput = $app -> input ;
2016-07-16 12:19:44 +00:00
// get the view name & id
$values = $jinput -> getArray ( array (
'id' => 'int' ,
'view' => 'word'
));
// check if new item
$ref = '' ;
$refJ = '' ;
if ( ! is_null ( $values [ 'id' ]) && strlen ( $values [ 'view' ]))
{
2018-09-06 08:34:13 +00:00
// only load referral if not new item.
2016-07-16 12:19:44 +00:00
$ref = '&ref=' . $values [ 'view' ] . '&refid=' . $values [ 'id' ];
$refJ = '&ref=' . $values [ 'view' ] . '&refid=' . $values [ 'id' ];
2018-09-06 08:34:13 +00:00
// get the return value.
$_uri = ( string ) JUri :: getInstance ();
$_return = urlencode ( base64_encode ( $_uri ));
// load return value.
$ref .= '&return=' . $_return ;
$refJ .= '&return=' . $_return ;
2016-07-16 12:19:44 +00:00
}
2015-11-30 21:30:54 +00:00
$user = JFactory :: getUser ();
2016-11-27 04:20:48 +00:00
// only add if user allowed to create external_source
2017-02-17 20:21:37 +00:00
if ( $user -> authorise ( 'external_source.create' , 'com_sermondistributor' ) && $app -> isAdmin ()) // TODO for now only in admin area.
2015-11-30 21:30:54 +00:00
{
2016-07-16 12:19:44 +00:00
// build Create button
$buttonNamee = trim ( $buttonName );
$buttonNamee = preg_replace ( '/_+/' , ' ' , $buttonNamee );
$buttonNamee = preg_replace ( '/\s+/' , ' ' , $buttonNamee );
$buttonNamee = preg_replace ( " /[^A-Za-z ]/ " , '' , $buttonNamee );
$buttonNamee = ucfirst ( strtolower ( $buttonNamee ));
$button [] = '<a id="' . $buttonName . 'Create" class="btn btn-small btn-success hasTooltip" title="' . JText :: sprintf ( 'COM_SERMONDISTRIBUTOR_CREATE_NEW_S' , $buttonNamee ) . ' " style= " border - radius : 0 px 4 px 4 px 0 px ; padding : 4 px 4 px 4 px 7 px ; "
2016-11-27 04:20:48 +00:00
href = " index.php?option=com_sermondistributor&view=external_source&layout=edit'. $ref .' " >
2016-07-16 12:19:44 +00:00
< span class = " icon-new icon-white " ></ span ></ a > ' ;
}
2016-11-27 04:20:48 +00:00
// only add if user allowed to edit external_source
2017-02-17 20:21:37 +00:00
if (( $buttonName === 'external_source' || $buttonName === 'external_sources' ) && $user -> authorise ( 'external_source.edit' , 'com_sermondistributor' ) && $app -> isAdmin ()) // TODO for now only in admin area.
2016-07-16 12:19:44 +00:00
{
// build edit button
$buttonNamee = trim ( $buttonName );
$buttonNamee = preg_replace ( '/_+/' , ' ' , $buttonNamee );
$buttonNamee = preg_replace ( '/\s+/' , ' ' , $buttonNamee );
$buttonNamee = preg_replace ( " /[^A-Za-z ]/ " , '' , $buttonNamee );
$buttonNamee = ucfirst ( strtolower ( $buttonNamee ));
$button [] = '<a id="' . $buttonName . 'Edit" class="btn btn-small hasTooltip" title="' . JText :: sprintf ( 'COM_SERMONDISTRIBUTOR_EDIT_S' , $buttonNamee ) . ' " style= " display : none ; padding : 4 px 4 px 4 px 7 px ; " href= " #" >
< span class = " icon-edit " ></ span ></ a > ' ;
// build script
$script [] = "
jQuery ( document ) . ready ( function () {
jQuery ( '#adminForm' ) . on ( 'change' , '#jform_".$buttonName."' , function ( e ) {
e . preventDefault ();
var " . $buttonName . " Value = jQuery ( '#jform_".$buttonName."' ) . val ();
" . $buttonName . " Button ( " . $buttonName . " Value );
});
var " . $buttonName . " Value = jQuery ( '#jform_".$buttonName."' ) . val ();
" . $buttonName . " Button ( " . $buttonName . " Value );
});
function " . $buttonName . " Button ( value ) {
if ( value > 0 ) {
// hide the create button
jQuery ( '#".$buttonName."Create' ) . hide ();
// show edit button
jQuery ( '#".$buttonName."Edit' ) . show ();
2016-11-27 04:20:48 +00:00
var url = 'index.php?option=com_sermondistributor&view=external_sources&task=external_source.edit&id=' + value + '".$refJ."' ;
2016-07-16 12:19:44 +00:00
jQuery ( '#".$buttonName."Edit' ) . attr ( 'href' , url );
} else {
// show the create button
jQuery ( '#".$buttonName."Create' ) . show ();
// hide edit button
jQuery ( '#".$buttonName."Edit' ) . hide ();
}
} " ;
}
2016-11-27 04:20:48 +00:00
// check if button was created for external_source field.
2016-07-16 12:19:44 +00:00
if ( is_array ( $button ) && count ( $button ) > 0 )
{
// Load the needed script.
$document = JFactory :: getDocument ();
$document -> addScriptDeclaration ( implode ( ' ' , $script ));
// return the button attached to input field.
return '<div class="input-append">' . $html . implode ( '' , $button ) . '</div>' ;
2015-11-30 21:30:54 +00:00
}
}
return $html ;
}
/**
* Method to get a list of options for a list input .
*
2019-04-04 11:52:38 +00:00
* @ return array An array of JHtml options .
2015-11-30 21:30:54 +00:00
*/
2019-04-04 11:52:38 +00:00
protected function getOptions ()
2015-11-30 21:30:54 +00:00
{
2016-11-27 04:20:48 +00:00
$db = JFactory :: getDBO ();
$query = $db -> getQuery ( true );
$query -> select ( $db -> quoteName ( array ( 'a.id' , 'a.description' , 'a.externalsources' , 'a.update_method' ), array ( 'id' , 'external_source_description' , 'externalsources' , 'update_method' )));
$query -> from ( $db -> quoteName ( '#__sermondistributor_external_source' , 'a' ));
$query -> where ( $db -> quoteName ( 'a.published' ) . ' = 1' );
$query -> order ( 'a.description ASC' );
$db -> setQuery (( string ) $query );
$items = $db -> loadObjectList ();
$options = array ();
if ( $items )
{
2018-03-03 16:43:27 +00:00
$model = SermondistributorHelper :: getModel ( 'external_sources' , JPATH_COMPONENT_ADMINISTRATOR );
2016-11-27 04:20:48 +00:00
$options [] = JHtml :: _ ( 'select.option' , '' , 'Select an option' );
foreach ( $items as $item )
{
$options [] = JHtml :: _ ( 'select.option' , $item -> id , $item -> external_source_description . ' (' . JText :: _ ( $model -> selectionTranslation ( $item -> externalsources , 'externalsources' )) . ' ' . JText :: _ ( $model -> selectionTranslation ( $item -> update_method , 'update_method' )) . ')' );
}
}
2015-11-30 21:30:54 +00:00
return $options ;
}
}