agregar link en loginform

19 views
Skip to first unread message

Jose Puertas

unread,
Mar 3, 2016, 5:26:44 AM3/3/16
to ZnetDK
Hola Pascal, estoy intentando insertar un link que me lleve a mi vista Registro.php ubicada en app/view, modificando el archivo logindialog.js en el siguiente punto:

 _createLoginForm: function () {
            /* Construction of the login form content */
            this.element.find('.pui-dialog-title').text(this.labels.title);

            var formEntryTag = '<div class="zdk-form-entry"/>';
            $('<label>' + this.labels.loginFieldLabel + '</label>').appendTo(this.loginForm);
            this.loginField = $('<input name="login_name" maxlength="50" type="text" autocomplete="off" value="" required data-errmess-required="' + this.labels.fieldMandatory + '">').appendTo(this.loginForm);
            
            this.passwordLabel = $('<label>' + this.labels.passwordFieldLabel + '</label>').appendTo(this.loginForm);
            this.passwordField = $('<input name="password" maxlength="20" type="password" autocomplete="off" value="" required data-errmess-required="' + this.labels.fieldMandatory + '">').appendTo(this.loginForm);
            
            if (this.labels.selectAccess) {
                this.formEntryAccess = $(formEntryTag).appendTo(this.loginForm);
                $('<label class="required">' + this.labels.accessLabel + '</label>').appendTo(this.formEntryAccess);
                var radioButtonGroup = $('<div class="zdk-radiobuttongroup" data-name="access"/>').appendTo(this.formEntryAccess);
                var publicRadioButton = $('<input type="radio" id="public-access" value="public">').appendTo(radioButtonGroup);
                radioButtonGroup.append('<label for="public-access">' + this.labels.publicAccessLabel + '</label>');
                radioButtonGroup.append('<br>');
                var privateRadioButton = $('<input type="radio" id="private-access" value="private">').appendTo(radioButtonGroup);
                radioButtonGroup.append('<label for="private-access">' + this.labels.privateAccessLabel + '</label>');

                if (this.labels.defaultAccess === 'public') {
                    publicRadioButton.prop('checked', true);
                } else if (this.labels.defaultAccess === 'private') {
                    privateRadioButton.prop('checked', true);
                }
            }

            this.formEntryNewPassword = $(formEntryTag).appendTo(this.loginForm).hide();
            $('<input name="login_password" maxlength="20" type="password" disabled autocomplete="off" data-errmess-required="' + this.labels.fieldMandatory + '">').appendTo(this.formEntryNewPassword);
            $('<label>' + this.labels.changePasswordNew + '</label>').prependTo(this.formEntryNewPassword);
            this.formEntryConfirmPassword = $(formEntryTag).appendTo(this.loginForm).hide();
            $('<input name="login_password2" maxlength="20" type="password" disabled autocomplete="off" data-errmess-required="' + this.labels.fieldMandatory + '">').appendTo(this.formEntryConfirmPassword);
            $('<label>' + this.labels.changePasswordConfirm + '</label>').prependTo(this.formEntryConfirmPassword);

            this.loginButton = $('<button class="zdk-bt-yes" type="submit">' + this.labels.loginButtonLabel + '</button>').appendTo(this.loginForm);
            this.cancelButton = $('<button class="zdk-bt-cancel" type="button">' + this.labels.cancelButtonLabel + '</button>').appendTo(this.loginForm);
            this.linkRegister = $('<div><a href="#">Registrarse</a></div>');
            this.loginForm.zdkform({controller: 'security', action: 'login', msgsuccess: false});

            /* Bind login events */
            this._bindLoginEvents();
        },

y no logro hacerlo funcionar, es más ni siquiera aparece.

Saludos

Pascal Martinez

unread,
Mar 4, 2016, 2:43:29 AM3/4/16
to ZnetDK
Hola José,

Para registrar tus usuarios, te propongo la solución siguiente:

1) En tu aplicación principal, inserta tu hiperenlace de 'registro' sobre el dialogo de conneccion, sin modificar el widget 'logindialog.js' (es mejor para no perder tus modificaciones despues la instalación de una nueva versión de ZnetDK), a través el archivo JavaScript dedicado a tu aplicación principal.
  • En la carpeta znetdk/applications/default/public/js, crea el archivo JavaScript mydefaultapp.js con el código fuente siguiente:
/**  Registration link added to the login dialog to redirect the users to the registration application */
$(function () {
    $
('#zdk-login-dialog').bind("zdklogindialogaftershow", function() {
        
var fullUrl = znetdk.getParamsFromAjaxURL(),
            registrationUrl 
= fullUrl.url + '?appl=registration';
        $
(this).find('.zdk-form-buttonpane').append('<a style="margin-left:6px;" href="'
                
+ registrationUrl +'">Registration</a>');
    
});
});
  • En el archivo config.php de tu aplicación principal, inserta la línea siguiente para cargar el nuevo archivo JavaScript mydefaultapp.js:
/** Relative path of the Javascript file specially developed for the application */
define
('CFG_APP_JS','applications/' . ZNETDK_APP_NAME . '/public/js/mydefaultapp.js');


2) Crea una segunda aplicación dedicada al registro de tus usuarios, sin autenticación, que solamente tiene un formulario de registro. Una vez grabado, el usuario tiene un hiperenlace par volver a la aplicación principal y conectarse.
  • En la carpeta znetdk/applications, crea una carpeta que se llama registration y que contiene el código de tu segunda aplicación.
  • En el archivo znetdk/applications/registration/app/config.php, modifica el parámetro CFG_AUTHENT_REQUIRED para desactivar la autenticación de los usuarios. 
/** Is authentication required?
 * @return boolean Value true if the user must authenticate to access to the
 *  application
 */

define
('CFG_AUTHENT_REQUIRED',FALSE);
  • En el archivo znetdk/applications/registration/app/menu.php, unicamente tienes la linea siguiente para abrir el formulario de inscripción que coresponde a tu vista znetdk/applications/registration/app/view/registro.php.
namespace app;

class Menu implements \iMenu {

   
static public function initAppMenuItems() {
       
\MenuManager::addMenuItem(NULL, 'registro', 'Inscripción');
   
}

}
  • Tienes tambien en el archivo znetdk/applications/registration/app/model/, tu DAO para añadir tus usuarios en la base de datos.
  • Finalmente, puedes probar que tu aplicación de inscripción funcciona, ejecutándola con por ejemplo, el URL siguiente: http://127.0.0.1/znetdk/index.php?appl=registration
Esperando que este mensaje responde a tu problema.

Pascal MARTINEZ

Jose Puertas

unread,
Mar 4, 2016, 3:32:57 AM3/4/16
to ZnetDK
Muchas gracias Pascal, probaré tu propuesta aunque mi intención era poder hacerlo en el logindialog.js para asi implementarlo en el kit y que otros usuarios lo aprovecharan.

Saludos
Reply all
Reply to author
Forward
0 new messages