Optional fields for each category

mbfelda

No avatar

2004-11-10 07:52

Hi everyone,

I just installed the Quick Cart and it works perfect.

I have just one suggestion for the future releases or plugins.

It would be great to have several optionnal fields, to be defined in the admin section, for each category. Example : I want to sell tee-shirts on my site and don't have any fields (exept in the comments) for the size, the color...

Of course, I know that Quick Cart is not a database administrator but maybe it's not so hard to do.

dahan

No avatar

2005-04-14 22:43

Hello,

Copy and paste the following into the original js/checkForm.js


/**
* @version 0.0.6-bf1
* @require fix()
*/

var cfBorderColor = '#000000';

var sAllWarnings = '';
var oFirstWrong;
var bIsWarnings = false;
var bAllGood = true;

function checkText( obj, komunikat ) {

re = /s/gi;
checkT = obj.value.replace(re, "");

if( checkT == '' ) {
if( komunikat )
sAllWarnings += komunikat +'n';
if( obj.type != 'hidden' ){
obj.style.borderColor = 'red';
if( bIsWarnings == false )
oFirstWrong = obj;
}
bIsWarnings = true;
return false;
}
else if( obj.type != 'hidden' )
obj.style.borderColor = cfBorderColor;

return true;
} // end function checkText


function checkTel( obj ) {

poprawnyTelefon = /^[0-9() ]{7,}$/i;

if( obj.value.search( poprawnyTelefon ) == -1 ) {
sAllWarnings += cfLangTel +'n';
if( obj.type != 'hidden' ){
obj.style.borderColor = 'red';
if( bIsWarnings == false )
oFirstWrong = obj;
}
bIsWarnings = true;
return false;
}
else if( obj.type != 'hidden' )
obj.style.borderColor = cfBorderColor;
return true;
} // end function checkTel


function checkEmail( obj ) {

re = /s/gi;
check = obj.value.replace( re, "" );

poprawnyEmail = /^[a-z0-9]+([_\.-][a-z0-9]+)*@([a-z0-9_.-]+([.][a-z]{2,4}))+$/i;
if ( check.search( poprawnyEmail ) == -1 ) {
sAllWarnings += cfLangMail +'n';
if( obj.type != 'hidden' ){
obj.style.borderColor = 'red';
if( bIsWarnings == false )
oFirstWrong = obj;
}
bIsWarnings = true;
return false;
}
else if( obj.type != 'hidden' )
obj.style.borderColor = cfBorderColor;
return true;
} // end function checkEmail


function checkWww( obj ) {

re = /s/gi;
check = obj.value.replace( re, "" );
poprawnyUrl = /^[a-zd.\/:]{1,}.[a-z]{2,}$/i;

if( check.search( poprawnyUrl ) == -1 || check == 'http://' ) {
sAllWarnings += cfLangUrl +'n';
if( obj.type != 'hidden' ){
obj.style.borderColor = 'red';
if( bIsWarnings == false )
oFirstWrong = obj;
}
bIsWarnings = true;
return false;
}
else if( obj.type != 'hidden' )
obj.style.borderColor = cfBorderColor;
return true;
} // end function checkWww


function checkKod( obj ) {

poprawnyKod = /^[0-9]{2}-[0-9]{3}$/i;

if ( obj.value.search( poprawnyKod ) == -1 ) {
sAllWarnings += cfLangPostCode +'n';
if( obj.type != 'hidden' ){
obj.style.borderColor = 'red';
if( bIsWarnings == false )
oFirstWrong = obj;
}
bIsWarnings = true;
return false;
}
else if( obj.type != 'hidden' )
obj.style.borderColor = cfBorderColor;
return true;
} // end function checkKod


function checkNip( obj ) {

poprawnyNip1 = /^[0-9]{3}-[0-9]{3}-[0-9]{2}-[0-9]{2}$/i;
poprawnyNip2 = /^[0-9]{3}-[0-9]{2}-[0-9]{2}-[0-9]{3}$/i;
poprawnyNip3 = /^[a-zA-Z]{2}[ ]{1}/i;

if( obj.value.search( poprawnyNip1 ) == -1 && obj.value.search( poprawnyNip2 ) == -1 && obj.value.search( poprawnyNip3 ) ) {
sAllWarnings += cfLangNip +'n';
if( obj.type != 'hidden' ){
obj.style.borderColor = 'red';
if( bIsWarnings == false )
oFirstWrong = obj;
}
bIsWarnings = true;
return false;
}
else if( obj.type != 'hidden' )
obj.style.borderColor = cfBorderColor;
return true;
} // end function checkNip


function checkPesel( obj ) {

poprawnyPesel = /^[0-9]{11}$/i;

if( obj.value.search( poprawnyPesel ) == -1 ) {
sAllWarnings += cfLangPesel +'n';
if( obj.type != 'hidden' ){
obj.style.borderColor = 'red';
if( bIsWarnings == false )
oFirstWrong = obj;
}
bIsWarnings = true;
return false;
}
else if( obj.type != 'hidden' )
obj.style.borderColor = cfBorderColor;
return true;
} // end function checkPesel


function checkFloat( obj, komunikat ) {

poprawnyFloat = /^-?[0-9]{1,}[.]{1}[0-9]{1,}$/i;
poprawnyInt = /^-?[0-9]{1,}$/i;

if( obj.value.search( poprawnyFloat ) == -1 && obj.value.search( poprawnyInt ) == -1 ) {
if( komunikat)
sAllWarnings += komunikat +'n';
else
sAllWarnings += cfWrongValue +'n';
if( obj.type != 'hidden' ){
obj.style.borderColor = 'red';
if( bIsWarnings == false )
oFirstWrong = obj;
}
bIsWarnings = true;
return false;
}
else if( obj.type != 'hidden' )
obj.style.borderColor = cfBorderColor;
return true;
} // end function checkFloat


function checkInt( obj, komunikat ) {

poprawnyInt = /^-?[0-9]{1,}$/i;

if( obj.value.search( poprawnyInt ) == -1 ) {
if( komunikat )
sAllWarnings += komunikat +'n';
else
sAllWarnings += cfWrongValue +'n';
if( obj.type != 'hidden' ){
obj.style.borderColor = 'red';
if( bIsWarnings == false )
oFirstWrong = obj;
}
bIsWarnings = true;
return false;
}
else if( obj.type != 'hidden' )
obj.style.borderColor = cfBorderColor;
return true;
} // end function checkInt


function checkFloatValue( obj, minFloat, komunikat ) {

if( +obj.value <= +minFloat ) {
if( komunikat )
sAllWarnings += komunikat +'n';
else
sAllWarnings += cfToSmallValue +'n';
if( obj.type != 'hidden' ){
obj.style.borderColor = 'red';
if( bIsWarnings == false )
oFirstWrong = obj;
}
bIsWarnings = true;
return false;
}
else if( obj.type != 'hidden' )
obj.style.borderColor = cfBorderColor;
return true;
} // end function checkFloatValue

function checkIntValue( obj, minInt, znak, komunikat ) {
if( !minInt )
minInt = 0;
if( !znak )
znak = '==';

eval ( 'good = ( '+ +obj.value +' '+ znak +' '+ +minInt +' );' );

if( good == true ){
if( obj.type != 'hidden' )
obj.style.borderColor = cfBorderColor;
}
else {
if( komunikat )
sAllWarnings += komunikat +'n';
else
sAllWarnings += cfWrongValue +'n';
if( obj.type != 'hidden' ){
obj.style.borderColor = 'red';
if( bIsWarnings == false )
oFirstWrong = obj;
}
bIsWarnings = true;
return false;
}
return true;
} // end function checkIntValue

function checkDate( obj, format, separator ) {
if( !format )
format = "ymd";
if( !separator )
separator = "-";

var d = 2;
var m = 2;
var y = 4;

eval( 'var I = '+ format.charAt( 0 ) +';' );
eval( 'var II = '+ format.charAt( 1 ) +';' );
eval( 'var III = '+ format.charAt( 2 ) +';' );

eval( 'var er = /^[0-9]{'+ I +'}['+ separator +']{1}[0-9]{'+ II +'}['+ separator +']{1}[0-9]{'+ III +'}$/i;' );

if( obj.value.search( er ) == -1 ) {
sAllWarnings += cfWrongDate +'n';
if( obj.type != 'hidden' ){
obj.style.borderColor = 'red';
if( bIsWarnings == false )
oFirstWrong = obj;
}
bIsWarnings = true;
return false;
}
else if( obj.type != 'hidden' )
obj.style.borderColor = cfBorderColor;
return true;
} // end function checkDate


function checkTxt( obj, min, komunikat ) {
if( !min )
min = 6;

var re = /s/gi;
var check = obj.value.replace( re, "" );

if( check.length < min ) {
if( komunikat )
sAllWarnings += komunikat +'n';
else
sAllWarnings += cfTxtToShort +'n';
if( obj.type != 'hidden' ){
obj.style.borderColor = 'red';
if( bIsWarnings == false )
oFirstWrong = obj;
}
bIsWarnings = true;
return false;
}
else if( obj.type != 'hidden' )
obj.style.borderColor = cfBorderColor;
return true;
} // end function checkTxt


function checkCheck( obj, check, znak, komunikat, option ) {
if( znak == '=' )
znak = '==';

if( option == 'string' )
// dla danych typu string
eval ( 'good = ( "'+ obj.value +'" '+ znak +' "'+ check.value +'" );' );
else
// dla danych liczbowych
eval ( 'good = ( '+ +obj.value +' '+ znak +' '+ +check.value +' );' );



if( good == true ) {
if( obj.type != 'hidden' )
obj.style.borderColor = cfBorderColor;
}
else{
if( komunikat )
sAllWarnings += komunikat +'n';
else
sAllWarnings += cfWrongValue +'n';
if( obj.type != 'hidden' ){
obj.style.borderColor = 'red';
if( bIsWarnings == false )
oFirstWrong = obj;
}
bIsWarnings = true;
return false;
}
return true;
} // end function checkTxt

function compareDates( obj, check, znak, komunikat ) {

return checkCheck( obj, check, znak, komunikat, 'string' );

} // end function compareDates


function checkCheckbox( inputName, formName, min, komunikat ) {
// sprawdza czy zostala zaznaczona wymagana ilosc pol
var formularz = document.getElementById( formName );
var inputy = formularz.getElementsByTagName( 'input' );
var n = 0;

for( var lp in inputy ) {
if( inputy[lp].type == 'checkbox' && inputy[lp].name.search( inputName ) != -1 ) {
if( inputy[lp].checked )
n++;
}
}

if ( n < +min ) {
if( komunikat )
sAllWarnings += komunikat +'n';
else
sAllWarnings += cfMin + " " + min + " " + cfFieldsChecked +'n';

for( var lp in inputy ) {
if( inputy[lp].type == 'checkbox' && inputy[lp].name.search( inputName ) != -1 )
inputy[lp].style.borderColor = 'red';
}

bIsWarnings = true;
return false;
}
else{
for( var lp in inputy ) {
if( inputy[lp].type == 'checkbox' && inputy[lp].name.search( inputName ) != -1 )
inputy[lp].style.borderColor = cfBorderColor;
}
}

return true;
} // end function checkCheckbox

function checkRegexp( obj, sRegexp, sFlags, komunikat ) {

oRegexp = new RegExp( sRegexp );

if ( obj.value.search( oRegexp ) == -1 ) {
if( komunikat )
sAllWarnings += komunikat +'n';
if( obj.type != 'hidden' ){
obj.style.borderColor = 'red';
if( bIsWarnings == false )
oFirstWrong = obj;
}
bIsWarnings = true;
return false;
}
else if( obj.type != 'hidden' )
obj.style.borderColor = cfBorderColor;

return true;
} // end function checkRegexp


function checkExt( obj, sExtensions, komunikat ){

var aFileExt = obj.value.split( "." );
var sFileExt = aFileExt[aFileExt.length - 1];

var aGoodExt = sExtensions.split( "|" );
var iGoodCount = aGoodExt.length;

var bCheckExt = false;
for( var i = 0; i < iGoodCount; i++ ){
if( sFileExt == aGoodExt[i] ){
bCheckExt = true;
break;
}
} // end for

if( bCheckExt != true ) {
if( komunikat )
sAllWarnings += komunikat +'n';
else
sAllWarnings += cfWrongExt +'n';
if( obj.type != 'hidden' ){
obj.style.borderColor = 'red';
if( bIsWarnings == false )
oFirstWrong = obj;
}
bIsWarnings = true;
return false;
}
else if( obj.type != 'hidden' )
obj.style.borderColor = cfBorderColor;
return true;
} // end function checkExt

function kropka( pole ){

re = /,/gi;
zKropka = pole.value.replace(re, ".");

return zKropka;
} // end function kropka

function checkForm( form, tablica ) {

sAllWarnings = '';
bIsWarnings = false;
bAllGood = true;
oFirstWrong = '';

for( i in tablica ) {

if( !tablica[i][1] || tablica[i][1] == 'simple' ) {
bAllGood = checkText( form[tablica[i][0]], tablica[i][2] );
}
else if( ( tablica[i][1] == 'tel' ) && ( ( tablica[i][2] == 'false' && form[tablica[i][0]].value ) || !tablica[i][2] ) ) {
bAllGood = checkTel( form[tablica[i][0]] );
}
else if( ( tablica[i][1] == 'email' ) && ( ( tablica[i][2] == 'false' && form[tablica[i][0]].value ) || !tablica[i][2] ) ) {
bAllGood = checkEmail( form[tablica[i][0]] );
}
else if( ( tablica[i][1] == 'www' ) && ( ( tablica[i][2] == 'false' && form[tablica[i][0]].value ) || !tablica[i][2] ) ) {
bAllGood = checkWww( form[tablica[i][0]] );
}
else if( ( tablica[i][1] == 'kod' ) && ( ( tablica[i][2] == 'false' && form[tablica[i][0]].value ) || !tablica[i][2] ) ) {
bAllGood = checkKod( form[tablica[i][0]] );
}
else if( ( tablica[i][1] == 'nip' ) && ( ( tablica[i][2] == 'false' && form[tablica[i][0]].value ) || !tablica[i][2] ) ) {
bAllGood = checkNip( form[tablica[i][0]] );
}
else if( ( tablica[i][1] == 'pesel' ) && ( ( tablica[i][2] == 'false' && form[tablica[i][0]].value ) || !tablica[i][2] ) ) {
bAllGood = checkPesel( form[tablica[i][0]] );
}
else if( ( tablica[i][1] == 'float' ) && ( ( tablica[i][3] == 'false' && form[tablica[i][0]].value ) || !tablica[i][3] ) ) {
form[tablica[i][0]].value = kropka( form[tablica[i][0]] );
bAllGood = checkFloat( form[tablica[i][0]] );
if( bAllGood ){
form[tablica[i][0]].value = fix( form[tablica[i][0]].value );
if( tablica[i][2] != '' )
bAllGood = checkFloatValue( form[tablica[i][0]], tablica[i][2] );
}
}
else if( tablica[i][1] == 'checkbox' ) {
bAllGood = checkCheckbox( tablica[i][0], tablica[i][3], tablica[i][2], tablica[i][4] );
}
else if( tablica[i][1] == 'date' && ( ( tablica[i][2] == 'false' && form[tablica[i][0]].value) || !tablica[i][2] ) ) { // data
bAllGood = checkDate( form[tablica[i][0]], tablica[i][3], tablica[i][4] );
}
else if( ( tablica[i][1] == 'txt' ) && ( ( tablica[i][4] == 'false' && form[tablica[i][0]].value ) || !tablica[i][4] ) ) { // opis
bAllGood = checkTxt( form[tablica[i][0]], tablica[i][2], tablica[i][3] );
}
else if( ( tablica[i][1] == 'check' ) && ( ( tablica[i][4] == 'false' && ( form[tablica[i][0][0]].value && form[tablica[i][0][1]].value ) ) || !tablica[i][4] ) ) { // sprawdzanie rownosci itp
bAllGood = checkCheck( form[tablica[i][0][0]], form[tablica[i][0][1]], tablica[i][2], tablica[i][3] );
}
else if( ( tablica[i][1] == 'compareDates' ) && ( ( tablica[i][4] == 'false' && ( form[tablica[i][0][0]].value && form[tablica[i][0][1]].value ) ) || !tablica[i][4] ) ) {
bAllGood = compareDates( form[tablica[i][0][0]], form[tablica[i][0][1]], tablica[i][2], tablica[i][3] );
}
else if( ( tablica[i][1] == 'int' ) && ( ( tablica[i][5] == 'false' && form[tablica[i][0]].value ) || !tablica[i][5] ) ) { // int - np. ilosc
bAllGood = checkInt( form[tablica[i][0]], tablica[i][3] );
if( tablica[i][2] && bAllGood ) {
if( tablica[i][4] ) {
bAllGood = checkIntValue( form[tablica[i][0]], tablica[i][2], tablica[i][4], tablica[i][3] );
}
else
bAllGood = checkFloatValue( form[tablica[i][0]], tablica[i][2], tablica[i][3] );
}
}
else if( ( tablica[i][1] == 'regexp' ) && ( ( tablica[i][5] == 'false' && ( form[tablica[i][0]].value ) ) || !tablica[i][5] ) ) {
bAllGood = checkRegexp( form[tablica[i][0]], tablica[i][2], tablica[i][3], tablica[i][4] );
}
else if( ( tablica[i][1] == 'extension' ) && ( ( tablica[i][4] == 'false' && ( form[tablica[i][0]].value ) ) || !tablica[i][4] ) ) {
bAllGood = checkExt( form[tablica[i][0]], tablica[i][2], tablica[i][3] );
}

} // end for

if( bIsWarnings == true ) {
sAllWarnings = cfLangNoWord + 'n' + sAllWarnings;
alert ( sAllWarnings );
if( oFirstWrong )
oFirstWrong.focus();
return false;
}
return true;
} // end function checkForm



Edit the pop-up in your language.

Test site at: <a href="http://www.ms-vastgoed.nl/index.php" target="_blank">http://www.ms-vastgoed.nl/index.php</a>

Take care.

dahan

No avatar

2005-04-14 22:51

Sorry wrong topic! ;-)

rafael dahan

LeoGetz

Avatar: LeoGetz

2005-09-03 23:32

Does anyone have a solution to mbfelda problem?
I want to do the same thing with my quickcart. On
my site I have underwear and I want to do so the
customers can choose color and size of the product.

robbo

No avatar

2005-09-04 03:21

Try Wizzud's ProductAttributes plugin.

http://www.wizzud.com/index.php?option=com_remository&Itemid=27&func=s electcat&cat=1

LeoGetz

Avatar: LeoGetz

2005-09-12 06:50

Did not find anything there, so what should I do? Does anyone have a solution?

wizzud

No avatar

2005-09-12 10:40

productAttributes plugin ...

Back to top
about us | contact