Version Notes
- ToTheGame Feed Import Implement and Ready to Use
Download this release
Release Info
| Developer | CyberNetikz |
| Extension | Cybernetikz_ToTheGame |
| Version | 0.1.0 |
| Comparing to | |
| See all releases | |
Version 0.1.0
- app/code/local/Cybernetikz/ToTheGame/Block/Adminhtml/System/Config/Fieldset/Hint.php +24 -0
- app/code/local/Cybernetikz/ToTheGame/Helper/Data.php +49 -0
- app/code/local/Cybernetikz/ToTheGame/Model/Resource/Mysql4/Setup.php +12 -0
- app/code/local/Cybernetikz/ToTheGame/controllers/Adminhtml/ToTheGameController.php +810 -0
- app/code/local/Cybernetikz/ToTheGame/etc/adminhtml.xml +41 -0
- app/code/local/Cybernetikz/ToTheGame/etc/config.xml +95 -0
- app/code/local/Cybernetikz/ToTheGame/etc/system.xml +63 -0
- app/code/local/Cybernetikz/ToTheGame/sql/tothegame_setup/mysql4-install-0.1.0.php +146 -0
- app/design/adminhtml/default/default/layout/cybernetikz_tothegame.xml +8 -0
- app/design/adminhtml/default/default/template/cybernetikz/tothegame/gameimport.phtml +39 -0
- app/design/adminhtml/default/default/template/cybernetikz/tothegame/system/config/fieldset/hint.phtml +6 -0
- app/etc/modules/Cybernetikz_ToTheGame.xml +9 -0
- package.xml +19 -0
- skin/adminhtml/default/default/cybernetikz/tothegame/images/indicator.gif +0 -0
- skin/adminhtml/default/default/cybernetikz/tothegame/js/jquery.js +32 -0
app/code/local/Cybernetikz/ToTheGame/Block/Adminhtml/System/Config/Fieldset/Hint.php
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
/**
|
| 4 |
+
* Renderer for ToTheGame Settings in System Configuration
|
| 5 |
+
* Author : Cybernetikz
|
| 6 |
+
* Author Email: info@cybernetikz.com
|
| 7 |
+
* Blog : http://blog.cybernetikz.com
|
| 8 |
+
* Website : http://www.cybernetikz.com
|
| 9 |
+
*/
|
| 10 |
+
|
| 11 |
+
class Cybernetikz_ToTheGame_Block_Adminhtml_System_Config_Fieldset_Hint extends Mage_Adminhtml_Block_Abstract implements Varien_Data_Form_Element_Renderer_Interface {
|
| 12 |
+
|
| 13 |
+
protected $_template = 'cybernetikz/tothegame/system/config/fieldset/hint.phtml';
|
| 14 |
+
|
| 15 |
+
/**
|
| 16 |
+
* Render fieldset html
|
| 17 |
+
*
|
| 18 |
+
* @param Varien_Data_Form_Element_Abstract $element
|
| 19 |
+
* @return string
|
| 20 |
+
*/
|
| 21 |
+
public function render(Varien_Data_Form_Element_Abstract $element) {
|
| 22 |
+
return $this->toHtml();
|
| 23 |
+
}
|
| 24 |
+
}
|
app/code/local/Cybernetikz/ToTheGame/Helper/Data.php
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Author : Cybernetikz
|
| 4 |
+
* Author Email: info@cybernetikz.com
|
| 5 |
+
* Blog : http://blog.cybernetikz.com
|
| 6 |
+
* Website : http://www.cybernetikz.com
|
| 7 |
+
*/
|
| 8 |
+
|
| 9 |
+
class Cybernetikz_ToTheGame_Helper_Data extends Mage_Core_Helper_Abstract
|
| 10 |
+
{
|
| 11 |
+
/* ToTheGame Settings */
|
| 12 |
+
const XML_SUBSCRIBER_ID = 'tothegame/setting/subscriberid';
|
| 13 |
+
const XML_IMPORT_CACHE_TTL = 'tothegame/setting/importcachettl';
|
| 14 |
+
|
| 15 |
+
public function getSubscriberId($store = null)
|
| 16 |
+
{
|
| 17 |
+
return Mage::getStoreConfig(self::XML_SUBSCRIBER_ID, $store);
|
| 18 |
+
}
|
| 19 |
+
|
| 20 |
+
public function getImportCacheTTL($store = null)
|
| 21 |
+
{
|
| 22 |
+
return Mage::getStoreConfig(self::XML_IMPORT_CACHE_TTL, $store);
|
| 23 |
+
}
|
| 24 |
+
|
| 25 |
+
public function getExtensionName(){
|
| 26 |
+
return "ToTheGame Feeder";
|
| 27 |
+
}
|
| 28 |
+
|
| 29 |
+
public function getCheckConfig(){
|
| 30 |
+
|
| 31 |
+
$extension_name = $this->getExtensionName();
|
| 32 |
+
|
| 33 |
+
if($this->getSubscriberId()=="" || $this->getImportCacheTTL()==""){
|
| 34 |
+
Mage::getSingleton('adminhtml/session')->addError($extension_name." is not configured. You need to configure before use the extension.");
|
| 35 |
+
$this->setRedirectUrl('adminhtml/system_config/edit/section/tothegame'); //Redirect to Extension System Configuration
|
| 36 |
+
}
|
| 37 |
+
|
| 38 |
+
return;
|
| 39 |
+
}
|
| 40 |
+
|
| 41 |
+
public function setRedirectUrl($redirect_url){
|
| 42 |
+
$url = Mage::helper("adminhtml")->getUrl($redirect_url);
|
| 43 |
+
$response = Mage::app()->getFrontController()->getResponse();
|
| 44 |
+
$response->setRedirect($url);
|
| 45 |
+
$response->sendResponse();
|
| 46 |
+
exit;
|
| 47 |
+
}
|
| 48 |
+
|
| 49 |
+
}
|
app/code/local/Cybernetikz/ToTheGame/Model/Resource/Mysql4/Setup.php
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Author : Cybernetikz
|
| 4 |
+
* Author Email: info@cybernetikz.com
|
| 5 |
+
* Blog : http://blog.cybernetikz.com
|
| 6 |
+
* Website : http://www.cybernetikz.com
|
| 7 |
+
*/
|
| 8 |
+
|
| 9 |
+
class Cybernetikz_ToTheGame_Model_Resource_Mysql4_Setup extends Mage_Eav_Model_Entity_Setup{
|
| 10 |
+
|
| 11 |
+
}
|
| 12 |
+
?>
|
app/code/local/Cybernetikz/ToTheGame/controllers/Adminhtml/ToTheGameController.php
ADDED
|
@@ -0,0 +1,810 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Author : Cybernetikz
|
| 4 |
+
* Author Email: info@cybernetikz.com
|
| 5 |
+
* Blog : http://blog.cybernetikz.com
|
| 6 |
+
* Website : http://www.cybernetikz.com
|
| 7 |
+
*/
|
| 8 |
+
|
| 9 |
+
class Cybernetikz_ToTheGame_Adminhtml_ToTheGameController extends Mage_Adminhtml_Controller_Action
|
| 10 |
+
{
|
| 11 |
+
|
| 12 |
+
protected $_startTime;
|
| 13 |
+
protected $gameCount = 0;
|
| 14 |
+
|
| 15 |
+
/*
|
| 16 |
+
Diclar destruct
|
| 17 |
+
*/
|
| 18 |
+
/*function __destruct(){
|
| 19 |
+
$this->_PhpShutdown();
|
| 20 |
+
}*/
|
| 21 |
+
|
| 22 |
+
|
| 23 |
+
/**
|
| 24 |
+
* Init actions
|
| 25 |
+
*
|
| 26 |
+
* @return Mage_Adminhtml_ToTheGameController
|
| 27 |
+
*/
|
| 28 |
+
protected function _initAction()
|
| 29 |
+
{
|
| 30 |
+
// load layout, set active menu and breadcrumbs
|
| 31 |
+
$this->loadLayout()
|
| 32 |
+
->_setActiveMenu('catalog/system_tothegame')
|
| 33 |
+
->_addBreadcrumb(
|
| 34 |
+
Mage::helper('catalog')->__('Catalog'),
|
| 35 |
+
Mage::helper('catalog')->__('Catalog'))
|
| 36 |
+
->_addBreadcrumb(
|
| 37 |
+
Mage::helper('cybernetikz_tothegame')->__('ToTheGame Feed Import'),
|
| 38 |
+
Mage::helper('cybernetikz_tothegame')->__('ToTheGame Import'))
|
| 39 |
+
;
|
| 40 |
+
return $this;
|
| 41 |
+
}
|
| 42 |
+
|
| 43 |
+
/*
|
| 44 |
+
Game Import Manage
|
| 45 |
+
*/
|
| 46 |
+
public function gameimportAction()
|
| 47 |
+
{
|
| 48 |
+
Mage::helper('cybernetikz_tothegame')->getCheckConfig(); // Check Configuration
|
| 49 |
+
|
| 50 |
+
$this->_title($this->__('Catalog'))->_title($this->__('ToTheGame Feed Import'));
|
| 51 |
+
|
| 52 |
+
$this->_initAction()->renderLayout();
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
/*
|
| 56 |
+
Single ToTheGame Feed Import
|
| 57 |
+
*/
|
| 58 |
+
public function singlegameimportAction()
|
| 59 |
+
{
|
| 60 |
+
|
| 61 |
+
$this->_startTime = microtime(true);
|
| 62 |
+
|
| 63 |
+
set_time_limit(0);
|
| 64 |
+
|
| 65 |
+
$req = array('game_id' => 'array');
|
| 66 |
+
$sent = array();
|
| 67 |
+
$error = false;
|
| 68 |
+
|
| 69 |
+
if (!$this->_ValidateData($_GET, $req, $sent) || $_GET['game_id'][0] == ""){
|
| 70 |
+
echo "<span style='color:red;'>Error: You need to provide ToTheGame Game ID for the game that needs to be imported.</span><br>";
|
| 71 |
+
$error = true;
|
| 72 |
+
}
|
| 73 |
+
|
| 74 |
+
if(!$error){
|
| 75 |
+
$gamesids=explode(",",$sent['game_id'][0]);
|
| 76 |
+
//print_r($gamesids);exit;
|
| 77 |
+
|
| 78 |
+
foreach($gamesids as $gameid){
|
| 79 |
+
echo 'Getting more info for GameId: ', $gameid, "<br>";
|
| 80 |
+
$this->importGame($gameid);
|
| 81 |
+
++$this->gameCount;
|
| 82 |
+
}
|
| 83 |
+
}
|
| 84 |
+
|
| 85 |
+
$this->_PhpShutdown();
|
| 86 |
+
}
|
| 87 |
+
|
| 88 |
+
/*
|
| 89 |
+
Import Single Game Process
|
| 90 |
+
*/
|
| 91 |
+
protected function importGame($gameId) {
|
| 92 |
+
|
| 93 |
+
$SUBSCRIBER_ID = Mage::helper('cybernetikz_tothegame')->getSubscriberId(); // Subscriber Id
|
| 94 |
+
$IMPORT_USE_CACHE = 1;
|
| 95 |
+
$IMPORT_CACHE_TTL = (Mage::helper('cybernetikz_tothegame')->getImportCacheTTL()*3600); // # of seconds when the cache is set to expire
|
| 96 |
+
$gameProducttId = "";
|
| 97 |
+
|
| 98 |
+
$gameUrl = 'http://export.tothegame.com/gamefeeder/v3/gamelookup.aspx?&subscriberid='.$SUBSCRIBER_ID.'&gameid='.$gameId;
|
| 99 |
+
|
| 100 |
+
$xml = new DOMDocument(); // Create new DOM object
|
| 101 |
+
|
| 102 |
+
$_product = Mage::getModel('catalog/product')->loadByAttribute('game_id', $gameId);
|
| 103 |
+
//print_r($_product);exit;
|
| 104 |
+
|
| 105 |
+
if(!empty($_product)){
|
| 106 |
+
$gameProducttId = (int)$_product->getId();
|
| 107 |
+
}
|
| 108 |
+
//echo $gameProducttId; exit;
|
| 109 |
+
|
| 110 |
+
try {
|
| 111 |
+
|
| 112 |
+
// Create Feed Upload Directtory
|
| 113 |
+
$upload_gamefeed = Mage::getBaseDir('media') . DS .'gamefeed';
|
| 114 |
+
if (!is_dir($upload_gamefeed)) {
|
| 115 |
+
if (!mkdir($upload_gamefeed, 0777, true)) {
|
| 116 |
+
echo "<span style='color:red;'>--Error: Failed to create folders...</span><br>";
|
| 117 |
+
return;
|
| 118 |
+
}
|
| 119 |
+
}
|
| 120 |
+
|
| 121 |
+
$gamefeed_file_path = $upload_gamefeed. DS .$gameId.".xml";
|
| 122 |
+
|
| 123 |
+
if (file_exists($gamefeed_file_path) && $IMPORT_USE_CACHE && time() - filectime($gamefeed_file_path) < $IMPORT_CACHE_TTL) {
|
| 124 |
+
echo "-- Loading game data from cache<br>";
|
| 125 |
+
$xml->load($gamefeed_file_path);
|
| 126 |
+
} else {
|
| 127 |
+
echo "-- Loading game data from publisher<br>";
|
| 128 |
+
$xml->load($gameUrl);
|
| 129 |
+
// cache the file
|
| 130 |
+
$xml->save($gamefeed_file_path);
|
| 131 |
+
}
|
| 132 |
+
|
| 133 |
+
// Check Product Availability
|
| 134 |
+
if(!$this->_getElementValue($xml, 'OfficialTitle')){
|
| 135 |
+
echo "<span style='color:red;'>--Error: Game Id not available. Please check Game Id and try again later.</span><br>";
|
| 136 |
+
return;
|
| 137 |
+
}
|
| 138 |
+
|
| 139 |
+
$_productData = array(
|
| 140 |
+
'name' => $this->_getElementValue($xml, 'OfficialTitle'),
|
| 141 |
+
'description' => '', // Factsheet in the XML, description of the game in english
|
| 142 |
+
'GameId' => $gameId,
|
| 143 |
+
'LastUpdated' => $this->_getElementValue($xml, 'LastUpdated'),
|
| 144 |
+
'EAN' => array(),
|
| 145 |
+
'PlatformId' => $this->_getElementValue($xml, 'PlatformId'),
|
| 146 |
+
'Platform' => $this->_getElementValue($xml, 'Platform'),
|
| 147 |
+
'LogoUrl' => $this->_getElementValue($xml, 'LogoUrl'),
|
| 148 |
+
'LocalizedTitle' => '',
|
| 149 |
+
'InGameLanguage' => array(),
|
| 150 |
+
'Releases' => array(),
|
| 151 |
+
'Packshots' => array(),
|
| 152 |
+
'PegiRating' => $this->_getElementValue($xml, 'PegiRating'),
|
| 153 |
+
'PegiRatingId' => $this->_getElementValue($xml, 'PegiRatingId'),
|
| 154 |
+
'Publisher' => array(),
|
| 155 |
+
'DeveloperId' => $this->_getElementValue($xml, 'DeveloperId'),
|
| 156 |
+
'DeveloperName' => $this->_getElementValue($xml, 'DeveloperName'),
|
| 157 |
+
'DeveloperHomepage' => $this->_getElementValue($xml, 'DeveloperHomepage'),
|
| 158 |
+
'MainGame' => $this->_getElementValue($xml, 'MainGame'),
|
| 159 |
+
'AlsoAvailableOn' => array(), // expansion pack IDs
|
| 160 |
+
'Editions' => array(), // IDs of the game editions
|
| 161 |
+
'Videos' => array(),
|
| 162 |
+
'Screenshots' => array(),
|
| 163 |
+
'Keywords' => $this->_getElementValue($xml, 'Keywords'),
|
| 164 |
+
'child_category' => $this->_getElementValue($xml, 'Category')
|
| 165 |
+
|
| 166 |
+
);
|
| 167 |
+
|
| 168 |
+
//EANs
|
| 169 |
+
$temp = $xml->getElementsByTagName('EAN');
|
| 170 |
+
|
| 171 |
+
if ($temp->length) {
|
| 172 |
+
foreach ($temp->item(0)->getElementsByTagName('string') as $i => $el)
|
| 173 |
+
$_productData['EAN'][] = $el->nodeValue;
|
| 174 |
+
}
|
| 175 |
+
|
| 176 |
+
//LocalizedTitle
|
| 177 |
+
$temp = $xml->getElementsByTagName('LocalizedTitles');
|
| 178 |
+
|
| 179 |
+
if ($temp->length) {
|
| 180 |
+
foreach ($temp->item(0)->childNodes as $i => $el) {
|
| 181 |
+
if ($el->nodeType == XML_ELEMENT_NODE && strtolower($el->getElementsByTagName('Territory')->item(0)->nodeValue) == 'uk') {
|
| 182 |
+
$_productData['LocalizedTitle'] = $el->getElementsByTagName('Title')->item(0)->nodeValue;
|
| 183 |
+
break;
|
| 184 |
+
}
|
| 185 |
+
}
|
| 186 |
+
}
|
| 187 |
+
|
| 188 |
+
//InGameLanguage
|
| 189 |
+
$temp = $xml->getElementsByTagName('InGameLanguage');
|
| 190 |
+
|
| 191 |
+
if ($temp->length) {
|
| 192 |
+
foreach ($temp->item(0)->getElementsByTagName('string') as $i => $el)
|
| 193 |
+
$_productData['InGameLanguage'][] = $el->nodeValue;
|
| 194 |
+
}
|
| 195 |
+
|
| 196 |
+
//Releases
|
| 197 |
+
$temp = $xml->getElementsByTagName('Releases');
|
| 198 |
+
|
| 199 |
+
if ($temp->length) {
|
| 200 |
+
foreach ($temp->item(0)->getElementsByTagName('Release') as $i => $el) {
|
| 201 |
+
if (strtolower($el->getElementsByTagName('Territory')->item(0)->nodeValue) == 'uk') {
|
| 202 |
+
$_productData['Releases'] = array(
|
| 203 |
+
'ReleaseStatus' => $el->getElementsByTagName('ReleaseStatus')->item(0)->nodeValue,
|
| 204 |
+
'ReleaseDate' => $el->getElementsByTagName('ReleaseDate')->item(0)->nodeValue
|
| 205 |
+
);
|
| 206 |
+
$_productData['ReleaseDate'] = $_productData['Releases']['ReleaseDate'];
|
| 207 |
+
break;
|
| 208 |
+
}
|
| 209 |
+
}
|
| 210 |
+
}
|
| 211 |
+
|
| 212 |
+
//PackShots
|
| 213 |
+
$temp = $xml->getElementsByTagName('Packshots');
|
| 214 |
+
|
| 215 |
+
if ($temp->length) {
|
| 216 |
+
|
| 217 |
+
foreach ($temp->item(0)->getElementsByTagName('Packshot') as $i => $el) {
|
| 218 |
+
if (strtolower($el->getElementsByTagName('Territory')->item(0)->nodeValue) == 'uk') {
|
| 219 |
+
|
| 220 |
+
$_productData['Packshots']['UrlMedium'] = $el->getElementsByTagName('UrlMedium')->item(0)->nodeValue;
|
| 221 |
+
|
| 222 |
+
$elem = $el->getElementsByTagName('UrlHiRez');
|
| 223 |
+
if ($elem->length) {
|
| 224 |
+
$_productData['Packshots']['UrlHiRez'] = $elem->item(0)->nodeValue;
|
| 225 |
+
}
|
| 226 |
+
|
| 227 |
+
$elem = $el->getElementsByTagName('UrlThumb');
|
| 228 |
+
if ($elem->length) {
|
| 229 |
+
$_productData['Packshots']['UrlThumb'] = $elem->item(0)->nodeValue;
|
| 230 |
+
}
|
| 231 |
+
|
| 232 |
+
break;
|
| 233 |
+
}
|
| 234 |
+
}
|
| 235 |
+
}
|
| 236 |
+
|
| 237 |
+
//Factsheets
|
| 238 |
+
$temp = $xml->getElementsByTagName('Factsheets');
|
| 239 |
+
|
| 240 |
+
if ($temp->length) {
|
| 241 |
+
foreach ($temp->item(0)->getElementsByTagName('LocalizedDescription') as $i => $el) {
|
| 242 |
+
if (strtolower($el->getElementsByTagName('Territory')->item(0)->nodeValue) == 'uk') {
|
| 243 |
+
$_productData['description'] = $el->getElementsByTagName('Description')->item(0)->nodeValue;
|
| 244 |
+
break;
|
| 245 |
+
}
|
| 246 |
+
}
|
| 247 |
+
}
|
| 248 |
+
|
| 249 |
+
//Publisher
|
| 250 |
+
$temp = $xml->getElementsByTagName('Publishers');
|
| 251 |
+
|
| 252 |
+
if ($temp->length) {
|
| 253 |
+
foreach ($temp->item(0)->getElementsByTagName('Publisher') as $i => $el) {
|
| 254 |
+
if (strtolower($el->getElementsByTagName('Territory')->item(0)->nodeValue) == 'uk') {
|
| 255 |
+
$_productData['Publisher'] = array(
|
| 256 |
+
'PublisherId' => $el->getElementsByTagName('PublisherId')->item(0)->nodeValue,
|
| 257 |
+
'PublisherName' => $el->getElementsByTagName('PublisherName')->item(0)->nodeValue,
|
| 258 |
+
'PublisherHomepage' => $el->getElementsByTagName('PublisherHomepage')->item(0)->nodeValue
|
| 259 |
+
);
|
| 260 |
+
break;
|
| 261 |
+
}
|
| 262 |
+
}
|
| 263 |
+
}
|
| 264 |
+
|
| 265 |
+
//AlsoAvailableOn
|
| 266 |
+
//TODO maybe find and prepare the products that are related for easier fetching later?
|
| 267 |
+
$temp = $xml->getElementsByTagName('AlsoAvailableOn');
|
| 268 |
+
|
| 269 |
+
if ($temp->length) {
|
| 270 |
+
foreach ($temp->item(0)->getElementsByTagName('int') as $i => $el)
|
| 271 |
+
$_productData['AlsoAvailableOn'][] = $el->nodeValue;
|
| 272 |
+
}
|
| 273 |
+
|
| 274 |
+
//Editions
|
| 275 |
+
$temp = $xml->getElementsByTagName('Editions');
|
| 276 |
+
|
| 277 |
+
if ($temp->length) {
|
| 278 |
+
foreach ($temp->item(0)->getElementsByTagName('int') as $i => $el)
|
| 279 |
+
$_productData['Editions'][] = $el->nodeValue;
|
| 280 |
+
}
|
| 281 |
+
|
| 282 |
+
//Videos
|
| 283 |
+
$temp = $xml->getElementsByTagName('Videos');
|
| 284 |
+
|
| 285 |
+
if ($temp->length) {
|
| 286 |
+
|
| 287 |
+
foreach ($temp->item(0)->getElementsByTagName('Video') as $i => $el) {
|
| 288 |
+
$v = array(
|
| 289 |
+
'VideoId' => $el->getElementsByTagName('VideoId')->item(0)->nodeValue,
|
| 290 |
+
'Url' => $el->getElementsByTagName('Url')->item(0)->nodeValue,
|
| 291 |
+
'Title' => $el->getElementsByTagName('Title')->item(0)->nodeValue,
|
| 292 |
+
'AgeWarning' => $el->getElementsByTagName('AgeWarning')->item(0)->nodeValue,
|
| 293 |
+
'Timestamp' => $el->getElementsByTagName('Timestamp')->item(0)->nodeValue,
|
| 294 |
+
'PreviewFrameUrl' => $el->getElementsByTagName('PreviewFrameUrl')->item(0)->nodeValue
|
| 295 |
+
);
|
| 296 |
+
|
| 297 |
+
$_productData['Videos'][] = $v;
|
| 298 |
+
}
|
| 299 |
+
}
|
| 300 |
+
|
| 301 |
+
//Screenshots
|
| 302 |
+
$temp = $xml->getElementsByTagName('Screenshots');
|
| 303 |
+
|
| 304 |
+
if ($temp->length) {
|
| 305 |
+
|
| 306 |
+
foreach ($temp->item(0)->getElementsByTagName('Screenshot') as $i => $el) {
|
| 307 |
+
$s = array(
|
| 308 |
+
'UrlLarge' => $el->getElementsByTagName('UrlLarge')->item(0)->nodeValue,
|
| 309 |
+
'UrlThumb' => $el->getElementsByTagName('UrlThumb')->item(0)->nodeValue
|
| 310 |
+
);
|
| 311 |
+
|
| 312 |
+
$_productData['Screenshots'][] = $s;
|
| 313 |
+
}
|
| 314 |
+
}
|
| 315 |
+
|
| 316 |
+
/*------ Start Edition Game Info -------*/
|
| 317 |
+
$edition_temp = $xml->getElementsByTagName('Edition');
|
| 318 |
+
if($edition_temp->length){
|
| 319 |
+
$edition_temp = $edition_temp->item(0);
|
| 320 |
+
|
| 321 |
+
// Update Edition Title
|
| 322 |
+
$temp = $edition_temp->getElementsByTagName('Title');
|
| 323 |
+
|
| 324 |
+
if ($temp->length) {
|
| 325 |
+
$_productData['name']=$this->_getElementValue($edition_temp, 'Title');
|
| 326 |
+
}
|
| 327 |
+
|
| 328 |
+
// Update Edition Releases
|
| 329 |
+
$temp = $edition_temp->getElementsByTagName('Releases');
|
| 330 |
+
|
| 331 |
+
if ($temp->length) {
|
| 332 |
+
foreach ($temp->item(0)->getElementsByTagName('Release') as $i => $el) {
|
| 333 |
+
if (strtolower($el->getElementsByTagName('Territory')->item(0)->nodeValue) == 'uk') {
|
| 334 |
+
$_productData['Releases'] = array(
|
| 335 |
+
'ReleaseStatus' => $el->getElementsByTagName('ReleaseStatus')->item(0)->nodeValue,
|
| 336 |
+
'ReleaseDate' => $el->getElementsByTagName('ReleaseDate')->item(0)->nodeValue
|
| 337 |
+
);
|
| 338 |
+
$_productData['ReleaseDate'] = $_productData['Releases']['ReleaseDate'];
|
| 339 |
+
break;
|
| 340 |
+
}
|
| 341 |
+
}
|
| 342 |
+
}
|
| 343 |
+
|
| 344 |
+
//Update Edition Description
|
| 345 |
+
$temp = $edition_temp->getElementsByTagName('Extra');
|
| 346 |
+
|
| 347 |
+
if ($temp->length) {
|
| 348 |
+
foreach ($temp->item(0)->getElementsByTagName('LocalizedDescription') as $i => $el) {
|
| 349 |
+
if (strtolower($el->getElementsByTagName('Territory')->item(0)->nodeValue) == 'uk') {
|
| 350 |
+
$_productData['description'] = $el->getElementsByTagName('Description')->item(0)->nodeValue;
|
| 351 |
+
break;
|
| 352 |
+
}
|
| 353 |
+
}
|
| 354 |
+
}
|
| 355 |
+
|
| 356 |
+
//Update Edition Publisher
|
| 357 |
+
$temp = $edition_temp->getElementsByTagName('Publishers');
|
| 358 |
+
if ($temp->length) {
|
| 359 |
+
foreach ($temp->item(0)->getElementsByTagName('Publisher') as $i => $el) {
|
| 360 |
+
if (strtolower($el->getElementsByTagName('Territory')->item(0)->nodeValue) == 'uk') {
|
| 361 |
+
$_productData['Publisher'] = array(
|
| 362 |
+
'PublisherId' => $el->getElementsByTagName('PublisherId')->item(0)->nodeValue,
|
| 363 |
+
'PublisherName' => $el->getElementsByTagName('PublisherName')->item(0)->nodeValue,
|
| 364 |
+
'PublisherHomepage' => $el->getElementsByTagName('PublisherHomepage')->item(0)->nodeValue
|
| 365 |
+
);
|
| 366 |
+
break;
|
| 367 |
+
}
|
| 368 |
+
}
|
| 369 |
+
}
|
| 370 |
+
|
| 371 |
+
//Update Edition PackShots
|
| 372 |
+
$temp = $edition_temp->getElementsByTagName('Packshots');
|
| 373 |
+
|
| 374 |
+
if ($temp->length) {
|
| 375 |
+
|
| 376 |
+
foreach ($temp->item(0)->getElementsByTagName('Packshot') as $i => $el) {
|
| 377 |
+
if (strtolower($el->getElementsByTagName('Territory')->item(0)->nodeValue) == 'uk') {
|
| 378 |
+
|
| 379 |
+
$_productData['Packshots']['UrlMedium'] = $el->getElementsByTagName('UrlMedium')->item(0)->nodeValue;
|
| 380 |
+
|
| 381 |
+
$elem = $el->getElementsByTagName('UrlHiRez');
|
| 382 |
+
if ($elem->length) {
|
| 383 |
+
$_productData['Packshots']['UrlHiRez'] = $elem->item(0)->nodeValue;
|
| 384 |
+
}
|
| 385 |
+
|
| 386 |
+
$elem = $el->getElementsByTagName('UrlThumb');
|
| 387 |
+
if ($elem->length) {
|
| 388 |
+
$_productData['Packshots']['UrlThumb'] = $elem->item(0)->nodeValue;
|
| 389 |
+
}
|
| 390 |
+
|
| 391 |
+
break;
|
| 392 |
+
}
|
| 393 |
+
}
|
| 394 |
+
}
|
| 395 |
+
|
| 396 |
+
}
|
| 397 |
+
|
| 398 |
+
//print_r($_productData); exit;
|
| 399 |
+
|
| 400 |
+
$genre_val = $this->_addAttributeValue("genre",$_productData['child_category']);
|
| 401 |
+
|
| 402 |
+
if(count($_productData['Publisher'])>0){
|
| 403 |
+
$publisher_val = $this->_addAttributeValue("publishers",$_productData['Publisher']['PublisherName']);
|
| 404 |
+
}
|
| 405 |
+
$shortDescription = substr(strip_tags($_productData['description']),0,200);
|
| 406 |
+
|
| 407 |
+
$parts= explode(" ",$_productData['PegiRating']);
|
| 408 |
+
$age_val = NULL;
|
| 409 |
+
if(is_int($parts[1])){
|
| 410 |
+
$age_val = $this->_addAttributeValue("age",$parts[1]);
|
| 411 |
+
}
|
| 412 |
+
|
| 413 |
+
$_productData['EAN'] = implode(",",$_productData['EAN']);
|
| 414 |
+
$_productData['AlsoAvailableOn'] = implode(',',$_productData['AlsoAvailableOn']);
|
| 415 |
+
|
| 416 |
+
if($_productData['LocalizedTitle'])
|
| 417 |
+
$_productData['LocalizedTitle'] = serialize($_productData['LocalizedTitle']);
|
| 418 |
+
|
| 419 |
+
if($_productData['Releases'])
|
| 420 |
+
$_productData['Releases'] = serialize($_productData['Releases']);
|
| 421 |
+
|
| 422 |
+
if($_productData['Publisher'])
|
| 423 |
+
$_productData['Publisher'] = serialize($_productData['Publisher']);
|
| 424 |
+
|
| 425 |
+
if($_productData['Editions'])
|
| 426 |
+
$_productData['Editions'] = serialize($_productData['Editions']);
|
| 427 |
+
|
| 428 |
+
if($_productData['Videos'])
|
| 429 |
+
$_productData['Videos'] = serialize($_productData['Videos']);
|
| 430 |
+
|
| 431 |
+
if($_productData['Keywords'])
|
| 432 |
+
$_productData['Keywords'] = implode(',',$_productData['Keywords']);
|
| 433 |
+
|
| 434 |
+
|
| 435 |
+
// Start Add Or Update Product
|
| 436 |
+
if ($gameProducttId) {
|
| 437 |
+
|
| 438 |
+
// Start Update Product Here
|
| 439 |
+
echo "-- updating ", $_productData['name'], " --productdata<br>";
|
| 440 |
+
$_product = Mage::getModel('catalog/product')->load($gameProducttId);
|
| 441 |
+
|
| 442 |
+
/*
|
| 443 |
+
Start Remove Old and Add New Images
|
| 444 |
+
*/
|
| 445 |
+
$mediaApi = Mage::getModel("catalog/product_attribute_media_api");
|
| 446 |
+
$mediaApiItems = $mediaApi->items($_product->getId());
|
| 447 |
+
foreach($mediaApiItems as $item) {
|
| 448 |
+
$datatemp=$mediaApi->remove($_product->getId(), $item['file']);
|
| 449 |
+
echo "-- rem. ", $item['file'], " from Local Server<br>";
|
| 450 |
+
}
|
| 451 |
+
$_product->save(); //before adding need to save product
|
| 452 |
+
$_product = Mage::getModel('catalog/product')->load($gameProducttId);
|
| 453 |
+
|
| 454 |
+
// Assign Packsthot Image as Product Images
|
| 455 |
+
foreach($_productData['Packshots'] as $type => $PackshotImage){
|
| 456 |
+
$importDir = Mage::getBaseDir('media') . DS . 'import'.DS;
|
| 457 |
+
$image_name = $gameId."-packshot"."-".$type.".jpg";
|
| 458 |
+
$packImageUrl = $importDir. DS .$image_name;
|
| 459 |
+
// Copy Image from totheGame server to local server
|
| 460 |
+
if(copy($PackshotImage, $packImageUrl)){
|
| 461 |
+
echo "-- upl. ", $PackshotImage, " to Local Server<br>";
|
| 462 |
+
// Add three image sizes to media gallery
|
| 463 |
+
$_product->addImageToMediaGallery($packImageUrl, array('image','thumbnail','small_image'), false, false); // Assigning packshot image, thumb and small image to media gallery
|
| 464 |
+
break;
|
| 465 |
+
}
|
| 466 |
+
}
|
| 467 |
+
|
| 468 |
+
// Assign Screenshot Image as Product Images
|
| 469 |
+
foreach($_productData['Screenshots'] as $type => $screenshotImages){
|
| 470 |
+
$screenshotImage = $screenshotImages['UrlLarge'];
|
| 471 |
+
$importDir = Mage::getBaseDir('media') . DS . 'import'.DS;
|
| 472 |
+
$image_name = $gameId."-screenshot"."-".$type.".jpg";
|
| 473 |
+
$screenshotImageUrl = $importDir. DS .$image_name;
|
| 474 |
+
// Copy Image from totheGame server to local server
|
| 475 |
+
if(copy($screenshotImage, $screenshotImageUrl)){
|
| 476 |
+
echo "-- upl. ", $screenshotImage, " to Local Server<br>";
|
| 477 |
+
// Add three image sizes to media gallery
|
| 478 |
+
$_product->addImageToMediaGallery($screenshotImageUrl, false, false, false); // Assigning screenshot image to media gallery
|
| 479 |
+
}
|
| 480 |
+
}
|
| 481 |
+
|
| 482 |
+
/*
|
| 483 |
+
End Remove Old and Add New Images
|
| 484 |
+
*/
|
| 485 |
+
|
| 486 |
+
$_product->setName($_productData['name']);
|
| 487 |
+
$_product->setDescription($_productData['description']);
|
| 488 |
+
$_product->setShortDescription($shortDescription);
|
| 489 |
+
$_product->setGenre($genre_val);
|
| 490 |
+
if(count($_productData['Publisher'])>0){
|
| 491 |
+
$_product->setPublishers($publisher_val);
|
| 492 |
+
}
|
| 493 |
+
if($age_val)
|
| 494 |
+
$_product->setAge($age_val);
|
| 495 |
+
|
| 496 |
+
$_product->setGameId($gameId);
|
| 497 |
+
$_product->setLastUpdated($_productData['LastUpdated']);
|
| 498 |
+
$_product->setEan($_productData['EAN']);
|
| 499 |
+
$_product->setPlatformId($_productData['PlatformId']);
|
| 500 |
+
$_product->setPlatform($_productData['Platform']);
|
| 501 |
+
$_product->setLogoUrl($_productData['LogoUrl']);
|
| 502 |
+
$_product->setLocalizedTitle($_productData['LocalizedTitle']);
|
| 503 |
+
$_product->setReleases($_productData['Releases']);
|
| 504 |
+
$_product->setPegiRating($_productData['PegiRating']);
|
| 505 |
+
$_product->setPegiRatingId($_productData['PegiRatingId']);
|
| 506 |
+
$_product->setPublisher($_productData['Publisher']);
|
| 507 |
+
$_product->setDeveloperId($_productData['DeveloperId']);
|
| 508 |
+
$_product->setDeveloperName($_productData['DeveloperName']);
|
| 509 |
+
$_product->setDeveloperHomepage($_productData['DeveloperHomepage']);
|
| 510 |
+
$_product->setMainGame($_productData['MainGame']);
|
| 511 |
+
$_product->setAlsoAvailableOn($_productData['AlsoAvailableOn']);
|
| 512 |
+
$_product->setEditions($_productData['Editions']);
|
| 513 |
+
$_product->setVideos($_productData['Videos']);
|
| 514 |
+
$_product->setKeywords($_productData['Keywords']);
|
| 515 |
+
|
| 516 |
+
try {
|
| 517 |
+
$_product->save();
|
| 518 |
+
echo "-- Updated --<br>";
|
| 519 |
+
}
|
| 520 |
+
catch (Exception $e) {
|
| 521 |
+
echo "--! update failed<br>";
|
| 522 |
+
return;
|
| 523 |
+
}
|
| 524 |
+
|
| 525 |
+
} else {
|
| 526 |
+
|
| 527 |
+
// Start Add Product Here
|
| 528 |
+
echo '-- importing ', $_productData['name'], " --productdata<br>";
|
| 529 |
+
|
| 530 |
+
$websiteids="";
|
| 531 |
+
foreach (Mage::app()->getWebsites() as $website) {
|
| 532 |
+
$websiteids[]=$website->getWebsiteId();
|
| 533 |
+
}
|
| 534 |
+
|
| 535 |
+
$storeids="";
|
| 536 |
+
$stores=Mage::getModel('core/store')->getCollection()->load()->getAllIds();
|
| 537 |
+
foreach($stores as $estoreid){
|
| 538 |
+
$storeids[]=$estoreid;
|
| 539 |
+
}
|
| 540 |
+
//print_r($websiteids);
|
| 541 |
+
//print_r($storeids);
|
| 542 |
+
//exit;
|
| 543 |
+
|
| 544 |
+
$product = new Mage_Catalog_Model_Product();
|
| 545 |
+
|
| 546 |
+
$product->setSku($gameId);
|
| 547 |
+
$product->setTypeId('simple');
|
| 548 |
+
$product->setPrice(0.00);
|
| 549 |
+
$product->setWeight(0.00);
|
| 550 |
+
$product->setAttributeSetId(4);
|
| 551 |
+
$product->setWebsiteIDs($websiteids);
|
| 552 |
+
$product->setStatus(2);
|
| 553 |
+
$product->setTaxClassId(0);
|
| 554 |
+
$product->setStockData(array(
|
| 555 |
+
'manage_stock'=>1,
|
| 556 |
+
'use_config_manage_stock'=>0,
|
| 557 |
+
'qty' => 0,
|
| 558 |
+
'is_in_stock'=>0
|
| 559 |
+
));
|
| 560 |
+
|
| 561 |
+
$product->setName($_productData['name']);
|
| 562 |
+
$product->setDescription($_productData['description']);
|
| 563 |
+
$product->setShortDescription($shortDescription);
|
| 564 |
+
|
| 565 |
+
$product->setGenre($genre_val);
|
| 566 |
+
if(count($_productData['Publisher'])>0){
|
| 567 |
+
$product->setPublishers($publisher_val);
|
| 568 |
+
}
|
| 569 |
+
if($age_val)
|
| 570 |
+
$_product->setAge($age_val);
|
| 571 |
+
|
| 572 |
+
$product->setGameId($gameId);
|
| 573 |
+
$product->setLastUpdated($_productData['LastUpdated']);
|
| 574 |
+
$product->setEan($_productData['EAN']);
|
| 575 |
+
$product->setPlatformId($_productData['PlatformId']);
|
| 576 |
+
$product->setPlatform($_productData['Platform']);
|
| 577 |
+
$product->setLogoUrl($_productData['LogoUrl']);
|
| 578 |
+
$product->setLocalizedTitle($_productData['LocalizedTitle']);
|
| 579 |
+
$product->setReleases($_productData['Releases']);
|
| 580 |
+
$product->setPegiRating($_productData['PegiRating']);
|
| 581 |
+
$product->setPegiRatingId($_productData['PegiRatingId']);
|
| 582 |
+
$product->setPublisher($_productData['Publisher']);
|
| 583 |
+
$product->setDeveloperId($_productData['DeveloperId']);
|
| 584 |
+
$product->setDeveloperName($_productData['DeveloperName']);
|
| 585 |
+
$product->setDeveloperHomepage($_productData['DeveloperHomepage']);
|
| 586 |
+
$product->setMainGame($_productData['MainGame']);
|
| 587 |
+
$product->setAlsoAvailableOn($_productData['AlsoAvailableOn']);
|
| 588 |
+
$product->setEditions($_productData['Editions']);
|
| 589 |
+
$product->setVideos($_productData['Videos']);
|
| 590 |
+
$product->setKeywords($_productData['Keywords']);
|
| 591 |
+
|
| 592 |
+
// Assign Packsthot Image as Product Images
|
| 593 |
+
foreach($_productData['Packshots'] as $type => $PackshotImage){
|
| 594 |
+
$importDir = Mage::getBaseDir('media') . DS . 'import'.DS;
|
| 595 |
+
$image_name = $gameId."-packshot"."-".$type.".jpg";
|
| 596 |
+
$packImageUrl = $importDir. DS .$image_name;
|
| 597 |
+
// Copy Image from totheGame server to local server
|
| 598 |
+
if(copy($PackshotImage, $packImageUrl)){
|
| 599 |
+
echo "-- upl. ", $PackshotImage, " to Local Server<br>";
|
| 600 |
+
// Add three image sizes to media gallery
|
| 601 |
+
$product->addImageToMediaGallery($packImageUrl, array('image','thumbnail','small_image'), false, false); // Assigning packshot image, thumb and small image to media gallery
|
| 602 |
+
break;
|
| 603 |
+
}
|
| 604 |
+
}
|
| 605 |
+
|
| 606 |
+
// Assign Screenshot Image as Product Images
|
| 607 |
+
foreach($_productData['Screenshots'] as $type => $screenshotImages){
|
| 608 |
+
$screenshotImage = $screenshotImages['UrlLarge'];
|
| 609 |
+
$importDir = Mage::getBaseDir('media') . DS . 'import'.DS;
|
| 610 |
+
$image_name = $gameId."-screenshot"."-".$type.".jpg";
|
| 611 |
+
$screenshotImageUrl = $importDir. DS .$image_name;
|
| 612 |
+
// Copy Image from totheGame server to local server
|
| 613 |
+
if(copy($screenshotImage, $screenshotImageUrl)){
|
| 614 |
+
echo "-- upl. ", $screenshotImage, " to Local Server<br>";
|
| 615 |
+
// Add three image sizes to media gallery
|
| 616 |
+
$product->addImageToMediaGallery($screenshotImageUrl, false, false, false); // Assigning screenshot image to media gallery
|
| 617 |
+
}
|
| 618 |
+
}
|
| 619 |
+
|
| 620 |
+
//print_r($product->getData()); exit;
|
| 621 |
+
|
| 622 |
+
try {
|
| 623 |
+
$product->save();
|
| 624 |
+
echo "-- Product success added<br>";
|
| 625 |
+
}
|
| 626 |
+
catch (Exception $e) {
|
| 627 |
+
echo "--! import failed<br>";
|
| 628 |
+
return;
|
| 629 |
+
}
|
| 630 |
+
}
|
| 631 |
+
|
| 632 |
+
/*$index_arr=array(1,4);
|
| 633 |
+
foreach($index_arr as $index){
|
| 634 |
+
$process = Mage::getModel('index/process')->load($index);
|
| 635 |
+
$process->reindexAll();
|
| 636 |
+
}*/
|
| 637 |
+
|
| 638 |
+
} catch (Exception $e) {
|
| 639 |
+
echo '--! exception: ', $e->getMessage(), "<br>";
|
| 640 |
+
}
|
| 641 |
+
|
| 642 |
+
$xml = null;
|
| 643 |
+
}
|
| 644 |
+
|
| 645 |
+
protected function _getElementValue(&$el, $nodeName) {
|
| 646 |
+
$ch = $el->getElementsByTagName($nodeName);
|
| 647 |
+
|
| 648 |
+
if ($ch->length == 0)
|
| 649 |
+
return '';
|
| 650 |
+
|
| 651 |
+
return $ch->item(0)->nodeValue;
|
| 652 |
+
}
|
| 653 |
+
|
| 654 |
+
/*
|
| 655 |
+
PHP Shutdown and calculate
|
| 656 |
+
*/
|
| 657 |
+
protected function _PhpShutdown() {
|
| 658 |
+
echo "<br>Import of ", $this->gameCount, ' items finished in ', (microtime(true)-$this->_startTime), 's; memory usage peak ', $this->_FormatBytes(memory_get_usage(true)), "<br>";
|
| 659 |
+
}
|
| 660 |
+
|
| 661 |
+
/*
|
| 662 |
+
Calculate Usages Memory
|
| 663 |
+
*/
|
| 664 |
+
protected function _FormatBytes($size){
|
| 665 |
+
$units = array(' B', ' KiB', ' MiB', ' GiB', ' TiB', ' PiB');
|
| 666 |
+
|
| 667 |
+
for ($i = 0; $size >= 1024 && $i < 6; $i++)
|
| 668 |
+
$size /= 1024;
|
| 669 |
+
|
| 670 |
+
return round($size, 2).$units[$i];
|
| 671 |
+
}
|
| 672 |
+
|
| 673 |
+
/* Validation Data */
|
| 674 |
+
protected function _ValidateData(&$data, $req, &$values, $escape = true) {
|
| 675 |
+
$ok = TRUE;
|
| 676 |
+
|
| 677 |
+
foreach ($req as $fieldName => $dataType) {
|
| 678 |
+
if (!isset($data[$fieldName])) {
|
| 679 |
+
$values[$fieldName] = '';
|
| 680 |
+
$data[$fieldName] = null;
|
| 681 |
+
$ok = FALSE;
|
| 682 |
+
}
|
| 683 |
+
|
| 684 |
+
switch ($dataType) {
|
| 685 |
+
case 'plain_text':
|
| 686 |
+
$values[$fieldName] = strip_tags(htmlspecialchars($data[$fieldName]));
|
| 687 |
+
|
| 688 |
+
if ($values[$fieldName] === '')
|
| 689 |
+
$ok = FALSE;
|
| 690 |
+
// handle character escapipng
|
| 691 |
+
if ($escape)
|
| 692 |
+
$values[$fieldName] = get_magic_quotes_gpc() ? $values[$fieldName] : addslashes($values[$fieldName]);
|
| 693 |
+
else
|
| 694 |
+
$values[$fieldName] = stripslashes($values[$fieldName]);
|
| 695 |
+
|
| 696 |
+
break;
|
| 697 |
+
|
| 698 |
+
case 'rich_text':
|
| 699 |
+
$values[$fieldName] = $data[$fieldName];
|
| 700 |
+
if ($values[$fieldName] === '')
|
| 701 |
+
$ok = FALSE;
|
| 702 |
+
// handle character escapipng
|
| 703 |
+
if ($escape)
|
| 704 |
+
$values[$fieldName] = get_magic_quotes_gpc() ? $values[$fieldName] : addslashes($values[$fieldName]);
|
| 705 |
+
else
|
| 706 |
+
$values[$fieldName] = stripslashes($values[$fieldName]);
|
| 707 |
+
|
| 708 |
+
break;
|
| 709 |
+
|
| 710 |
+
case 'integer':
|
| 711 |
+
if (!is_numeric($data[$fieldName])) {
|
| 712 |
+
$ok = FALSE;
|
| 713 |
+
$values[$fieldName] = '';
|
| 714 |
+
} else
|
| 715 |
+
$values[$fieldName] = (int)$data[$fieldName];
|
| 716 |
+
|
| 717 |
+
break;
|
| 718 |
+
|
| 719 |
+
case 'float':
|
| 720 |
+
if (!is_numeric($data[$fieldName])) {
|
| 721 |
+
$ok = FALSE;
|
| 722 |
+
$values[$fieldName] = '';
|
| 723 |
+
} else
|
| 724 |
+
$values[$fieldName] = (float)$data[$fieldName];
|
| 725 |
+
|
| 726 |
+
break;
|
| 727 |
+
|
| 728 |
+
case 'array':
|
| 729 |
+
if (!is_array($data[$fieldName])) {
|
| 730 |
+
$ok = FALSE;
|
| 731 |
+
$values[$fieldName] = array();
|
| 732 |
+
} else
|
| 733 |
+
$values[$fieldName] = $data[$fieldName];
|
| 734 |
+
|
| 735 |
+
break;
|
| 736 |
+
|
| 737 |
+
case 'date':
|
| 738 |
+
$values[$fieldName] = strip_tags($data[$fieldName]);
|
| 739 |
+
$values[$fieldName] = $this->_cncValidateDate($values[$fieldName], '.');
|
| 740 |
+
|
| 741 |
+
if (!$values[$fieldName]) {
|
| 742 |
+
$values[$fieldName] = '';
|
| 743 |
+
$ok = FALSE;
|
| 744 |
+
continue;
|
| 745 |
+
}
|
| 746 |
+
|
| 747 |
+
break;
|
| 748 |
+
}
|
| 749 |
+
}
|
| 750 |
+
return $ok;
|
| 751 |
+
}
|
| 752 |
+
|
| 753 |
+
/*
|
| 754 |
+
Add catalog drowdown attribute new option with check existing option value
|
| 755 |
+
*/
|
| 756 |
+
protected function _addAttributeValue($arg_attribute, $arg_value)
|
| 757 |
+
{
|
| 758 |
+
$attribute_model = Mage::getModel('eav/entity_attribute');
|
| 759 |
+
|
| 760 |
+
$attribute_code = $attribute_model->getIdByCode('catalog_product', $arg_attribute);
|
| 761 |
+
$attribute = $attribute_model->load($attribute_code);
|
| 762 |
+
|
| 763 |
+
if(!$this->_attributeValueExists($arg_attribute, $arg_value))
|
| 764 |
+
{
|
| 765 |
+
$value['option'] = array($arg_value,$arg_value);
|
| 766 |
+
$result = array('value' => $value);
|
| 767 |
+
$attribute->setData('option',$result);
|
| 768 |
+
$attribute->save();
|
| 769 |
+
}
|
| 770 |
+
|
| 771 |
+
$attribute_options_model= Mage::getModel('eav/entity_attribute_source_table') ;
|
| 772 |
+
$attribute_table = $attribute_options_model->setAttribute($attribute);
|
| 773 |
+
$options = $attribute_options_model->getAllOptions(false);
|
| 774 |
+
|
| 775 |
+
foreach($options as $option)
|
| 776 |
+
{
|
| 777 |
+
if ($option['label'] == $arg_value)
|
| 778 |
+
{
|
| 779 |
+
return $option['value'];
|
| 780 |
+
}
|
| 781 |
+
}
|
| 782 |
+
return false;
|
| 783 |
+
}
|
| 784 |
+
|
| 785 |
+
/*
|
| 786 |
+
Add check attribute existing option value
|
| 787 |
+
*/
|
| 788 |
+
protected function _attributeValueExists($arg_attribute, $arg_value)
|
| 789 |
+
{
|
| 790 |
+
$attribute_model = Mage::getModel('eav/entity_attribute');
|
| 791 |
+
$attribute_options_model= Mage::getModel('eav/entity_attribute_source_table') ;
|
| 792 |
+
|
| 793 |
+
$attribute_code = $attribute_model->getIdByCode('catalog_product', $arg_attribute);
|
| 794 |
+
$attribute = $attribute_model->load($attribute_code);
|
| 795 |
+
|
| 796 |
+
$attribute_table = $attribute_options_model->setAttribute($attribute);
|
| 797 |
+
$options = $attribute_options_model->getAllOptions(false);
|
| 798 |
+
|
| 799 |
+
foreach($options as $option)
|
| 800 |
+
{
|
| 801 |
+
if ($option['label'] == $arg_value)
|
| 802 |
+
{
|
| 803 |
+
return $option['value'];
|
| 804 |
+
}
|
| 805 |
+
}
|
| 806 |
+
|
| 807 |
+
return false;
|
| 808 |
+
}
|
| 809 |
+
|
| 810 |
+
}
|
app/code/local/Cybernetikz/ToTheGame/etc/adminhtml.xml
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<menu>
|
| 4 |
+
<catalog>
|
| 5 |
+
<children>
|
| 6 |
+
<tothegame translate="title" module="cybernetikz_tothegame">
|
| 7 |
+
<title>ToTheGame Feed Import</title>
|
| 8 |
+
<action>adminhtml/tothegame/gameimport</action>
|
| 9 |
+
<sort_order>25</sort_order>
|
| 10 |
+
</tothegame>
|
| 11 |
+
</children>
|
| 12 |
+
</catalog>
|
| 13 |
+
</menu>
|
| 14 |
+
|
| 15 |
+
<acl>
|
| 16 |
+
<resources>
|
| 17 |
+
<admin>
|
| 18 |
+
<children>
|
| 19 |
+
<catalog>
|
| 20 |
+
<children>
|
| 21 |
+
<tothegame translate="title" module="cybernetikz_tothegame">
|
| 22 |
+
<title>ToTheGame Feed Import</title>
|
| 23 |
+
</tothegame>
|
| 24 |
+
</children>
|
| 25 |
+
</catalog>
|
| 26 |
+
<system>
|
| 27 |
+
<children>
|
| 28 |
+
<config>
|
| 29 |
+
<children>
|
| 30 |
+
<tothegame translate="title" module="cybernetikz_tothegame">
|
| 31 |
+
<title>ToTheGame Settings</title>
|
| 32 |
+
</tothegame>
|
| 33 |
+
</children>
|
| 34 |
+
</config>
|
| 35 |
+
</children>
|
| 36 |
+
</system>
|
| 37 |
+
</children>
|
| 38 |
+
</admin>
|
| 39 |
+
</resources>
|
| 40 |
+
</acl>
|
| 41 |
+
</config>
|
app/code/local/Cybernetikz/ToTheGame/etc/config.xml
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<Cybernetikz_ToTheGame>
|
| 5 |
+
<version>0.1.0</version>
|
| 6 |
+
</Cybernetikz_ToTheGame>
|
| 7 |
+
</modules>
|
| 8 |
+
<global>
|
| 9 |
+
<helpers>
|
| 10 |
+
<cybernetikz_tothegame>
|
| 11 |
+
<class>Cybernetikz_ToTheGame_Helper</class>
|
| 12 |
+
</cybernetikz_tothegame>
|
| 13 |
+
</helpers>
|
| 14 |
+
<blocks>
|
| 15 |
+
<cybernetikz_tothegame>
|
| 16 |
+
<class>Cybernetikz_ToTheGame_Block</class>
|
| 17 |
+
</cybernetikz_tothegame>
|
| 18 |
+
</blocks>
|
| 19 |
+
<resources>
|
| 20 |
+
<tothegame_setup>
|
| 21 |
+
<setup>
|
| 22 |
+
<module>Cybernetikz_ToTheGame</module>
|
| 23 |
+
<class>Cybernetikz_ToTheGame_Model_Resource_Mysql4_Setup</class>
|
| 24 |
+
</setup>
|
| 25 |
+
<connection>
|
| 26 |
+
<use>core_setup</use>
|
| 27 |
+
</connection>
|
| 28 |
+
</tothegame_setup>
|
| 29 |
+
<tothegame_write>
|
| 30 |
+
<connection>
|
| 31 |
+
<use>core_write</use>
|
| 32 |
+
</connection>
|
| 33 |
+
</tothegame_write>
|
| 34 |
+
<tothegame_read>
|
| 35 |
+
<connection>
|
| 36 |
+
<use>core_read</use>
|
| 37 |
+
</connection>
|
| 38 |
+
</tothegame_read>
|
| 39 |
+
</resources>
|
| 40 |
+
</global>
|
| 41 |
+
<admin>
|
| 42 |
+
<routers>
|
| 43 |
+
<adminhtml>
|
| 44 |
+
<args>
|
| 45 |
+
<modules>
|
| 46 |
+
<Cybernetikz_ToTheGame before="Mage_Adminhtml">Cybernetikz_ToTheGame_Adminhtml</Cybernetikz_ToTheGame>
|
| 47 |
+
</modules>
|
| 48 |
+
</args>
|
| 49 |
+
</adminhtml>
|
| 50 |
+
</routers>
|
| 51 |
+
</admin>
|
| 52 |
+
<adminhtml>
|
| 53 |
+
<layout>
|
| 54 |
+
<updates>
|
| 55 |
+
<cybernetikz_tothegame>
|
| 56 |
+
<file>cybernetikz_tothegame.xml</file>
|
| 57 |
+
</cybernetikz_tothegame>
|
| 58 |
+
</updates>
|
| 59 |
+
</layout>
|
| 60 |
+
<acl>
|
| 61 |
+
<resources>
|
| 62 |
+
<all>
|
| 63 |
+
<title>Allow Everything</title>
|
| 64 |
+
</all>
|
| 65 |
+
<admin>
|
| 66 |
+
<children>
|
| 67 |
+
<system>
|
| 68 |
+
<children>
|
| 69 |
+
<config>
|
| 70 |
+
<children>
|
| 71 |
+
<tothegame translate="label" module="cybernetikz_tothegame">
|
| 72 |
+
<label>CyberNetikz - All</label>
|
| 73 |
+
<sort_order>10</sort_order>
|
| 74 |
+
</tothegame>
|
| 75 |
+
</children>
|
| 76 |
+
</config>
|
| 77 |
+
</children>
|
| 78 |
+
</system>
|
| 79 |
+
</children>
|
| 80 |
+
</admin>
|
| 81 |
+
</resources>
|
| 82 |
+
</acl>
|
| 83 |
+
</adminhtml>
|
| 84 |
+
|
| 85 |
+
<default>
|
| 86 |
+
<tothegame>
|
| 87 |
+
|
| 88 |
+
<setting>
|
| 89 |
+
<importcachettl>24</importcachettl>
|
| 90 |
+
</setting>
|
| 91 |
+
|
| 92 |
+
</tothegame>
|
| 93 |
+
</default>
|
| 94 |
+
|
| 95 |
+
</config>
|
app/code/local/Cybernetikz/ToTheGame/etc/system.xml
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<tabs>
|
| 4 |
+
<cybernetikz translate="label" module="cybernetikz_tothegame">
|
| 5 |
+
<label>Cybernetikz Extension</label>
|
| 6 |
+
<sort_order>200</sort_order>
|
| 7 |
+
<show_in_default>1</show_in_default>
|
| 8 |
+
<show_in_website>1</show_in_website>
|
| 9 |
+
<show_in_store>1</show_in_store>
|
| 10 |
+
</cybernetikz>
|
| 11 |
+
</tabs>
|
| 12 |
+
<sections>
|
| 13 |
+
<tothegame translate="label" module="cybernetikz_tothegame">
|
| 14 |
+
<label>ToTheGame Settings</label>
|
| 15 |
+
<tab>cybernetikz</tab>
|
| 16 |
+
<sort_order>10</sort_order>
|
| 17 |
+
<show_in_default>1</show_in_default>
|
| 18 |
+
<show_in_website>1</show_in_website>
|
| 19 |
+
<show_in_store>1</show_in_store>
|
| 20 |
+
|
| 21 |
+
<groups>
|
| 22 |
+
<hint>
|
| 23 |
+
<frontend_model>cybernetikz_tothegame/adminhtml_system_config_fieldset_hint</frontend_model>
|
| 24 |
+
<sort_order>0</sort_order>
|
| 25 |
+
<show_in_default>1</show_in_default>
|
| 26 |
+
<show_in_website>1</show_in_website>
|
| 27 |
+
<show_in_store>1</show_in_store>
|
| 28 |
+
</hint>
|
| 29 |
+
<setting translate="label" module="cybernetikz_tothegame">
|
| 30 |
+
<label>Settings</label>
|
| 31 |
+
<frontend_type>text</frontend_type>
|
| 32 |
+
<sort_order>10</sort_order>
|
| 33 |
+
<show_in_default>1</show_in_default>
|
| 34 |
+
<show_in_website>1</show_in_website>
|
| 35 |
+
<show_in_store>1</show_in_store>
|
| 36 |
+
<fields>
|
| 37 |
+
<subscriberid translate="label">
|
| 38 |
+
<label>Subscriber Id</label>
|
| 39 |
+
<frontend_type>text</frontend_type>
|
| 40 |
+
<comment>Please enter your ToTheGame Subscriber Id</comment>
|
| 41 |
+
<validate>required-entry</validate>
|
| 42 |
+
<sort_order>0</sort_order>
|
| 43 |
+
<show_in_default>1</show_in_default>
|
| 44 |
+
<show_in_website>1</show_in_website>
|
| 45 |
+
<show_in_store>1</show_in_store>
|
| 46 |
+
</subscriberid>
|
| 47 |
+
|
| 48 |
+
<importcachettl translate="label">
|
| 49 |
+
<label>Import Cache Time Limit</label>
|
| 50 |
+
<frontend_type>text</frontend_type>
|
| 51 |
+
<comment>Please enter feed file import cache time limit (hour)</comment>
|
| 52 |
+
<sort_order>20</sort_order>
|
| 53 |
+
<show_in_default>1</show_in_default>
|
| 54 |
+
<show_in_website>1</show_in_website>
|
| 55 |
+
<show_in_store>1</show_in_store>
|
| 56 |
+
</importcachettl>
|
| 57 |
+
</fields>
|
| 58 |
+
</setting>
|
| 59 |
+
</groups>
|
| 60 |
+
|
| 61 |
+
</tothegame>
|
| 62 |
+
</sections>
|
| 63 |
+
</config>
|
app/code/local/Cybernetikz/ToTheGame/sql/tothegame_setup/mysql4-install-0.1.0.php
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
/**
|
| 4 |
+
* @category CyberNetikz
|
| 5 |
+
* @package CyberNetikz_ToTheGame
|
| 6 |
+
* @author CyberNetikz
|
| 7 |
+
* @author_url http://www.cybernetikz.com/
|
| 8 |
+
*/
|
| 9 |
+
|
| 10 |
+
/** @var $installer Cybernetikz_ToTheGame_Model_Resource_Mysql4_Setup */
|
| 11 |
+
$installer = $this;
|
| 12 |
+
$installer->startSetup();
|
| 13 |
+
|
| 14 |
+
$select_attributes=array('genre','publishers','age','ean','platform_id','platform','release_date','publisher','editions','last_update','also_available_on','keywords','localized_title','main_game','company_logo_url','developer_homepage','developer_id','developer_name','pegi_rating','pegi_rating_id','in_game_language',/*'packshots','screenshots',*/'videos');
|
| 15 |
+
foreach($select_attributes as $attribute_label=>$attribute_code){
|
| 16 |
+
$type_model = Mage::getModel('eav/entity_type')->loadByCode('catalog_product');
|
| 17 |
+
$model = Mage::getModel('catalog/entity_attribute');
|
| 18 |
+
$model->loadByCode($type_model->getId(), $attribute_code);
|
| 19 |
+
if($model->getId()) {
|
| 20 |
+
$model->delete();
|
| 21 |
+
}
|
| 22 |
+
}
|
| 23 |
+
|
| 24 |
+
$attribute_set_group='Game Information';
|
| 25 |
+
|
| 26 |
+
$select_attributes=array('Genre'=>'genre','Publishers'=>'publishers');
|
| 27 |
+
$ap=0;
|
| 28 |
+
foreach($select_attributes as $attribute_label=>$attribute_code){
|
| 29 |
+
$installer->addAttribute(Mage_Catalog_Model_Product::ENTITY, $attribute_code, array(
|
| 30 |
+
'group' => $attribute_set_group,
|
| 31 |
+
'backend' => '',
|
| 32 |
+
'frontend' => '',
|
| 33 |
+
'label' => $attribute_label,
|
| 34 |
+
'type' => 'int',
|
| 35 |
+
'input' => 'select',
|
| 36 |
+
'source' => 'eav/entity_attribute_source_table',
|
| 37 |
+
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
|
| 38 |
+
'visible' => true,
|
| 39 |
+
'required' => false,
|
| 40 |
+
'user_defined' => true,
|
| 41 |
+
'default' => '',
|
| 42 |
+
'searchable' => false,
|
| 43 |
+
'filterable' => true,
|
| 44 |
+
'comparable' => false,
|
| 45 |
+
'configurable' => false,
|
| 46 |
+
'visible_on_front' => false,
|
| 47 |
+
'position' => $ap
|
| 48 |
+
));
|
| 49 |
+
$ap+=10;
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
+
$installer->addAttribute(Mage_Catalog_Model_Product::ENTITY, 'age', array(
|
| 53 |
+
'group' => $attribute_set_group,
|
| 54 |
+
'backend' => 'eav/entity_attribute_backend_array',
|
| 55 |
+
'frontend' => '',
|
| 56 |
+
'label' => 'Age',
|
| 57 |
+
'type' => 'varchar',
|
| 58 |
+
'input' => 'multiselect',
|
| 59 |
+
'source' => '',
|
| 60 |
+
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
|
| 61 |
+
'visible' => true,
|
| 62 |
+
'required' => false,
|
| 63 |
+
'user_defined' => true,
|
| 64 |
+
'default' => '',
|
| 65 |
+
'searchable' => false,
|
| 66 |
+
'filterable' => true,
|
| 67 |
+
'comparable' => false,
|
| 68 |
+
'configurable' => false,
|
| 69 |
+
'visible_on_front' => false,
|
| 70 |
+
'position' => 20
|
| 71 |
+
));
|
| 72 |
+
|
| 73 |
+
$installer->addAttribute(Mage_Catalog_Model_Product::ENTITY, 'game_id', array(
|
| 74 |
+
'group' => $attribute_set_group,
|
| 75 |
+
'backend' => '',
|
| 76 |
+
'frontend' => '',
|
| 77 |
+
'label' => 'Game Id',
|
| 78 |
+
'type' => 'varchar',
|
| 79 |
+
'input' => 'text',
|
| 80 |
+
'source' => '',
|
| 81 |
+
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
|
| 82 |
+
'visible' => true,
|
| 83 |
+
'required' => false,
|
| 84 |
+
'user_defined' => true,
|
| 85 |
+
'default' => '',
|
| 86 |
+
'unique' => true,
|
| 87 |
+
'searchable' => false,
|
| 88 |
+
'filterable' => false,
|
| 89 |
+
'comparable' => false,
|
| 90 |
+
'configurable' => false,
|
| 91 |
+
'visible_on_front' => false,
|
| 92 |
+
'position' => 30
|
| 93 |
+
));
|
| 94 |
+
|
| 95 |
+
$text_attributes = array('EAN'=>'ean','Platform Id'=>'platform_id','Platform'=>'platform','Release Date'=>'release_date','Publisher'=>'publisher','Editions'=>'editions','Last Update'=>'last_update','Also Available On'=>'also_available_on','Keywords'=>'keywords','Localized Title'=>'localized_title','Main Game'=>'main_game','Company Logo URL'=>'company_logo_url','Developer Homepage'=>'developer_homepage','Developer Id'=>'developer_id','Developer Name'=>'developer_name','Pegi Rating'=>'pegi_rating','Pegi Rating Id'=>'pegi_rating_id','In Game Language'=>'in_game_language');
|
| 96 |
+
$ap=40;
|
| 97 |
+
foreach($text_attributes as $attribute_label=>$attribute_code){
|
| 98 |
+
$installer->addAttribute(Mage_Catalog_Model_Product::ENTITY, $attribute_code, array(
|
| 99 |
+
'group' => $attribute_set_group,
|
| 100 |
+
'backend' => '',
|
| 101 |
+
'frontend' => '',
|
| 102 |
+
'label' => $attribute_label,
|
| 103 |
+
'type' => 'varchar',
|
| 104 |
+
'input' => 'text',
|
| 105 |
+
'source' => '',
|
| 106 |
+
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
|
| 107 |
+
'visible' => true,
|
| 108 |
+
'required' => false,
|
| 109 |
+
'user_defined' => true,
|
| 110 |
+
'default' => '',
|
| 111 |
+
'searchable' => false,
|
| 112 |
+
'filterable' => false,
|
| 113 |
+
'comparable' => false,
|
| 114 |
+
'configurable' => false,
|
| 115 |
+
'visible_on_front' => false,
|
| 116 |
+
'position' => $ap
|
| 117 |
+
));
|
| 118 |
+
$ap+=10;
|
| 119 |
+
}
|
| 120 |
+
|
| 121 |
+
$textarea_attributes = array(/*'Packshots'=>'packshots','Screenshots'=>'screenshots',*/'Videos'=>'videos');
|
| 122 |
+
foreach($textarea_attributes as $attribute_label=>$attribute_code){
|
| 123 |
+
$installer->addAttribute(Mage_Catalog_Model_Product::ENTITY, $attribute_code, array(
|
| 124 |
+
'group' => $attribute_set_group,
|
| 125 |
+
'backend' => '',
|
| 126 |
+
'frontend' => '',
|
| 127 |
+
'label' => $attribute_label,
|
| 128 |
+
'type' => 'text',
|
| 129 |
+
'input' => 'textarea',
|
| 130 |
+
'source' => '',
|
| 131 |
+
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
|
| 132 |
+
'visible' => true,
|
| 133 |
+
'required' => false,
|
| 134 |
+
'user_defined' => true,
|
| 135 |
+
'default' => '',
|
| 136 |
+
'searchable' => false,
|
| 137 |
+
'filterable' => false,
|
| 138 |
+
'comparable' => false,
|
| 139 |
+
'configurable' => false,
|
| 140 |
+
'visible_on_front' => false,
|
| 141 |
+
'position' => $ap
|
| 142 |
+
));
|
| 143 |
+
$ap+=10;
|
| 144 |
+
}
|
| 145 |
+
|
| 146 |
+
$installer->endSetup();
|
app/design/adminhtml/default/default/layout/cybernetikz_tothegame.xml
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<layout>
|
| 3 |
+
<adminhtml_tothegame_gameimport>
|
| 4 |
+
<reference name="content">
|
| 5 |
+
<block type="adminhtml/template" name="tothegame" template="cybernetikz/tothegame/gameimport.phtml"/>
|
| 6 |
+
</reference>
|
| 7 |
+
</adminhtml_tothegame_gameimport>
|
| 8 |
+
</layout>
|
app/design/adminhtml/default/default/template/cybernetikz/tothegame/gameimport.phtml
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<script type="text/javascript" src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);?>adminhtml/default/default/cybernetikz/tothegame/js/jquery.js"></script>
|
| 2 |
+
<script type="text/javascript">jQuery.noConflict();</script>
|
| 3 |
+
<div class="content-header">
|
| 4 |
+
<table cellspacing="0" class="grid-header">
|
| 5 |
+
<tr>
|
| 6 |
+
<td><h3><?php echo $this->__('Game Feed Import')?></h3></td>
|
| 7 |
+
</tr>
|
| 8 |
+
</table>
|
| 9 |
+
</div>
|
| 10 |
+
|
| 11 |
+
<div class="wrap">
|
| 12 |
+
<div style="width:80%; float:left; margin-right:1%;">
|
| 13 |
+
<h4><?php echo $this->__('Single Game Import')?></h4>
|
| 14 |
+
<form action="<?php echo Mage::helper("adminhtml")->getUrl("adminhtml/tothegame/singlegameimport");?>" method="get" target="sync_output_test" class="sync-form">
|
| 15 |
+
<p>
|
| 16 |
+
<label for="cnc_game_id">Game ID</label>
|
| 17 |
+
<input type="text" name="game_id[]" id="cnc_game_id" />
|
| 18 |
+
<button type="submit" class="scalable save">Run</button>
|
| 19 |
+
</p>
|
| 20 |
+
</form>
|
| 21 |
+
<p>
|
| 22 |
+
<small><?php echo $this->__('Only game with a given Game Id will be import. Please use comma(,) separator for muliple Game Ids.'); ?></small>
|
| 23 |
+
</p>
|
| 24 |
+
</div>
|
| 25 |
+
<div style="clear:both;"></div>
|
| 26 |
+
|
| 27 |
+
<h4>Report <img src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);?>adminhtml/default/default/cybernetikz/tothegame/images/indicator.gif" alt="Please wait…" title="Please wait…" class="work-indicator" style="display:none;" /></h4>
|
| 28 |
+
<iframe id="sync-output-test" name="sync_output_test" src="about:blank" frameborder="1" width="100%" height="500" style="border:1px solid #DADADA;"><?php echo $this->__('Your browser does not support floating frames (iframe HTML element). Please upgrade your browser and try again.'); ?></iframe>
|
| 29 |
+
</div>
|
| 30 |
+
<script type="text/javascript">
|
| 31 |
+
jQuery(function () {
|
| 32 |
+
jQuery('.sync-form').submit(function () {
|
| 33 |
+
jQuery('.work-indicator').show();
|
| 34 |
+
jQuery('#sync-output-test').load(function () {
|
| 35 |
+
jQuery('.work-indicator').hide();
|
| 36 |
+
});
|
| 37 |
+
});
|
| 38 |
+
});
|
| 39 |
+
</script>
|
app/design/adminhtml/default/default/template/cybernetikz/tothegame/system/config/fieldset/hint.phtml
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<div style="padding:10px; border:1px solid #cccccc; background-color:#eaf0ee;margin-bottom:10px;">
|
| 2 |
+
<div style="padding-left:76px;"><a href="http://www.cybernetikz.com" target="_blank"><img src="http://www.cybernetikz.com/images/cn-logo.jpg" alt="Cybernetikz" /></a></div>
|
| 3 |
+
<p style="font-family:Arial, Helvetica, sans-serif; font-size:13px; font-weight:normal;padding:0px; margin:0px; padding-top:5px;"><strong>ToTheGame Feeder by <a href="http://www.cybernetikz.com" target="_blank">CyberNetikz</a></strong></p>
|
| 4 |
+
<p style="font-family:Arial, Helvetica, sans-serif; font-size:13px; font-weight:normal;padding:0px; margin:0px; padding-top:5px;"><a href="mailto:support@cybernetikz.com">Email Us</a> for any Customization of the Extension or Feedback.</p>
|
| 5 |
+
<p style="font-family:Arial, Helvetica, sans-serif; font-size:13px; font-weight:normal;padding:0px; margin:0px; padding-top:5px;">Call: +1-347-261-2888 ( NY, USA ) | <a href="http://www.cybernetikz.com/website/web-development/magento/" target="_blank">Browse Our Magento Projects</a></p>
|
| 6 |
+
</div>
|
app/etc/modules/Cybernetikz_ToTheGame.xml
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<Cybernetikz_ToTheGame>
|
| 5 |
+
<active>true</active>
|
| 6 |
+
<codePool>local</codePool>
|
| 7 |
+
</Cybernetikz_ToTheGame>
|
| 8 |
+
</modules>
|
| 9 |
+
</config>
|
package.xml
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<package>
|
| 3 |
+
<name>Cybernetikz_ToTheGame</name>
|
| 4 |
+
<version>0.1.0</version>
|
| 5 |
+
<stability>stable</stability>
|
| 6 |
+
<license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License (OSL 3.0)</license>
|
| 7 |
+
<channel>community</channel>
|
| 8 |
+
<extends/>
|
| 9 |
+
<summary>Automatically import (add/update) product information from ToTheGame game feed for your store.</summary>
|
| 10 |
+
<description>- Allow You to Import Product from ToTheGame Feeder into Magento
|
| 11 |
+
- Allow You to Show All Products Info into Your Product Detail Page like Title, Descriptions, Platform, Boxshots, Screenshots, Videos, Genre, Publisher, Release Date, Developers etc</description>
|
| 12 |
+
<notes>- ToTheGame Feed Import Implement and Ready to Use</notes>
|
| 13 |
+
<authors><author><name>CyberNetikz</name><user>CyberNetikz</user><email>sales@cybernetikz.com</email></author></authors>
|
| 14 |
+
<date>2015-01-08</date>
|
| 15 |
+
<time>11:46:44</time>
|
| 16 |
+
<contents><target name="mageetc"><dir name="modules"><file name="Cybernetikz_ToTheGame.xml" hash="56a3597fb67967ea0407b087d251c4e3"/></dir></target><target name="magelocal"><dir name="Cybernetikz"><dir name="ToTheGame"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Fieldset"><file name="Hint.php" hash="595da4f66a0fe867d47c9cdd71015823"/></dir></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="f86910ee11b8e1330cb9ea157ddacf76"/></dir><dir name="Model"><dir name="Resource"><dir name="Mysql4"><file name="Setup.php" hash="a30938317dace0f4c48832dfb06773d0"/></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="ToTheGameController.php" hash="52ec51265f1b1a521d89105066461d6f"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="0667d87d1bcccac7d5f9f1cd3719432c"/><file name="config.xml" hash="9763bed945675a401751cb35d3eda237"/><file name="system.xml" hash="180d791b1f52a8bb78a901bb13499aed"/></dir><dir name="sql"><dir name="tothegame_setup"><file name="mysql4-install-0.1.0.php" hash="57ee1befe5d68afc4e7faa50487b8333"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="cybernetikz_tothegame.xml" hash="aa961d53d71288758b51cee8d3d155d3"/></dir><dir name="template"><dir name="cybernetikz"><dir name="tothegame"><file name="gameimport.phtml" hash="005fdd07c423b199f5a3661384fc8124"/><dir name="system"><dir name="config"><dir name="fieldset"><file name="hint.phtml" hash="77c083d7b58e29bd9f6a4b432a9d5ce1"/></dir></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="cybernetikz"><dir name="tothegame"><dir name="images"><file name="indicator.gif" hash="86b1ac6d1c485d54efa3a53643e91ceb"/></dir><dir name="js"><file name="jquery.js" hash="a9331828c517ac5d97f93b3cfdbcc9bc"/></dir></dir></dir></dir></dir></dir></target></contents>
|
| 17 |
+
<compatible/>
|
| 18 |
+
<dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
|
| 19 |
+
</package>
|
skin/adminhtml/default/default/cybernetikz/tothegame/images/indicator.gif
ADDED
|
Binary file
|
skin/adminhtml/default/default/cybernetikz/tothegame/js/jquery.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/*
|
| 2 |
+
* jQuery 1.2.6 - New Wave Javascript
|
| 3 |
+
*
|
| 4 |
+
* Copyright (c) 2008 John Resig (jquery.com)
|
| 5 |
+
* Dual licensed under the MIT (MIT-LICENSE.txt)
|
| 6 |
+
* and GPL (GPL-LICENSE.txt) licenses.
|
| 7 |
+
*
|
| 8 |
+
* $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $
|
| 9 |
+
* $Rev: 5685 $
|
| 10 |
+
*/
|
| 11 |
+
(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else
|
| 12 |
+
return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else
|
| 13 |
+
return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else
|
| 14 |
+
selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var option=options[i];if(option.selected){value=jQuery.browser.msie&&!option.attributes.value.specified?option.text:option.value;if(one)return value;values.push(value);}}return values;}else
|
| 15 |
+
return(this[0].value||"").replace(/\r/g,"");}return undefined;}if(value.constructor==Number)value+='';return this.each(function(){if(this.nodeType!=1)return;if(value.constructor==Array&&/radio|checkbox/.test(this.type))this.checked=(jQuery.inArray(this.value,value)>=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else
|
| 16 |
+
this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else
|
| 17 |
+
return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else
|
| 18 |
+
jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i<length;i++)if((options=arguments[i])!=null)for(var name in options){var src=target[name],copy=options[name];if(target===copy)continue;if(deep&©&&typeof copy=="object"&&!copy.nodeType)target[name]=jQuery.extend(deep,src||(copy.length!=null?[]:{}),copy);else if(copy!==undefined)target[name]=copy;}return target;};var expando="jQuery"+now(),uuid=0,windowData={},exclude=/z-?index|font-?weight|opacity|zoom|line-?height/i,defaultView=document.defaultView||{};jQuery.extend({noConflict:function(deep){window.$=_$;if(deep)window.jQuery=_jQuery;return jQuery;},isFunction:function(fn){return!!fn&&typeof fn!="string"&&!fn.nodeName&&fn.constructor!=Array&&/^[\s[]?function/.test(fn+"");},isXMLDoc:function(elem){return elem.documentElement&&!elem.body||elem.tagName&&elem.ownerDocument&&!elem.ownerDocument.body;},globalEval:function(data){data=jQuery.trim(data);if(data){var head=document.getElementsByTagName("head")[0]||document.documentElement,script=document.createElement("script");script.type="text/javascript";if(jQuery.browser.msie)script.text=data;else
|
| 19 |
+
script.appendChild(document.createTextNode(data));head.insertBefore(script,head.firstChild);head.removeChild(script);}},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();},cache:{},data:function(elem,name,data){elem=elem==window?windowData:elem;var id=elem[expando];if(!id)id=elem[expando]=++uuid;if(name&&!jQuery.cache[id])jQuery.cache[id]={};if(data!==undefined)jQuery.cache[id][name]=data;return name?jQuery.cache[id][name]:id;},removeData:function(elem,name){elem=elem==window?windowData:elem;var id=elem[expando];if(name){if(jQuery.cache[id]){delete jQuery.cache[id][name];name="";for(name in jQuery.cache[id])break;if(!name)jQuery.removeData(elem);}}else{try{delete elem[expando];}catch(e){if(elem.removeAttribute)elem.removeAttribute(expando);}delete jQuery.cache[id];}},each:function(object,callback,args){var name,i=0,length=object.length;if(args){if(length==undefined){for(name in object)if(callback.apply(object[name],args)===false)break;}else
|
| 20 |
+
for(;i<length;)if(callback.apply(object[i++],args)===false)break;}else{if(length==undefined){for(name in object)if(callback.call(object[name],name,object[name])===false)break;}else
|
| 21 |
+
for(var value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}}return object;},prop:function(elem,value,type,i,name){if(jQuery.isFunction(value))value=value.call(elem,i);return value&&value.constructor==Number&&type=="curCSS"&&!exclude.test(name)?value+"px":value;},className:{add:function(elem,classNames){jQuery.each((classNames||"").split(/\s+/),function(i,className){if(elem.nodeType==1&&!jQuery.className.has(elem.className,className))elem.className+=(elem.className?" ":"")+className;});},remove:function(elem,classNames){if(elem.nodeType==1)elem.className=classNames!=undefined?jQuery.grep(elem.className.split(/\s+/),function(className){return!jQuery.className.has(classNames,className);}).join(" "):"";},has:function(elem,className){return jQuery.inArray(className,(elem.className||elem).toString().split(/\s+/))>-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else
|
| 22 |
+
jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i<stack.length;i++)if(color(stack[i])){swap[i]=stack[i].style.display;stack[i].style.display="block";}ret=name=="display"&&swap[stack.length-1]!=null?"none":(computedStyle&&computedStyle.getPropertyValue(name))||"";for(i=0;i<swap.length;i++)if(swap[i]!=null)stack[i].style.display=swap[i];}if(name=="opacity"&&ret=="")ret="1";}else if(elem.currentStyle){var camelCase=name.replace(/\-(\w)/g,function(all,letter){return letter.toUpperCase();});ret=elem.currentStyle[name]||elem.currentStyle[camelCase];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var left=style.left,rsLeft=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;style.left=ret||0;ret=style.pixelLeft+"px";style.left=left;elem.runtimeStyle.left=rsLeft;}}return ret;},clean:function(elems,context){var ret=[];context=context||document;if(typeof context.createElement=='undefined')context=context.ownerDocument||context[0]&&context[0].ownerDocument||document;jQuery.each(elems,function(i,elem){if(!elem)return;if(elem.constructor==Number)elem+='';if(typeof elem=="string"){elem=elem.replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+"></"+tag+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!tags.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!tags.indexOf("<td")||!tags.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!tags.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||jQuery.browser.msie&&[1,"div<div>","</div>"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&tags.indexOf("<tbody")<0?div.childNodes:[];for(var j=tbody.length-1;j>=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else
|
| 23 |
+
ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&¬xml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&¬xml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&¬xml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else
|
| 24 |
+
while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i<length;i++)if(array[i]===elem)return i;return-1;},merge:function(first,second){var i=0,elem,pos=first.length;if(jQuery.browser.msie){while(elem=second[i++])if(elem.nodeType!=8)first[pos++]=elem;}else
|
| 25 |
+
while(elem=second[i++])first[pos++]=elem;return first;},unique:function(array){var ret=[],done={};try{for(var i=0,length=array.length;i<length;i++){var id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i]);}}}catch(e){ret=array;}return ret;},grep:function(elems,callback,inv){var ret=[];for(var i=0,length=elems.length;i<length;i++)if(!inv!=!callback(elems[i],i))ret.push(elems[i]);return ret;},map:function(elems,callback){var ret=[];for(var i=0,length=elems.length;i<length;i++){var value=callback(elems[i],i);if(value!=null)ret[ret.length]=value;}return ret.concat.apply([],ret);}});var userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)};var styleFloat=jQuery.browser.msie?"styleFloat":"cssFloat";jQuery.extend({boxModel:!jQuery.browser.msie||document.compatMode=="CSS1Compat",props:{"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing"}});jQuery.each({parent:function(elem){return elem.parentNode;},parents:function(elem){return jQuery.dir(elem,"parentNode");},next:function(elem){return jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return jQuery.dir(elem,"previousSibling");},siblings:function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},children:function(elem){return jQuery.sibling(elem.firstChild);},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(selector){var ret=jQuery.map(this,fn);if(selector&&typeof selector=="string")ret=jQuery.multiFilter(selector,ret);return this.pushStack(jQuery.unique(ret));};});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(){var args=arguments;return this.each(function(){for(var i=0,length=args.length;i<length;i++)jQuery(args[i])[original](this);});};});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if(this.nodeType==1)this.removeAttribute(name);},addClass:function(classNames){jQuery.className.add(this,classNames);},removeClass:function(classNames){jQuery.className.remove(this,classNames);},toggleClass:function(classNames){jQuery.className[jQuery.className.has(this,classNames)?"remove":"add"](this,classNames);},remove:function(selector){if(!selector||jQuery.filter(selector,[this]).r.length){jQuery("*",this).add(this).each(function(){jQuery.event.remove(this);jQuery.removeData(this);});if(this.parentNode)this.parentNode.removeChild(this);}},empty:function(){jQuery(">*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return i<m[3]-0;},gt:function(a,i,m){return i>m[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j<rl;j++){var n=m=="~"||m=="+"?ret[j].nextSibling:ret[j].firstChild;for(;n;n=n.nextSibling)if(n.nodeType==1){var id=jQuery.data(n);if(m=="~"&&merge[id])break;if(!nodeName||n.nodeName.toUpperCase()==nodeName){if(m=="~")merge[id]=true;r.push(n);}if(m=="+")break;}}ret=r;t=jQuery.trim(t.replace(re,""));foundToken=true;}}if(t&&!foundToken){if(!t.indexOf(",")){if(context==ret[0])ret.shift();done=jQuery.merge(done,ret);r=ret=[context];t=" "+t.substr(1,t.length);}else{var re2=quickID;var m=re2.exec(t);if(m){m=[0,m[2],m[3],m[1]];}else{re2=quickClass;m=re2.exec(t);}m[2]=m[2].replace(/\\/g,"");var elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var oid=elem.getElementById(m[2]);if((jQuery.browser.msie||jQuery.browser.opera)&&oid&&typeof oid.id=="string"&&oid.id!=m[2])oid=jQuery('[@id="'+m[2]+'"]',elem)[0];ret=r=oid&&(!m[3]||jQuery.nodeName(oid,m[3]))?[oid]:[];}else{for(var i=0;ret[i];i++){var tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")tag="param";r=jQuery.merge(r,ret[i].getElementsByTagName(tag));}if(m[1]==".")r=jQuery.classFilter(r,m[2]);if(m[1]=="#"){var tmp=[];for(var i=0;r[i];i++)if(r[i].getAttribute("id")==m[2]){tmp=[r[i]];break;}r=tmp;}ret=r;}t=t.replace(re2,"");}}if(t){var val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t);}}if(t)ret=[];if(ret&&context==ret[0])ret.shift();done=jQuery.merge(done,ret);return done;},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];for(var i=0;r[i];i++){var pass=(" "+r[i].className+" ").indexOf(m)>=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/href|src|selected/.test(m[2]))z=jQuery.attr(a,m[2])||'';if((type==""&&!!z||type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||type=="~=")&&z.indexOf(m[5])>=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i<rl;i++){var node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);if(!merge[id]){var c=1;for(var n=parentNode.firstChild;n;n=n.nextSibling)if(n.nodeType==1)n.nodeIndex=c++;merge[id]=true;}var add=false;if(first==0){if(node.nodeIndex==last)add=true;}else if((node.nodeIndex-last)%first==0&&(node.nodeIndex-last)/first>=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else
|
| 26 |
+
for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i<args.length)jQuery.event.proxy(fn,args[i++]);return this.click(jQuery.event.proxy(fn,function(event){this.lastToggle=(this.lastToggle||0)%i;event.preventDefault();return args[this.lastToggle++].apply(this,arguments)||false;}));},hover:function(fnOver,fnOut){return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)fn.call(document,jQuery);else
|
| 27 |
+
jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.call(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var i=0;i<document.styleSheets.length;i++)if(document.styleSheets[i].disabled){setTimeout(arguments.callee,0);return;}jQuery.ready();},false);if(jQuery.browser.safari){var numStyles;(function(){if(jQuery.isReady)return;if(document.readyState!="loaded"&&document.readyState!="complete"){setTimeout(arguments.callee,0);return;}if(numStyles===undefined)numStyles=jQuery("style, link[rel=stylesheet]").length;if(document.styleSheets.length!=numStyles){setTimeout(arguments.callee,0);return;}jQuery.ready();})();}jQuery.event.add(window,"load",jQuery.ready);}jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"+"submit,keydown,keypress,keyup,error").split(","),function(i,name){jQuery.fn[name]=function(fn){return fn?this.bind(name,fn):this.trigger(name);};});var withinElement=function(event,elem){var parent=event.relatedTarget;while(parent&&parent!=elem)try{parent=parent.parentNode;}catch(error){parent=elem;}return parent==elem;};jQuery(window).bind("unload",function(){jQuery("*").add(document).unbind();});jQuery.fn.extend({_load:jQuery.fn.load,load:function(url,params,callback){if(typeof url!='string')return this._load(url);var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else
|
| 28 |
+
xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else
|
| 29 |
+
jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else
|
| 30 |
+
for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else
|
| 31 |
+
s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else
|
| 32 |
+
e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++)if(!timers[i]())timers.splice(i--,1);if(!timers.length){clearInterval(jQuery.timerId);jQuery.timerId=null;}},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(0,this.cur());if(this.prop=="width"||this.prop=="height")this.elem.style[this.prop]="1px";jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var t=now();if(gotoEnd||t>this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})();
|
