Permalink
Browse files

2.0.0.0-dev41

* All-new look & feel of backend UI -- "Magento 2 backend" theme
  * This theme includes "Magento User Interface Library" -- a set of reusable CSS-classes, icons and fonts
* Theme editing features (in backend UI):
  * Ability to view static resources, such as CSS and JavaScript files, which are inherited by virtual themes from physical themes and application, and library
  * Ability to upload and edit custom CSS/JavaScript code assigned to a particular virtual theme
  * Ability to manage image and font assets for virtual themes
  * The uploaded or edited theme resources are used in page generation
  * Ability to rename virtual themes
  * Physical themes are read-only
* Visual design editor:
  * Ability to enter a "Design Mode" directly from the list of "My Customizations" in "Design Gallery"
  * Updated styling of theme selector and VDE toolbars
* Added functional limitations (managed through configuration files):
  * Ability to limit maximum number of store views in the system
  * Ability to limit maximum number of admin user records in the system
* Introduced mechanism of early discovery of memory leaks in integration tests:
  * Added ability to integration testing framework to detect usage of memory and estimate memory leaks using OS tools outside of PHP process
  * Also ability to set memory usage threshold which would deliberately trigger error, if integration tests reach it
* Refactoring in integration tests:
  * Broke down `Magento_Test_Bootstrap` into smaller testable classes
  * Minimized amount of logic in `bootstrap.php` of integration tests
  * Factored out memory utility functions from memory integration tests into a separate helper
  * Removed hard-coding of the default setting values from `Magento_Test_Bootstrap` in favor of requiring some crucial settings
  * Fixed integration tests dependency on `app/etc/local.xml`, changes in which were involved into the sandbox hash calculation `dev/tests/integration/tmp/sandbox-<db_vendor>-<hash>`
* Improvements in JavaScript widget "Suggest" (`pub/lib/mage/backend/suggest.js`):
  * Added ability to set callback for "item selection"
  * Added ability to provide a template in widget options
  * Implemented "multiple suggestions" ability directly in this widget and removed the "multisuggest" widget
* Converted several grids in backend from PHP implementation to declarations in layout
* Other various improvements:
  * Factored out logic of handling theme images from `Mage_Core_Model_Theme` into `Mage_Core_Model_Theme_Image`
  * Ability to filter file extensions in uploader component
  * Publication of resources linked in CSS-files will only log error instead of crashing page generation process
* Bug fixes:
  * Fixed several memory leaks in different places, related with dispatching controller actions multiple times in integration tests and with excessive reference to `Mage_Core_Model_App` object
  * Fixed integration test in `Mage_Install` module that verifies encryption key length
  * Fixed DHL shipping carrier declaration in config that caused inability to use it with shopping cart price rules
  * Fixed issues in generating of configurable product variations when the button "Generate" is invoked second time
  * Fixed an error that caused inability to create a theme in Windows environment in developer mode
  * Fixed various errors in JavaScript tests for visual design editor
  * Fixed broken "Edit" link on backend product management page
  • Loading branch information...
1 parent 6084435 commit 310ebe82c6e0ebd5ce8d91390a6f4bf63826fd6b @magento-team magento-team committed Feb 7, 2013
Showing 625 changed files with 36,303 additions and 8,608 deletions.
View
@@ -28,4 +28,6 @@ atlassian*
/pub/media/*
/pub/media/customer/*
/pub/media/downloadable/*
+/pub/media/theme/*
+/pub/media/theme/customization/*
/var/*
View
@@ -1,3 +1,47 @@
+2.0.0.0-dev41
+=============
+* All-new look & feel of backend UI -- "Magento 2 backend" theme
+ * This theme includes "Magento User Interface Library" -- a set of reusable CSS-classes, icons and fonts
+* Theme editing features (in backend UI):
+ * Ability to view static resources, such as CSS and JavaScript files, which are inherited by virtual themes from physical themes and application, and library
+ * Ability to upload and edit custom CSS/JavaScript code assigned to a particular virtual theme
+ * Ability to manage image and font assets for virtual themes
+ * The uploaded or edited theme resources are used in page generation
+ * Ability to rename virtual themes
+ * Physical themes are read-only
+* Visual design editor:
+ * Ability to enter a "Design Mode" directly from the list of "My Customizations" in "Design Gallery"
+ * Updated styling of theme selector and VDE toolbars
+* Added functional limitations (managed through configuration files):
+ * Ability to limit maximum number of store views in the system
+ * Ability to limit maximum number of admin user records in the system
+* Introduced mechanism of early discovery of memory leaks in integration tests:
+ * Added ability to integration testing framework to detect usage of memory and estimate memory leaks using OS tools outside of PHP process
+ * Also ability to set memory usage threshold which would deliberately trigger error, if integration tests reach it
+* Refactoring in integration tests:
+ * Broke down `Magento_Test_Bootstrap` into smaller testable classes
+ * Minimized amount of logic in `bootstrap.php` of integration tests
+ * Factored out memory utility functions from memory integration tests into a separate helper
+ * Removed hard-coding of the default setting values from `Magento_Test_Bootstrap` in favor of requiring some crucial settings
+ * Fixed integration tests dependency on `app/etc/local.xml`, changes in which were involved into the sandbox hash calculation `dev/tests/integration/tmp/sandbox-<db_vendor>-<hash>`
+* Improvements in JavaScript widget "Suggest" (`pub/lib/mage/backend/suggest.js`):
+ * Added ability to set callback for "item selection"
+ * Added ability to provide a template in widget options
+ * Implemented "multiple suggestions" ability directly in this widget and removed the "multisuggest" widget
+* Converted several grids in backend from PHP implementation to declarations in layout
+* Other various improvements:
+ * Factored out logic of handling theme images from `Mage_Core_Model_Theme` into `Mage_Core_Model_Theme_Image`
+ * Ability to filter file extensions in uploader component
+ * Publication of resources linked in CSS-files will only log error instead of crashing page generation process
+* Bug fixes:
+ * Fixed several memory leaks in different places, related with dispatching controller actions multiple times in integration tests and with excessive reference to `Mage_Core_Model_App` object
+ * Fixed integration test in `Mage_Install` module that verifies encryption key length
+ * Fixed DHL shipping carrier declaration in config that caused inability to use it with shopping cart price rules
+ * Fixed issues in generating of configurable product variations when the button "Generate" is invoked second time
+ * Fixed an error that caused inability to create a theme in Windows environment in developer mode
+ * Fixed various errors in JavaScript tests for visual design editor
+ * Fixed broken "Edit" link on backend product management page
+
2.0.0.0-dev40
=============
* Implemented ability to customize all the main directory paths for the application, i.e. locations of `var`, `etc`, `media` and other directories
View
@@ -175,7 +175,7 @@ public static function getVersionInfo()
'revision' => '0',
'patch' => '0',
'stability' => 'dev',
- 'number' => '40',
+ 'number' => '41',
);
}
@@ -61,9 +61,10 @@ protected function _prepareLayout()
if (!$this->getRequest()->getParam('popup')) {
$this->addChild('back_button', 'Mage_Adminhtml_Block_Widget_Button', array(
'label' => Mage::helper('Mage_Catalog_Helper_Data')->__('Back'),
+ 'title' => Mage::helper('Mage_Catalog_Helper_Data')->__('Back'),
'onclick' => 'setLocation(\''
. $this->getUrl('*/*/', array('store' => $this->getRequest()->getParam('store', 0))) . '\')',
- 'class' => 'back'
+ 'class' => 'action-back'
));
} else {
$this->addChild('back_button', 'Mage_Adminhtml_Block_Widget_Button', array(
@@ -62,7 +62,7 @@ protected function _prepareForm()
$fieldset = $form->addFieldset('group_fields' . $group->getId(), array(
'legend' => Mage::helper('Mage_Catalog_Helper_Data')->__($group->getAttributeGroupName()),
- 'class' => 'fieldset-wide'
+ 'collapsable' => true
));
$attributes = $this->getGroupAttributes();
@@ -59,8 +59,8 @@ protected function _beforeToHtml()
$this->setId('create_attribute_' . $this->getConfig()->getGroupId())
->setOnClick($this->getJsObjectName() . '.create();')
->setType('button')
- ->setClass('add')
- ->setLabel(Mage::helper('Mage_Adminhtml_Helper_Data')->__('Create New Attribute'));
+ ->setClass('action-add')
+ ->setLabel(Mage::helper('Mage_Adminhtml_Helper_Data')->__('Add Attribute'));
$this->getConfig()
->setUrl($this->getUrl(
@@ -154,7 +154,7 @@ public function getDeleteButtonHtml()
public function getTypeSelectHtml()
{
- $select = $this->getLayout()->createBlock('Mage_Core_Block_Html_Select')
+ $select = $this->getLayout()->createBlock('Mage_Adminhtml_Block_Html_Select')
->setData(array(
'id' => $this->getFieldId().'_{{id}}_type',
'class' => 'select select-product-option-type required-option-select'
@@ -167,7 +167,7 @@ public function getTypeSelectHtml()
public function getRequireSelectHtml()
{
- $select = $this->getLayout()->createBlock('Mage_Core_Block_Html_Select')
+ $select = $this->getLayout()->createBlock('Mage_Adminhtml_Block_Html_Select')
->setData(array(
'id' => $this->getFieldId().'_{{id}}_is_require',
'class' => 'select'
@@ -39,7 +39,7 @@ class Mage_Adminhtml_Block_Catalog_Product_Edit_Tab_Options_Type_Abstract extend
protected function _prepareLayout()
{
$this->setChild('option_price_type',
- $this->getLayout()->addBlock('Mage_Core_Block_Html_Select', '', $this->getNameInLayout())
+ $this->getLayout()->addBlock('Mage_Adminhtml_Block_Html_Select', '', $this->getNameInLayout())
->setData(array(
'id' => 'product_option_{{option_id}}_price_type',
'class' => 'select product-option-price-type'
@@ -32,7 +32,7 @@
* @author Magento Core Team <core@magentocommerce.com>
*/
class Mage_Adminhtml_Block_Catalog_Product_Frontend_Product_Watermark
- extends Mage_Core_Block_Template
+ extends Mage_Backend_Block_Abstract
implements Varien_Data_Form_Element_Renderer_Interface
{
const XML_PATH_IMAGE_TYPES = 'global/catalog/product/media/image_types';
@@ -112,22 +112,24 @@ public function getElementHtml()
$html = '<input id="' . $htmlId .'-upload" type="file" name="image" '
. 'data-url="' . $uploadUrl . '" style="display:none" />'
. '<input id="' . $htmlId . '" type="hidden" name="'. $this->getName() .'" />'
- . '<div id="' . $htmlId . '-container" data-main="' . $this->getEscapedValue() . '" '
+ . '<div id="' . $htmlId . '-container" class="images" data-main="' . $this->getEscapedValue() . '" '
. 'data-images="' . $this->_coreHelper->escapeHtml(
- $this->_coreHelper->jsonEncode($gallery ? $gallery->toArray() : array())
- ) . '">'
- . '<span id="' . $htmlId . '-upload-placeholder"></span>'
+ $this->_coreHelper->jsonEncode($gallery ? $gallery->toArray() : array())
+ ) . '">'
+ . '<div class="image image-placeholder" id="' . $htmlId . '-upload-placeholder"><p class="image-placeholder-text">' . $this->helper('Mage_Catalog_Helper_Data')->__('Click here or drag and drop to add images') . '</p></div>'
. '<script id="' . $htmlId . '-template" type="text/x-jquery-tmpl">'
- . '<span class="container">'
- . '<span class="main-sticker">' . $this->helper('Mage_Catalog_Helper_Data')->__('Main') . '</span>'
- . '<span class="close">&times;</span>'
- . '<img class="base-image-uploader" src="${url}" data-position="${position}" alt="${label}" />'
- . '<div class="drag-zone">'
- . '<button class="make-main" type="button">'
- . $this->helper('Mage_Catalog_Helper_Data')->__('Make Main')
- . '</button>'
- . '</div>'
- . '</span>'
+ . '<div class="image" data-image-label="' . $this->helper('Mage_Catalog_Helper_Data')->__('Main') . '">'
+ . '<img class="base-image-uploader" src="${url}" data-position="${position}" alt="${label}" />'
+ . '<div class="actions">'
+ . '<button class="action-delete" title="' . $this->helper('Mage_Catalog_Helper_Data')->__('Delete image') . '">'
+ . '<span>' . $this->helper('Mage_Catalog_Helper_Data')->__('Delete image') . '</span>'
+ . '</button>'
+ . '<button class="action-make-main" title="' . $this->helper('Mage_Catalog_Helper_Data')->__('Make Main') . '">'
+ . '<span>' . $this->helper('Mage_Catalog_Helper_Data')->__('Make Main') . '</span>'
+ . '</button>'
+ . '<div class="draggable-handle"></div>'
+ . '</div>'
+ . '</div>'
. '</script>'
. '</div>';
$html .= $this->_getJs();
@@ -131,7 +131,8 @@ protected function _getSelectorOptions()
'valueField' => '#' . $this->getHtmlId(),
'template' => '#' . $this->getHtmlId() . '-template',
'control' => 'jstree',
- 'className' => 'category-select'
+ 'className' => 'category-select',
+ 'multiselect' => true,
);
}
}
@@ -70,7 +70,10 @@ public function getElementHtml()
if (!$this->getForm()->getDataObject()->getTypeInstance()->hasWeight()) {
$this->_virtual->setChecked('checked');
}
- return parent::getElementHtml() . $this->_virtual->getElementHtml() . $this->_virtual->getLabelHtml();
+ return '<div class="fields-group-2"><div class="field"><div class="control">'
+ . parent::getElementHtml() . '</div></div><div class="field choice">'
+ . $this->_virtual->getElementHtml() . $this->_virtual->getLabelHtml()
+ . '</div></div>';
}
/**
@@ -31,7 +31,7 @@
* @package Mage_Adminhtml
* @author Magento Core Team <core@magentocommerce.com>
*/
-class Mage_Adminhtml_Block_Catalog_Product_Options_Ajax extends Mage_Core_Block_Template
+class Mage_Adminhtml_Block_Catalog_Product_Options_Ajax extends Mage_Backend_Block_Abstract
{
/**
* Return product custom options in JSON format
@@ -32,25 +32,24 @@
* @author Magento Core Team <core@magentocommerce.com>
*/
class Mage_Adminhtml_Block_Customer_Edit_Renderer_Newpass
- extends Mage_Core_Block_Template
+ extends Mage_Backend_Block_Abstract
implements Varien_Data_Form_Element_Renderer_Interface
{
public function render(Varien_Data_Form_Element_Abstract $element)
{
- $html = '<tr>';
- $html.= '<td class="label">'.$element->getLabelHtml().'</td>';
- $html.= '<td class="value">'.$element->getElementHtml().'</td>';
- $html.= '</tr>'."\n";
- $html.= '<tr>';
- $html.= '<td class="label"><label>&nbsp;</label></td>';
- $html.= '<td class="value">'.Mage::helper('Mage_Customer_Helper_Data')->__('or').'</td>';
- $html.= '</tr>'."\n";
- $html.= '<tr>';
- $html.= '<td class="label"><label>&nbsp;</label></td>';
- $html.= '<td class="value"><input type="checkbox" id="account-send-pass" name="'.$element->getName().'" value="auto" onclick="setElementDisable(\''.$element->getHtmlId().'\', this.checked)"/>&nbsp;';
- $html.= '<label for="account-send-pass">'.Mage::helper('Mage_Customer_Helper_Data')->__('Send auto-generated password').'</label></td>';
- $html.= '</tr>'."\n";
+ $html = '<div class="field field-'.$element->getHtmlId().'">';
+ $html.= $element->getLabelHtml();
+ $html.= '<div class="control">'.$element->getElementHtml();
+ $html.= '<div class="nested">';
+ $html.= '<div class="field choice">';
+ $html.= '<label for="account-send-pass" class="addbefore"><span>'.Mage::helper('Mage_Customer_Helper_Data')->__('or ').'</span></label>';
+ $html.= '<input type="checkbox" id="account-send-pass" name="'.$element->getName().'" value="auto" onclick="setElementDisable(\''.$element->getHtmlId().'\', this.checked)" />';
+ $html.= '<label class="label" for="account-send-pass"><span>'.Mage::helper('Mage_Customer_Helper_Data')->__(' Send auto-generated password').'</span></label>';
+ $html.= '</div>'."\n";
+ $html.= '</div>'."\n";
+ $html.= '</div>'."\n";
+ $html.= '</div>'."\n";
return $html;
}
@@ -30,7 +30,7 @@
* @author Magento Core Team <core@magentocommerce.com>
*/
class Mage_Adminhtml_Block_Customer_Edit_Renderer_Region
- extends Mage_Core_Block_Template
+ extends Mage_Backend_Block_Abstract
implements Varien_Data_Form_Element_Renderer_Interface
{
/**
@@ -50,10 +50,10 @@ public function render(Varien_Data_Form_Element_Abstract $element)
$regionId = $element->getForm()->getElement('region_id')->getValue();
- $html = '<tr>';
+ $html = '<div class="field field-state required">';
$element->setClass('input-text');
$element->setRequired(true);
- $html .= '<td class="label">' . $element->getLabelHtml() . '</td><td class="value">';
+ $html .= $element->getLabelHtml() . '<div class="control">';
$html .= $element->getElementHtml();
$selectName = str_replace('region', 'region_id', $element->getName());
@@ -69,7 +69,7 @@ public function render(Varien_Data_Form_Element_Abstract $element)
. '", "' . $selectId . '", ' . $this->helper('Mage_Directory_Helper_Data')->getRegionJson() . ');' . "\n";
$html .= '</script>' . "\n";
- $html .= '</td></tr>' . "\n";
+ $html .= '</div></div>' . "\n";
return $html;
}
@@ -47,7 +47,7 @@ public function initForm()
$fieldset->addField('subscription', 'checkbox',
array(
- 'label' => Mage::helper('Mage_Customer_Helper_Data')->__('Subscribed to Newsletter?'),
+ 'label' => Mage::helper('Mage_Customer_Helper_Data')->__('Subscribed to Newsletter'),
'name' => 'subscription'
)
);
@@ -0,0 +1,76 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @category Mage
+ * @package Mage_Adminhtml
+ * @copyright Copyright (c) 2013 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
+ */
+
+/**
+ * Adminhtml HTML select element block
+ *
+ * @category Mage
+ * @package Mage_Core
+ * @author Magento Core Team <core@magentocommerce.com>
+ */
+class Mage_Adminhtml_Block_Html_Date extends Mage_Core_Block_Html_Date
+{
+ /**
+ * @param Mage_Core_Controller_Request_Http $request
+ * @param Mage_Core_Model_Layout $layout
+ * @param Mage_Core_Model_Event_Manager $eventManager
+ * @param Mage_Backend_Model_Url $urlBuilder
+ * @param Mage_Core_Model_Translate $translator
+ * @param Mage_Core_Model_Cache $cache
+ * @param Mage_Core_Model_Design_Package $designPackage
+ * @param Mage_Core_Model_Session $session
+ * @param Mage_Core_Model_Store_Config $storeConfig
+ * @param Mage_Core_Controller_Varien_Front $frontController
+ * @param Mage_Core_Model_Factory_Helper $helperFactory
+ * @param Mage_Core_Model_Dir $dirs
+ * @param Mage_Core_Model_Logger $logger
+ * @param Magento_Filesystem $filesystem
+ * @param array $data
+ *
+ * @SuppressWarnings(PHPMD.ExcessiveParameterList)
+ */
+ public function __construct(
+ Mage_Core_Controller_Request_Http $request,
+ Mage_Core_Model_Layout $layout,
+ Mage_Core_Model_Event_Manager $eventManager,
+ Mage_Backend_Model_Url $urlBuilder,
+ Mage_Core_Model_Translate $translator,
+ Mage_Core_Model_Cache $cache,
+ Mage_Core_Model_Design_Package $designPackage,
+ Mage_Core_Model_Session $session,
+ Mage_Core_Model_Store_Config $storeConfig,
+ Mage_Core_Controller_Varien_Front $frontController,
+ Mage_Core_Model_Factory_Helper $helperFactory,
+ Mage_Core_Model_Dir $dirs,
+ Mage_Core_Model_Logger $logger,
+ Magento_Filesystem $filesystem,
+ array $data = array()
+ ) {
+ parent::__construct($request, $layout, $eventManager, $urlBuilder, $translator, $cache, $designPackage,
+ $session, $storeConfig, $frontController, $helperFactory, $dirs, $logger, $filesystem, $data
+ );
+ }
+}
Oops, something went wrong. Retry.

0 comments on commit 310ebe8

Please sign in to comment.