Skip to content
Snippets Groups Projects
Commit 7a0dba2b authored by Reinhold Kainhofer's avatar Reinhold Kainhofer
Browse files

Library: Start moving to ordernumber library...

parent 958b875f
No related branches found
No related tags found
No related merge requests found
Showing
with 1073 additions and 2 deletions
<?php <?php
require_once(Mage::getBaseDir('lib') . '/OpenTools/Ordernumber/ordernumber_helper_magento.php');
class OpenTools_Ordernumber_Helper_Data extends Mage_Core_Helper_Abstract class OpenTools_Ordernumber_Helper_Data extends Mage_Core_Helper_Abstract
{ {
public function logitem($label, $item) protected $helper = null;
function __construct($label, $item)
{ {
$this->helper = OrdernumberHelperMagento::getHelper();
Mage::Log($label . " " . get_class($item) . "\n", null, 'ordernumber.log'); Mage::Log($label . " " . get_class($item) . "\n", null, 'ordernumber.log');
Mage::Log(is_array($item)?$item:$item->debug(), null, 'ordernumber.log'); Mage::Log(is_array($item)?$item:$item->debug(), null, 'ordernumber.log');
Mage::Log(get_class_methods(get_class($item)), null, 'ordernumber.log'); Mage::Log(get_class_methods(get_class($item)), null, 'ordernumber.log');
......
...@@ -20,9 +20,11 @@ ...@@ -20,9 +20,11 @@
* @copyright Copyright (c) 2010 Fooman Limited (http://www.fooman.co.nz) * @copyright Copyright (c) 2010 Fooman Limited (http://www.fooman.co.nz)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/ */
class OpenTools_Ordernumber_Model_Observer extends Mage_Core_Model_Abstract class OpenTools_Ordernumber_Model_Observer extends Mage_Core_Model_Abstract
{ {
protected $_dbModel = null; protected $_dbModel = null;
protected function _getModel() protected function _getModel()
{ {
return Mage::getModel('opentools_ordernumber/ordernumber'); return Mage::getModel('opentools_ordernumber/ordernumber');
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<!-- declare module's version information --> <!-- declare module's version information -->
<OpenTools_Ordernumber> <OpenTools_Ordernumber>
<!-- this version number will be used for database upgrades --> <!-- this version number will be used for database upgrades -->
<version>0.1.0</version> <version>1.0.0</version>
<depends> <depends>
<Mage_Sales /> <Mage_Sales />
</depends> </depends>
......
<?php
/**
* Ordernmber upgrade script
* @author OpenTools
*/
/**
* @var $installer Mage_Core_Model_Resource_Setup
*/
$installer = $this;
/**
* Create table opentools_ordernumber
*/
$connection = $installer->getConnection();
$tablename = $installer->getTable('opentools_ordernumber/ordernumber');
if (!$connection->isTableExists($tablename)) {
$table = $connection
->newTable($tablename)
->addColumn('ordernumber_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
'unsigned' => true,
'identity' => true,
'nullable' => false,
'primary' => true,
), 'Ordernumber id')
->addColumn('number_type', Varien_Db_Ddl_Table::TYPE_TEXT, 63, array('nullable'=> false), 'Number Type')
->addColumn('number_scope', Varien_Db_Ddl_Table::TYPE_TEXT, 20, array('nullable'=> true, 'default'=>''), 'Number Scope')
->addColumn('number_format', Varien_Db_Ddl_Table::TYPE_TEXT, 255, array('nullable'=> true, 'default'=>''), 'Number Format')
->addColumn('count', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array('unsigned'=>true, 'nullable'=>false), 'Counter')
->addIndex($installer->getIdxName(
$tablename,
array('number_type', 'number_scope', 'number_format'),
Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE
),
array('number_type', 'number_scope', 'number_format'),
array('type' => Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE)
)
->setComment('Ordernumber Counter Table');
// TODO: drop table if exists!
$installer->getConnection()->createTable($table);
} else {
// Table already exists, don't do anything (but also don't try to create the table again)
}
die()
\ No newline at end of file
<!DOCTYPE html><title></title>
table.ordernumber-countertable {
border: 1px solid #888888;
display: inline-table;
}
table.ordernumber-countertable.table-striped tbody > tr:nth-child(odd) > th {
background: #E0E0E0;
}
.ordernumber-btn {
cursor: pointer;
}
col.counter_type, th.counter_type, td.counter_type {
display:none;
}
td.counter_value {
text-align: center;
}
fieldset table.ordernumber-countertable img {
padding: 0;
margin: 0;
}
div.ordernumber-ajax-loading, div.ordernumber-counter-addbtn {
display: inline;
}
div.ordernumber-ajax-loading, div.ordernumber-ajax-loading img.ordernumber-btn {
position: relative;
top: 0; left: 0;
}
div.ordernumber-ajax-loading img {
z-index:0;
}
img.ordernumber-loading {
display: none;
position: absolute;
top: 2px;
left: 0px;
z-index: 9999;
}
/* Counter custom variable replacements */
table.ordernumber_variables {
border: 1px solid #888888;
width: inherit;
}
table.ordernumber_variables td, table.ordernumber_variables th {
padding: 0px;
vertical-align: middle;
}
/* table.ordernumber_variables td.sort:before { */
/* float: none; */
/* display: inline-block; */
/* } */
table.ordernumber_variables thead th {
text-align: center;
width: auto;
}
td.counter_value {
text-align: center;
}
table.ordernumber_variables input {
background-color: rgba(255,255,255,0.75);
}
table.ordernumber_variables thead > tr:nth-child(odd) > th,
table.ordernumber_variables tfoot > tr.addreplacement_row > td {
background: #E0E0E0;
}
table.ordernumber_variables tbody > tr:nth-child(even) > td {
background: #F0F0F0;
}
table.ordernumber_variables tbody tr td input {
width: 100%;
}
.ordernumber-btn {
cursor: pointer;
}
table.ordernumber_variables img {
padding: 0;
margin: 0;
}
tr.rowhidden {
display: none;
}
/* Adjust the columns of the replacements table */
col.variables_ifvar, col.variables_ifval {
width: 15%;
}
col.variables_ifop {
width: 10%;
}
col.variables_thenvar, col.variables_thenval {
width: 25%;
}
.variables_then, .variables_settings {
text-align: center;
width: 20px;
}
lib/OpenTools/Ordernumber/library/images/icon-16-delete.png

555 B

lib/OpenTools/Ordernumber/library/images/icon-16-edit.png

623 B

lib/OpenTools/Ordernumber/library/images/icon-16-new.png

430 B

<!DOCTYPE html><title></title>
lib/OpenTools/Ordernumber/library/images/loading.gif

2.16 KiB

lib/OpenTools/Ordernumber/library/images/loading.png

17.7 KiB

<!DOCTYPE html><title></title>
<!DOCTYPE html><title></title>
/**********************************************************************************
* The global ajax_ordernumber object should have the following entries:
* - Translations:
* ORDERNUMBER_JS_NOT_AUTHORIZED, ORDERNUMBER_JS_INVALID_COUNTERVALUE, ORDERNUMBER_JS_JSONERROR
* ORDERNUMBER_JS_NEWCOUNTER, ORDERNUMBER_JS_EDITCOUNTER, ORDERNUMBER_JS_DELETECOUNTER
* ORDERNUMBER_JS_ADD_FAILED, ORDERNUMBER_JS_MODIFY_FAILED, ORDERNUMBER_JS_DELETE_FAILED
* - ajax_url: The URL for all AJAX calls
* Optional entries (callback functions) are:
* - updateMessages(messages, cssidentifier)
* - parseAjaxResponse(response) => return json
* - modifyAjaxArgs(ajaxargs) => return ajaxargs with modified arguments for jquery.ajax calls
*/
/**********************************************************************************
*
* Javascript for the counter modification table
*
**********************************************************************************/
String.Format = function() {
var s = arguments[0];
for (var i = 0; i < arguments.length - 1; i++) {
var reg = new RegExp("\\{" + i + "\\}", "gm");
s = s.replace(reg, arguments[i + 1]);
}
return s;
}
var getCounterData = function (btn) {
var row = jQuery(btn).closest("tr.counter_row");
return { row: row };
}
var handleJSONResponse = function (json, counter) {
if ('updateMessages' in ajax_ordernumber) {
ajax_ordernumber.updateMessages(json['messages'], "ordernumber");
}
if (!json.authorized) {
alert(ajax_ordernumber.ORDERNUMBER_JS_NOT_AUTHORIZED);
} else if (json.error) {
alert(json.error);
} else {
// TODO: Which other error checks can we do?
}
}
var ajaxEditCounter = function (btn, nrtype, ctr, value) {
var counter = getCounterData(btn);
counter.type=nrtype;
counter.counter=ctr;
counter.value=value;
var value = NaN;
var msgprefix = "";
while (isNaN(value) && (value != null)) {
value = prompt (String.Format(ajax_ordernumber.ORDERNUMBER_JS_EDITCOUNTER, msgprefix, counter.counter, counter.value), counter.value);
if (value != null)
value = parseInt(value);
if (isNaN(value))
msgprefix = ajax_ordernumber.ORDERNUMBER_JS_INVALID_COUNTERVALUE;
}
if (value != null) {
var loading = jQuery("img.ordernumber-loading").first().clone().insertAfter(btn).show();
var ajaxargs = {
type: "POST",
url: ajax_ordernumber.ajax_url,
data: {
action: 'setCounter',
nrtype: counter.type,
counter: counter.counter,
value: value
},
success: function ( json ) {
try {
if ('parseAjaxResponse' in ajax_ordernumber) {
json = ajax_ordernumber.parseAjaxResponse(json);
}
handleJSONResponse(json, counter);
} catch (e) {
alert(ajax_ordernumber.ORDERNUMBER_JS_JSONERROR+"\n"+e);
return;
}
if (json.success>0) {
// replace the whole row with the html returned by the AJAX call:
jQuery(counter.row).replaceWith(json.row);
// jQuery(counter.row).find(".counter_value").text(value);
} else {
alert (String.Format(ajax_ordernumber.ORDERNUMBER_JS_MODIFY_FAILED, counter.counter));
}
},
error: function() { alert (String.Format(ajax_ordernumber.ORDERNUMBER_JS_MODIFY_FAILED, counter.counter)); },
complete: function() { jQuery(loading).remove(); },
};
if ('modifyAjaxArgs' in ajax_ordernumber) {
ajaxargs = ajax_ordernumber.modifyAjaxArgs(ajaxargs);
}
jQuery.ajax(ajaxargs);
}
}
var ajaxDeleteCounter = function (btn, nrtype, ctr, value) {
var counter = getCounterData(btn);
counter.type=nrtype;
counter.counter=ctr;
counter.value=value;
var proceed = confirm (String.Format(ajax_ordernumber.ORDERNUMBER_JS_DELETECOUNTER, counter.counter, counter.value));
if (proceed == true) {
var loading = jQuery("img.ordernumber-loading").first().clone().insertAfter(btn).show();
var ajaxargs = {
type: "POST",
dataType: "json",
url: ajax_ordernumber.ajax_url,
data: {
action: 'deleteCounter',
nrtype: counter.type,
counter: counter.counter
},
success: function ( json ) {
try {
if ('parseAjaxResponse' in ajax_ordernumber) {
json = ajax_ordernumber.parseAjaxResponse(json);
}
handleJSONResponse(json, counter);
} catch (e) {
alert(ajax_ordernumber.ORDERNUMBER_JS_JSONERROR+"\n"+e);
return;
}
if (json.success>0) {
jQuery(counter.row).fadeOut(1500, function() { jQuery(counter.row).remove(); });
} else {
alert (String.Format(ajax_ordernumber.ORDERNUMBER_JS_DELETE_FAILED, counter.counter));
}
},
error: function() { alert (String.Format(ajax_ordernumber.ORDERNUMBER_JS_DELETE_FAILED, counter.counter)); },
complete: function() { jQuery(loading).remove(); },
};
if ('modifyAjaxArgs' in ajax_ordernumber) {
ajaxargs = ajax_ordernumber.modifyAjaxArgs(ajaxargs);
}
jQuery.ajax(ajaxargs);
}
}
var ajaxAddCounter = function (btn, nrtype) {
var row = jQuery(btn).parents("tr.addcounter_row");
var countername = prompt (ajax_ordernumber.ORDERNUMBER_JS_NEWCOUNTER);
if (countername != null) {
var loading = jQuery("img.ordernumber-loading").first().clone().insertAfter(jQuery(btn).find("img.ordernumber-counter-addbtn")).show();
var ajaxargs = {
type: "POST",
dataType: "json",
url: ajax_ordernumber.ajax_url,
data: {
action: "addCounter",
nrtype: nrtype,
counter: countername
},
success: function ( json ) {
try {
if ('parseAjaxResponse' in ajax_ordernumber) {
json = ajax_ordernumber.parseAjaxResponse(json);
}
handleJSONResponse(json, null);
} catch (e) {
alert(ajax_ordernumber.ORDERNUMBER_JS_JSONERROR+"\n"+e);
return;
}
if (json.success>0) {
if (json.row) {
jQuery(row).before(jQuery(json.row));
}
} else {
alert (String.Format(ajax_ordernumber.ORDERNUMBER_JS_ADD_FAILED, countername));
}
},
error: function() { alert (String.Format(ajax_ordernumber.ORDERNUMBER_JS_ADD_FAILED, countername)); },
complete: function() { jQuery(loading).remove(); },
};
if ('modifyAjaxArgs' in ajax_ordernumber) {
ajaxargs = ajax_ordernumber.modifyAjaxArgs(ajaxargs);
}
jQuery.ajax(ajaxargs);
}
}
/**********************************************************************************
*
* Javascript for the Custom Variables table
*
**********************************************************************************/
var ordernumberVariablesAddRow = function (template, element) {
var cl = jQuery("#" + template + " tr").clone(true);
// Enable all form controls
jQuery(cl).find('input,select,button,img').removeAttr('disabled');
if (jQuery.fn.chosen) {
// select boxes handled by the chosen juery plugin cannot simply be cloned,
// instead we need to re-initialize chosen!
jQuery(cl).find('select').removeClass("chzn-done").removeAttr("id").css("display", "block").next().remove();
jQuery(cl).find('select').chosen({width: "50px"});
}
// Now insert this new row into the table
jQuery(cl).appendTo("table#" + element + " tbody");
jQuery("tr#ordernumber-replacements-empty-row")
.addClass("rowhidden")
.find('input')
.attr('disabled', 'disabled');
}
jQuery(document).ready (function () {
jQuery('img.ordernumber-replacement-deletebtn').click(
function () {
jQuery(this).closest('tr').remove();
var count = jQuery(this).closest('table').find('tbody tr').length;
if (count==0) {
jQuery("tr#ordernumber-replacements-empty-row")
.removeClass("rowhidden")
.find('input,select,button,img')
.removeAttr('disabled');
}
}
);
jQuery("#ordernumber_variables tbody").sortable();
});
This diff is collapsed.
<?php
/**
* Advanced Ordernumbers magento-specific helper class
* Reinhold Kainhofer, Open Tools, office@open-tools.net
* @copyright (C) 2012-2015 - Reinhold Kainhofer
* @license AFL
**/
if (!class_exists( 'OrdernumberHelper' ))
require_once (dirname(__FILE__) . '/library/ordernumber_helper.php');
class OrdernumberHelperMagento extends OrdernumberHelper {
protected $maghelper = null;
function __construct($helper) {
parent::__construct();
$this->maghelper = $helper;
// TODO: Load translations
// load_plugin_textdomain('opentools-ordernumbers', false, basename( dirname( __FILE__ ) ) . '/languages' );
// Magento-specific Defaults for the HTML tables
// $this->_styles['counter-table-class'] = "widefat";
// $this->_styles['variable-table-class'] = "widefat wc_input_table sortable";
}
static function getHelper() {
static $helper = null;
if (!$helper) {
$helper = new OrdernumberHelperMagento();
}
return $helper;
}
/**
* HELPER FUNCTIONS, Magento-specific
*/
public function __($string) {
$string = $this->readableString($string);
return $this->maghelper->__($string);
}
function urlPath($type, $file) {
// TODO
// return plugins_url('library/' . $type . '/' . $file, __FILE__);
}
public function print_admin_styles() {
// wp_register_style('ordernumber-styles', $this->urlPath('css', 'ordernumber.css'));
// wp_enqueue_style('ordernumber-styles');
}
public function print_admin_scripts() {
// wp_register_script( 'ordernumber-script', $this->urlPath('js', 'ordernumber.js', __FILE__), array('jquery') );
// wp_enqueue_script( 'ordernumber-script');
// Handle the translations:
// $localizations = array( 'ajax_url' => admin_url( 'admin-ajax.php' ) );
// $localizations['ORDERNUMBER_JS_JSONERROR'] = $this->__("Error reading response from server:");
// $localizations['ORDERNUMBER_JS_NOT_AUTHORIZED'] = $this->__("You are not authorized to modify order number counters.");
// $localizations['ORDERNUMBER_JS_NEWCOUNTER'] = $this->__("Please enter the format/name of the new counter:");
// $localizations['ORDERNUMBER_JS_ADD_FAILED'] = $this->__("Failed adding counter {0}");
// $localizations['ORDERNUMBER_JS_INVALID_COUNTERVALUE'] = $this->__("You entered an invalid value for the counter.\n\n");
// $localizations['ORDERNUMBER_JS_EDITCOUNTER'] = $this->__("{0}Please enter the new value for the counter '{1}' (current value: {2}):");
// $localizations['ORDERNUMBER_JS_MODIFY_FAILED'] = $this->__("Failed modifying counter {0}");
// $localizations['ORDERNUMBER_JS_DELETECOUNTER'] = $this->__("Really delete counter '{0}' with value '{1}'?");
// $localizations['ORDERNUMBER_JS_DELETE_FAILED'] = $this->__("Failed deleting counter {0}");
// in JavaScript, object properties are accessed as ajax_object.ajax_url, ajax_object.we_value
// wp_localize_script( 'ordernumber-script', 'ajax_ordernumber', $localizations );
}
function getAllCounters($type) {
$counters = array();
// $pfxlen = strlen(self::$ordernumber_counter_prefix );
// foreach (wp_load_alloptions() as $name => $value) {
// if (substr($name, 0, $pfxlen) == self::$ordernumber_counter_prefix) {
// $parts = explode('-', substr($name, $pfxlen), 2);
// if (sizeof($parts)==1) {
// array_unshift($parts, 'ordernumber');
// }
// if ($parts[0]==$type) {
// $counters[] = array(
// 'type' => $parts[0],
// 'name' => $parts[1],
// 'value' => $value,
// );
// }
// }
// }
return $counters;
}
function getCounter($type, $format, $default=0) {
return get_option (self::$ordernumber_counter_prefix.$type.'-'.$format, $default);
}
function addCounter($type, $format, $value) {
return $this->setCounter($type, $format, $value);
}
function setCounter($type, $format, $value) {
return update_option(self::$ordernumber_counter_prefix.$type.'-'.$format, $value);
}
function deleteCounter($type, $format) {
return delete_option(self::$ordernumber_counter_prefix.$type.'-'.$format);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment