Extensiones: fixtureHelper y multimodelform

git-svn-id: https://192.168.0.254/svn/Proyectos.Incam_IntranetNueva/trunk@15 77cfc57b-8ef4-1849-9df6-4a38aa5da120
This commit is contained in:
David Arranz 2012-02-22 16:38:09 +00:00
parent d1a6a3d30b
commit 3713ff3c51
5 changed files with 1423 additions and 0 deletions

View File

@ -0,0 +1,60 @@
<?php
/**
* FixtureHelper is a command application lets you work with your fixtures outside
* testing. Currently what it does is just helping you to load you fixtures from your
* fixture files to your database, without the need to invoke PHPUnit.
*
* @author Sum-Wai Low
* @link https://github.com/sumwai/fixtureHelper
* @copyright Copyright &copy; 2010 Sum-Wai Low
*/
class FixtureHelperCommand extends CConsoleCommand {
private $fixture;
function getHelp() {
return <<<EOD
USAGE
fixture [load]
DESCRIPTION
This command lets you work with your fixtures outside testing
PARAMETERS
* load: Load fixtures into the database
* --alias: The alias to the directory that contains "models" and "tests"
folders. Please note that folder "models" should contain the Model class of
the fixtures to be loaded. Defaults to "application". Optional for "load".
* --tables: Name of the tables to be loaded with your defined fixtures. Name
values are comma separated. Required for "load".
EXAMPLES
yiic fixture load --alias=application.modules.mymodule --tables=fruit,transport,country
EOD;
}
/**
* Loads fixtures into the database tables from fixtures.
* @param string $alias alias to the path that contains both models and tests folders
* @param string $tables comma separated value of table names that should be loaded with fixtures
*/
function actionLoad($tables, $alias='application'){
Yii::import($alias.'.models.*');
$this->fixture = Yii::app()->getComponent('fixture');
$this->fixture->basePath = Yii::getPathOfAlias($alias.'.tests.fixtures');
$this->fixture->init();
$tables = explode(',', $tables);
foreach ($tables as $table) {
try {
$this->fixture->resetTable($table);
$this->fixture->loadFixture($table);
} catch (Exception $e) {
echo "ERROR: There is a problem working with the table $table. ".
"Is it spelled correctly or exist?\n\n";
}
}
echo "Done.\n\n";
}
}

View File

@ -0,0 +1,45 @@
FixtureHelper for Yii Framework
===============================
FixtureHelper is a command application lets you work with your fixtures outside
testing. Currently what it does is just helping you to load you fixtures from your
fixture files to your database, without the need to invoke PHPUnit.
INSTALL
-------
Copy FixtureHelperCommand.php and place it under `protected/extensions/fixtureHelper/`
Edit `protected/config/console.php`, add the following to the config array under
first dimension:
'commandMap' => array(
'fixture' => array(
'class'=>'application.extensions.fixtureHelper.FixtureHelperCommand',
),
),
Configure your database by setting up your db under `components`.
Add the following inside `components`.
'fixture'=>array(
'class'=>'system.test.CDbFixtureManager',
),
USAGE
------
fixture load [--alias=folderalias] --table=tablename1[,tablename2[,...]]
PARAMETERS
-----------
* load: Load fixtures into the database
* --alias: The alias to the directory that contains "models" and "tests"
folders. Please note that folder "models" should contain the Model class of
the fixtures to be loaded. Defaults to "application". Optional for "load".
* --tables: Name of the tables to be loaded with your defined fixtures. Name
values are comma separated. Required for "load".
EXAMPLES
--------
yiic fixture load --alias=application.modules.mymodule --tables=fruit,transport,country

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,129 @@
/**
* jquery.relcopy.yii.1.0.js
* Version for Yii extension 'jqrelcopy' and 'multimodelform'
* Added: beforeClone,afterClone,beforeNewId,afterNewId
* @link http://www.yiiframework.com/extension/jqrelcopy
* @link http://www.yiiframework.com/extension/multimodelform
* @author: J. Blocher
* -----------------------------------------------------------------
* jQuery-Plugin "relCopy"
*
* @version: 1.1.0, 25.02.2010
*
* @author: Andres Vidal
* code@andresvidal.com
* http://www.andresvidal.com
*
* Instructions: Call $(selector).relCopy(options) on an element with a jQuery type selector
* defined in the attribute "rel" tag. This defines the DOM element to copy.
* @example: $('a.copy').relCopy({limit: 5}); // <a href="example.com" class="copy" rel=".phone">Copy Phone</a>
*
* @param: string excludeSelector - A jQuery selector used to exclude an element and its children
* @param: integer limit - The number of allowed copies. Default: 0 is unlimited
* @param: string append - HTML to attach at the end of each copy. Default: remove link
* @param: string copyClass - A class to attach to each copy
* @param: boolean clearInputs - Option to clear each copies text input fields or textarea
*
*/
(function($) {
$.fn.relCopy = function(options) {
var settings = jQuery.extend({
excludeSelector: ".exclude",
emptySelector: ".empty",
copyClass: "copy",
append: '',
clearInputs: true,
limit: 0, // 0 = unlimited
beforeClone: null,
afterClone: null,
beforeNewId: null,
afterNewId: null
}, options);
settings.limit = parseInt(settings.limit);
// loop each element
this.each(function() {
// set click action
$(this).click(function(){
var rel = $(this).attr('rel'); // rel in jquery selector format
var counter = $(rel).length;
// stop limit
if (settings.limit != 0 && counter >= settings.limit){
return false;
};
var funcBeforeClone = function(){eval(settings.beforeClone);};
var funcAfterClone = function(){eval(settings.afterClone);};
var funcBeforeNewId = function(){eval(settings.beforeNewId);};
var funcAfterNewId = function(){eval(settings.afterNewId);};
var master = $(rel+":first");
funcBeforeClone.call(master);
var parent = $(master).parent();
var clone = $(master).clone(true).addClass(settings.copyClass+counter).append(settings.append);
funcAfterClone.call(clone);
//Remove Elements with excludeSelector
if (settings.excludeSelector){
$(clone).find(settings.excludeSelector).remove();
};
//Empty Elements with emptySelector
if (settings.emptySelector){
$(clone).find(settings.emptySelector).empty();
};
// Increment Clone IDs
if ( $(clone).attr('id') ){
var newid = $(clone).attr('id') + (counter +1);
funcBeforeNewId.call(clone);
$(clone).attr('id', newid);
funcAfterNewId.call(clone);
};
// Increment Clone Children IDs
$(clone).find('[id]').each(function(){
var newid = $(this).attr('id') + (counter +1);
funcBeforeNewId.call($(this));
$(this).attr('id', newid);
funcAfterNewId.call($(this));
});
//Clear Inputs/Textarea
if (settings.clearInputs){
$(clone).find(':input').each(function(){
var type = $(this).attr('type');
switch(type)
{
case "button":
break;
case "reset":
break;
case "submit":
break;
case "checkbox":
$(this).attr('checked', '');
break;
default:
$(this).val("");
}
});
};
$(parent).find(rel+':last').after(clone);
return false;
}); // end click action
}); //end each loop
return this; // return to jQuery
};
})(jQuery);

View File

@ -0,0 +1,28 @@
Copyright © 2011 by myticket it-solutions gmbh (http://www.myticket.at)
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of myticket it-solutions gmbh nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.