amazonchooser update for 2.0

needs more love with real tests
This commit is contained in:
Ian 2014-06-08 20:43:48 +02:00
parent c8e97f5d87
commit 75d549e90c
3 changed files with 136 additions and 115 deletions

View file

@ -1,22 +1,31 @@
0.74:
-----
* Adapted backend markup for 2.0 backend, needs more with real tests.
* Fixed wysiwyg button link creator
sets temporary image path deprecated (0.73)
* Use nativ API method here - extends S9y version >= 1.3
* fixed some tpl errors
latest (0.73):
added CKEDITOR ready eventData image path
added CKEDITOR ready eventData image path
latest (0.71):
Update to 2011-08-01 version of Amazon Product Advertising API
Added Spain, Italy and China server endpoints
Thanks to Luis Sieira for help and for the Spanish translation!
Update to 2011-08-01 version of Amazon Product Advertising API
Added Spain, Italy and China server endpoints
Thanks to Luis Sieira for help and for the Spanish translation!
Version .6
Version .6
Smarty3 forward compatibility
Version .59
Added serendipity_event_amazonchooser_devinfo hook for the amazon sidebar.
Version .59
Added serendipity_event_amazonchooser_devinfo hook for the amazon sidebar.
Version .58
Version .58
Fix CSS hook code to respect templates.
Version .57
Update plugin to use serendipity_rewriteurl() for urls. Apparently I missed a rewrite url somewhere.
Version .56
Update Amazon_s9y_lib.php to remove unnecessary variables.
Update serendipity_event_amazonchooser.css to have style for the amazon sidebar plugin.

View file

@ -11,12 +11,12 @@
<div id="serendipityAdminMainpane">
<h2>{$CONST.PLUGIN_EVENT_AMAZONCHOOSER_MEDIA_BUTTON}</h2>
<div class="serendipityAdminContent">
<div class="serendipity_amazonchr_body_list">
<div class="serendipity_amazonchr_body_list">
{if $plugin_amazonchooser_page eq 'Search'}
{if ($plugin_amazonchooser_item_count gt 0) and ($plugin_amazonchooser_return_count gt 0)}
<input type="button" class="serendipityPrettyButton input_button" value="{$CONST.BACK}" onclick=window.location.href="{$plugin_amazonchooser_search_url}" />
<input type="button" class="serendipityPrettyButton input_button" value="{$CONST.BACK}" onclick=window.location.href="{$plugin_amazonchooser_search_url}" />
<div class="serendipity_amazonchr_body_count">
<span class="serendipity_amazonchr_pagecount">{$CONST.PLUGIN_EVENT_AMAZONCHOOSER_DISPLAYING} {$CONST.PLUGIN_EVENT_AMAZONCHOOSER_PAGE} {$plugin_amazonchooser_currentpage} {$CONST.PLUGIN_EVENT_AMAZONCHOOSER_OF} {$plugin_amazonchooser_totalpages} {$CONST.PLUGIN_EVENT_AMAZONCHOOSER_PAGES} ({$CONST.PLUGIN_EVENT_AMAZONCHOOSER_PAGELIMIT}).</span>
<span class="serendipity_amazonchr_pagecount">{$CONST.PLUGIN_EVENT_AMAZONCHOOSER_DISPLAYING} {$CONST.PLUGIN_EVENT_AMAZONCHOOSER_PAGE} {$plugin_amazonchooser_currentpage} {$CONST.PLUGIN_EVENT_AMAZONCHOOSER_OF} {$plugin_amazonchooser_totalpages} {$CONST.PLUGIN_EVENT_AMAZONCHOOSER_PAGES} ({$CONST.PLUGIN_EVENT_AMAZONCHOOSER_PAGELIMIT}).</span>
</div>
<div class="serendipity_amazonchr_page_buttons">
{if isset($plugin_amazonchooser_previouspage)}
@ -27,7 +27,7 @@
{/if}
</div>
{foreach from=$plugin_amazonchooser_items item=thingy}
{include file=$plugin_amazonchooser_displaytemplate }
{include file=$plugin_amazonchooser_displaytemplate}
{/foreach}
<div class="serendipity_amazonchr_page_buttons">
{if isset($plugin_amazonchooser_previouspage)}
@ -37,75 +37,82 @@
<span class="serendipity_amazonchr_previousbutton"><input type="button" class="serendipityPrettyButton input_button" value="{$CONST.NEXT}" onclick=window.location.href="{$plugin_amazonchooser_this_url}{$plugin_amazonchooser_nextpage}" /></span>
{/if}
</div>
{else}
<br />
<br />
<div>
<span>{$plugin_amazonchooser_error_message}</span>
<br />
<span>{$plugin_amazonchooser_error_result}</span>
</div>
{else}
<br />
<br />
<div>
<span>{$plugin_amazonchooser_error_message}</span>
<br />
<span>{$plugin_amazonchooser_error_result}</span>
</div>
<br />
<br />
{/if}
<div class="serendipity_amazonchr_body_list">
<input type="button" class="serendipityPrettyButton input_button" value="{$CONST.BACK}" onclick=window.location.href="{$plugin_amazonchooser_search_url}" /> </div>
<div class="serendipity_amazonchr_body_list">
<input type="button" class="serendipityPrettyButton input_button" value="{$CONST.BACK}" onclick=window.location.href="{$plugin_amazonchooser_search_url}" />
</div>
{elseif $plugin_amazonchooser_page eq 'Lookup'}
{if ($plugin_amazonchooser_item_count == 1 and $plugin_amazonchooser_return_count == 1) }
<h3>{$CONST.PLUGIN_EVENT_AMAZONCHOOSER_CHOSE} - {$thingy.strings.title}</h3>
{include file=$plugin_amazonchooser_displaytemplate }
<form action="#" method="get" name="serendipity[selForm]" >
<h3>{$CONST.PLUGIN_EVENT_AMAZONCHOOSER_CHOSE} - {$thingy.strings.title}</h3>
{include file=$plugin_amazonchooser_displaytemplate}
<form action="#" method="get" name="serendipity[selForm]">
<div>
<input type="hidden" name="asin" value="{$thingy.strings.ASIN}" />
<input type="hidden" name="searchmode" value="{$plugin_amazonchooser_searchmode}" />
</div>
<div>
<input type="button" class="serendipityPrettyButton input_button" value="{$CONST.BACK}" onclick="history.go(-1);" />
{if ($plugin_amazonchooser_simple == '1') }
<input type="button" class="serendipityPrettyButton input_button" value="{$CONST.DONE}" onclick="serendipity_amazonSelector_simpledone('{$plugin_amazonchooser_txtarea}')"/>
{else}
<input type="button" class="serendipityPrettyButton input_button" value="{$CONST.DONE}" onclick="serendipity_amazonSelector_done('{$plugin_amazonchooser_txtarea}')"/>
{/if}
</div>
</form>
{else}
<h3><{$CONST.PLUGIN_EVENT_AMAZONCHOOSER_CHOSE}</h3>
<br />
<br />
<div>
<div class="form_field">
<input type="button" class="serendipityPrettyButton input_button" value="{$CONST.BACK}" onclick="history.go(-1);" />
{if ($plugin_amazonchooser_simple == '1') }
<input type="button" class="serendipityPrettyButton input_button" value="{$CONST.DONE}" onclick="serendipity_amazonSelector_simpledone('{$plugin_amazonchooser_txtarea}')" />
{else}
<input type="button" class="serendipityPrettyButton input_button" value="{$CONST.DONE}" onclick="serendipity_amazonSelector_done('{$plugin_amazonchooser_txtarea}')" />
{/if}
</div>
</form>
{else}
<h3><{$CONST.PLUGIN_EVENT_AMAZONCHOOSER_CHOSE}</h3>
<br />
<br />
<div>
<span>{$plugin_amazonchooser_error_message}</span>
<br />
<span>{$plugin_amazonchooser_error_result}</span>
</div>
<input type="button" class="serendipityPrettyButton input_button" value="{$CONST.BACK}" onclick="history.go(-1);" />
<br />
</div>
<input type="button" class="serendipityPrettyButton input_button" value="{$CONST.BACK}" onclick="history.go(-1);" />
<br />
{/if}
{else}
{$CONST.PLUGIN_EVENT_AMAZONCHOOSER_SEARCH_DESC}
<div>
<form name="serendipity[selForm]" onsubmit="serendipity_amazonSelector_next(); return false;" >
<input type="hidden" name="step" value="1" />
<input type="hidden" name="url" value="{$plugin_amazonchooser_link}" />
<input type="hidden" name="txtarea" value="{$plugin_amazonchooser_txtarea}" />
<input type="hidden" name="simple" value="{$plugin_amazonchooser_simple}" />
<select name="mode">
{foreach from=$plugin_amazonchooser_mode key=type item=mode_names}
{if $plugin_amazonchooser_defaultmode eq $type}
<option value="{$type}" selected="selected">{$mode_names}
{else}
<option value="{$type}">{$mode_names}
{/if}
{/foreach}
</select>
<div><input class="input_textbox" type="text" name="keyword" value="{$plugin_amazonchooser_keyword}"/> <br />
<input type="button" class="serendipityPrettyButton input_button" value="{$CONST.SEARCH}" onclick="serendipity_amazonSelector_next()" /></div>
</form>
</div>
{$CONST.PLUGIN_EVENT_AMAZONCHOOSER_SEARCH_DESC}
<div>
<form name="serendipity[selForm]" onsubmit="serendipity_amazonSelector_next(); return false;">
<div>
<input type="hidden" name="step" value="1" />
<input type="hidden" name="url" value="{$plugin_amazonchooser_link}" />
<input type="hidden" name="txtarea" value="{$plugin_amazonchooser_txtarea}" />
<input type="hidden" name="simple" value="{$plugin_amazonchooser_simple}" />
</div>
<select name="mode">
{foreach from=$plugin_amazonchooser_mode key=type item=mode_names}
{if $plugin_amazonchooser_defaultmode eq $type}
<option value="{$type}" selected="selected">{$mode_names}</option>
{else}
<option value="{$type}">{$mode_names}</option>
{/if}
{/foreach}
</select>
<div class="form_field">
<input class="input_textbox" type="text" name="keyword" value="{$plugin_amazonchooser_keyword}"/>
<br />
<input type="button" class="serendipityPrettyButton input_button" value="{$CONST.PLUGIN_EVENT_AMAZONCHOOSER_SEARCH}" onclick="serendipity_amazonSelector_next()" />
</div>
</form>
</div>
{/if}
</div>
</div>
</div>
</div><!--//serendipity_amazonchr_body_list end-->
</div><!--//serendipityAdminContent end-->
</div><!--//serendipityAdminMainpane end-->
</body>
</html>

View file

@ -11,10 +11,11 @@ if (file_exists($probelang)) {
}
include dirname(__FILE__) . '/lang_en.inc.php';
if (!function_exists("Amazon_country_code")) {
include(dirname(__FILE__)."/Amazon_s9y_lib.php");
}
class serendipity_event_amazonchooser extends serendipity_event
{
@ -27,10 +28,10 @@ class serendipity_event_amazonchooser extends serendipity_event
$propbag->add('name', PLUGIN_EVENT_AMAZONCHOOSER_TITLE);
$propbag->add('description', PLUGIN_EVENT_AMAZONCHOOSER_DESC);
$propbag->add('stackable', false);
$propbag->add('author', 'Matthew Groeninger');
$propbag->add('version', '0.73');
$propbag->add('author', 'Matthew Groeninger, Ian');
$propbag->add('version', '0.74');
$propbag->add('requirements', array(
'serendipity' => '1.4',
'serendipity' => '1.3',
'smarty' => '2.6.7',
'php' => '4.3.0'
));
@ -53,7 +54,7 @@ class serendipity_event_amazonchooser extends serendipity_event
'aaid',
'server'
));
$this->markup_elements = array(
$this->markup_elements = array(
array(
'name' => 'ENTRY_BODY',
'element' => 'body',
@ -63,7 +64,6 @@ class serendipity_event_amazonchooser extends serendipity_event
'element' => 'extended'
)
);
}
function introspect_config_item($name, &$propbag)
@ -86,17 +86,16 @@ class serendipity_event_amazonchooser extends serendipity_event
$propbag->add('name', PLUGIN_EVENT_AMAZONCHOOSER_ASSOCIATE_ID);
$propbag->add('description', PLUGIN_EVENT_AMAZONCHOOSER_ASSOCIATE_ID_DESC);
break;
case 'server':
$propbag->add('type', 'radio');
case 'server':
$propbag->add('type', 'radio');
$propbag->add('name', PLUGIN_EVENT_AMAZONCHOOSER_SERVER);
$propbag->add('description', PLUGIN_EVENT_AMAZONCHOOSER_SERVER_DESC);
$propbag->add('radio', array(
$propbag->add('radio', array(
'value' => array('ca', 'cn', 'de', 'es', 'fr', 'it', 'jp', 'uk', 'us'),
'desc' => array(PLUGIN_EVENT_AMAZONCHOOSER_CA,PLUGIN_EVENT_AMAZONCHOOSER_CN,PLUGIN_EVENT_AMAZONCHOOSER_GERMANY,PLUGIN_EVENT_AMAZONCHOOSER_ES,PLUGIN_EVENT_AMAZONCHOOSER_FR,PLUGIN_EVENT_AMAZONCHOOSER_IT,PLUGIN_EVENT_AMAZONCHOOSER_JAPAN,PLUGIN_EVENT_AMAZONCHOOSER_UK,PLUGIN_EVENT_AMAZONCHOOSER_US)
));
$propbag->add('radio_per_row', '1');
$propbag->add('default', 'us');
break;
}
return true;
@ -112,7 +111,7 @@ class serendipity_event_amazonchooser extends serendipity_event
switch($event) {
case 'backend_entry_toolbar_extended':
if (isset($eventData['backend_entry_toolbar_extended:textarea'])) {
$txtarea = $eventData['backend_entry_toolbar_extended:textarea'];
$txtarea = $serendipity['version'][0] < '2' ? $eventData['backend_entry_toolbar_extended:textarea'] : $eventData['backend_entry_toolbar_extended:nugget'];
} else {
$txtarea = 'extended';
}
@ -126,7 +125,7 @@ class serendipity_event_amazonchooser extends serendipity_event
case 'backend_entry_toolbar_body':
if (isset($eventData['backend_entry_toolbar_body:textarea'])) {
$txtarea = $eventData['backend_entry_toolbar_body:textarea'];
$txtarea = $serendipity['version'][0] < '2' ? $eventData['backend_entry_toolbar_body:textarea'] : $eventData['backend_entry_toolbar_body:nugget'];
} else {
$txtarea = 'body';
}
@ -151,15 +150,16 @@ class serendipity_event_amazonchooser extends serendipity_event
break;
case 'backend_wysiwyg':
$link = serendipity_rewriteURL('plugin/amazonch') . ($serendipity['rewrite'] != 'none' ? '?' : '&amp;') . 'txtarea=' . $eventData['jsname'];
$link = serendipity_rewriteURL('plugin/amazonch') . ($serendipity['rewrite'] != 'none' ? '?' : '&amp;') . 'txtarea=' . ($serendipity['version'][0] > '1' ? 'amazonchooser'.$eventData['item'] : $eventData['jsname']);
$open = $serendipity['version'][0] > '1' ? 'serendipity.openPopup' : 'window.open';
$eventData['buttons'][] = array(
'id' => 'amazonchooser' . $eventData['jsname'],
'id' => 'amazonchooser' . ($serendipity['version'][0] > '1' ? $eventData['item'] : $eventData['jsname']),
'name' => PLUGIN_EVENT_AMAZONCHOOSER_MEDIA_BUTTON,
'javascript' => 'function() { window.open(\'' . $link . '\', \'AmazonImageSel\', \'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1\') }',
'javascript' => 'function() { '.$open.'(\'' . $link . '\', \'AmazonImageSel\', \'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1\') }',
'img_url' => $serendipity['serendipityHTTPPath'] . ($serendipity['rewrite'] == 'none' ? $serendipity['indexFile'] . '?/' : '') . 'plugin/plugin_amazonchooser.gif',
'img_path' => 'serendipity_event_amazonchooser/serendipity_event_amazonchooser.gif',
'img_url' => serendipity_rewriteURL('plugin/amazongif'),
'toolbar' => 'other' // TOOLBAR_WEB is buggy in s9y 1.4 :-/
);
'toolbar' => 'other'
);//'img_path' deprecated, used by ckeditor plugin <= 4.1.0
return true;
break;
@ -176,10 +176,10 @@ class serendipity_event_amazonchooser extends serendipity_event
case 'serendipity_event_amazonchooser_button':
$eventData['button_out'] = $this->generate_button($eventData['textbox'],true);
$eventData['button_out'] = $this->generate_button($eventData['textbox'],true);
return true;
break;
case 'serendipity_event_amazonchooser_devinfo':
$eventData['dtoken'] = trim($this->get_config('dtoken'));
$eventData['secretKey'] = trim($this->get_config('secretKey'));
@ -222,7 +222,7 @@ class serendipity_event_amazonchooser extends serendipity_event
echo file_get_contents(dirname(__FILE__) . '/serendipity_event_amazonchooser.js');
break;
case 'amazongif':
case 'plugin_amazonchooser.gif':
header('Content-Type: image/gif');
echo file_get_contents(dirname(__FILE__) . '/serendipity_event_amazonchooser.gif');
break;
@ -265,7 +265,8 @@ class serendipity_event_amazonchooser extends serendipity_event
array(
'plugin_amazonchooser_css' => serendipity_rewriteURL('serendipity_admin.css'),
'plugin_amazonchooser_js' => serendipity_rewriteURL('plugin/amazonch-js')
));
));
switch ($_REQUEST['step']) {
case '1':
$page = 1;
@ -310,10 +311,10 @@ class serendipity_event_amazonchooser extends serendipity_event
'plugin_amazonchooser_select_url' => serendipity_rewriteURL('plugin/amazonch') . ($serendipity['rewrite'] != 'none' ? '?' : '&amp;') . '&amp;mode='.trim(htmlspecialchars(rawurlencode($_REQUEST['mode']))).$simple.'&amp;txtarea=' . htmlspecialchars($_REQUEST['txtarea']) . '&amp;step=2&amp;asin='
)
);
break;
break;
case '2':
if (isset($_REQUEST['asin'])) {
if (isset($_REQUEST['asin'])) {
$result = $this->Amazon_Call("lookup",trim(htmlspecialchars(rawurlencode($_REQUEST['mode']))),trim(htmlspecialchars(rawurlencode($_REQUEST['asin']))),$country_url,$page);
} else {
$result['count'] = 0;
@ -325,7 +326,7 @@ class serendipity_event_amazonchooser extends serendipity_event
$simple = "";
}
$serendipity['smarty']->assign(
array(
array(
'plugin_amazonchooser_page' => "Lookup",
'plugin_amazonchooser_displaytemplate' => $tdisplayfile,
'plugin_amazonchooser_txtarea' => $_REQUEST['txtarea'],
@ -337,9 +338,9 @@ class serendipity_event_amazonchooser extends serendipity_event
'plugin_amazonchooser_cache_time' => $result['return_date'],
'plugin_amazonchooser_error_result' => $result['error_result'],
'thingy' => $result['items'][0]
)
)
);
break;
break;
default:
$defaultmode = rawurlencode($_REQUEST['mode']);
@ -354,7 +355,7 @@ class serendipity_event_amazonchooser extends serendipity_event
}
asort($mode_out);
$serendipity['smarty']->assign(
array(
array(
'plugin_amazonchooser_page' => "default",
'plugin_amazonchooser_keyword' => rawurldecode($_REQUEST['keyword']),
'plugin_amazonchooser_link' => $link,
@ -362,15 +363,12 @@ class serendipity_event_amazonchooser extends serendipity_event
'plugin_amazonchooser_simple' => $simple,
'plugin_amazonchooser_mode' => $mode_out,
'plugin_amazonchooser_defaultmode' => $defaultmode
)
)
);
break;
}
$inclusion = $serendipity['smarty']->security_settings[INCLUDE_ANY];
$serendipity['smarty']->security_settings[INCLUDE_ANY] = true;
$content = $serendipity['smarty']->fetch('file:'. $tfile);
$serendipity['smarty']->security_settings[INCLUDE_ANY] = $inclusion;
// use native API here - extends s9y version >= 1.3'
$content = $this->parseTemplate($tfile);
echo $content;
};
@ -390,20 +388,28 @@ class serendipity_event_amazonchooser extends serendipity_event
function generate_button ($txtarea,$return_output) {
global $serendipity;
if (!isset($txtarea)) {
$txtarea = 'body';
$txtarea = 'body';
}
$link = serendipity_rewriteURL('plugin/amazonch') . ($serendipity['rewrite'] != 'none' ? '?' : '&amp;') . 'txtarea=' . $txtarea;
$open = $serendipity['version'][0] > '1' ? 'serendipity.openPopup' : 'window.open';
if ($return_output) {
$button = '<input type="button" class="serendipityPrettyButton input_button" name="insAmazonImage" value="'.PLUGIN_EVENT_AMAZONCHOOSER_MEDIA_BUTTON.'" style="" onclick="window.open(\''.$link."&amp;simple=1".'\', \'AmazonImageSel\', \'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1\');" />';
return $button;
} else {
$button = '<input type="button" class="serendipityPrettyButton input_button" name="insAmazonImage" value="'.PLUGIN_EVENT_AMAZONCHOOSER_MEDIA_BUTTON.'" style="" onclick="window.open(\''.$link.'\', \'AmazonImageSel\', \'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1\');" />';
echo $button;
}
if ($return_output) {
if ($serendipity['version'][0] > '1') {
$button = '<input type="button" class="input_button" name="insAmazonImage" value="'.PLUGIN_EVENT_AMAZONCHOOSER_MEDIA_BUTTON.'" style="" onclick="'.$open.'(\''.$link."&amp;simple=1".'\', \'AmazonImageSel\', \'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1\');">';
} else {
$button = '<input type="button" class="serendipityPrettyButton input_button" name="insAmazonImage" value="'.PLUGIN_EVENT_AMAZONCHOOSER_MEDIA_BUTTON.'" style="" onclick="'.$open.'(\''.$link."&amp;simple=1".'\', \'AmazonImageSel\', \'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1\');" />';
}
return $button;
} else {
if ($serendipity['version'][0] > '1') {
$button = '<input type="button" class="input_button" name="insAmazonImage" value="'.PLUGIN_EVENT_AMAZONCHOOSER_MEDIA_BUTTON.'" style="" onclick="'.$open.'(\''.$link.'\', \'AmazonImageSel\', \'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1\');">';
} else {
$button = '<input type="button" class="serendipityPrettyButton input_button" name="insAmazonImage" value="'.PLUGIN_EVENT_AMAZONCHOOSER_MEDIA_BUTTON.'" style="" onclick="'.$open.'(\''.$link.'\', \'AmazonImageSel\', \'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1\');" />';
}
echo $button;
}
}
function get_amazon_item($matches) {
global $serendipity;
@ -446,10 +452,9 @@ class serendipity_event_amazonchooser extends serendipity_event
)
);
$inclusion = $serendipity['smarty']->security_settings[INCLUDE_ANY];
$serendipity['smarty']->security_settings[INCLUDE_ANY] = true;
$content = $serendipity['smarty']->fetch('file:'. $tfile);
$serendipity['smarty']->security_settings[INCLUDE_ANY] = $inclusion;
// use native API here - extends s9y version >= 1.3'
$content = $this->parseTemplate($tfile);
$content = str_replace("\n",'',$content);
if (class_exists('Cache_Lite') && is_object($cache_obj)) {
$cache_obj->save($content,'amazonchooser'.$asin);