javascript – Como puedo manipular las respuestas de una encuesta para que el usuario al finalizar pueda enviarlas al backend

teniendo un arreglo de preguntas y respuestas. En donde puedo ir almacenando las respuestas de los usuarios, para que al final de la encuesta se envíen a la base de datos?, estaba pensando en guardar las respuestas en el localStorage y al finalizar la encuesta enviarlas mediante una petición ajax por post, pero no se si sea lo mejor. quisiera hacerlo algo asi como el forms office al momento de contestar las encuestas.

Imagen del arreglo de mis preguntas, en este caso solo es una pregunta, pero pueden ser infinitas.

android – ¿Cómo puedo programar notificaciones locales con Kotlin desde variables?

buenas tardes.
Feliz domingo a todos.

Me estoy iniciando en la programación de apps para Android con kotlin y me gustaría poder programar notificaciones locales pero en vez de usar un DatePickerDialog y TimePickerDialog quisiera programarlas desde dos variables en las que tengo guardadas la fecha y la hora, estas variables están en String.

Encontré este tutorial pero lo hacen desde los pickers para la fecha y el horario

Código: https://github.com/sriharsha1507/set_repetitive_exact_alarm

¿Conocen algún tutorial o material en el que expliquen como se pueden programar las notificaciones desde variables y no desde los pickers?

Ojalá puedan ayudarme.
Saludos

android – ¿Cómo puedo evitar el cierre de un MaterialAlertDialogBuilder al seleccionar el PositiveButton?

estoy haciendo una aplicación en android la cual en una parte muestra un MaterialAlertDialogBuilder. Dentro de este solo hay un TextInputLayout con su TextInputEditText, y dentro del evento de .setPositiveButton que tiene el dialog tengo un condicional que comprueba que el campo esté lleno. Cuando el usuario introduce texto este funciona correctamente, se cierra el diálogo y guarda el dato en un SharedPreferences, pero cuando este no introduce nada quisiera que el diálogo no se cierre, lo demás ya lo tengo hecho. Gracias de antemano Este es mi código:

 //Crear la vista para dialog_item:
            val view = layoutInflater.inflate(R.layout.dialog_item, null)


            MaterialAlertDialogBuilder(this)
                .setView(view)
                .setTitle(getString(R.string.title_dialog))
                .setCancelable(false)
                .setPositiveButton("Confirmar")  { dialog, which ->
                    //Guardar el username del TextInputEditText
                    val username = view.findViewById<TextInputEditText>(R.id.TIET_dialog).text.toString()

                    //Comprobar que no esté vacío.
                    if(username.trim().isEmpty()){

                        view.findViewById<TextInputLayout>(R.id.TIL_dialog).error = getString(R.string.error_empty_text)
                        //TODO: -----> Que no se cierre el dialog. <-----

                    }else{

                        //Guardar el dato del nombre
                        spITEM.putString(getString(R.string.key_username), username)
                    }
                }
                .show()

html5 – ¿Cómo puedo darle espacioado a un elemento html con css?

espero que se encuentren bien.
Soy relativamente nueva con html y css y tengo problemas al tratar de darle un espacio a un elemento html que se encuentra dentro de un menu
Lo que quiero hacer es darle un un margen de 10px a la derechera y 10px a la izquiera a un icono dentro pero no logro llegarle al elemento o no se aplican los cambios
menu lateral izquiero:

Estructura html

 <div class="grid-menu">
    <div class="left-navbar">
      <div>
        <img src="https://via.placeholder.com/60" alt="" srcset="" />
      </div>
      <div class="full-name">
        <p>Ing. Maria G</p>
      </div>
      <div class="">
        <button>Link 1</button>
        <button>Link 2</button>
      </div>
      <ul>
        <li>
          <a href="" class="link"><i class="fas fa-users space-i">Employees</i></a>
        </li>    
    </div>
  </div>

Codigo CSS

.left-navbar {
  height: 100vh;
  background-color: $bgcolor;
  ul {
    list-style-type: none;
    text-align: left;
    padding: 10px;
    li {
      opacity: 0.8;
      margin: 0px;
      i {
        margin: 0px;
        padding: 0px;
      }
    }
  }
}

.space-i {
  margin-right: 10px;
  margin-left: 10px;
}

Creé una clase css llamada “space-i”
el cual se la aplico a la clase del icono pero esta no se ve afectada, Por qué?

<a href="" class="link"><i class="fas fa-users space-i">Employees</i></a>

el icono se ve pegado al texto “employee” de izquierda a derechera, y es lo que quiero envitar.

php – ¿Como puedo cargar un archivo del servidor a un input tipo file para que sea actualizado?

espero y me puedan ayudar o dar sugerencias de hacerlo de otra forma.

Estoy utilizando el framework Yii2 de PHP, lo cual me limita muchas cosas 🙁

Tengo una tabla de registros la cual contiene archivos y fotos, esos registros pueden ser actualizados al igual que los archivos e imágenes, al cargar el formulario me auto completa los campos de texto pero no los campos tipo input, como puedo hacer para que el input tipo file cargue el archivo que esta en el server por si este no se desea actualizar, cabe mencionar que en el atributo value del input file me carga el nombre del archivo que esta en la BD pero creo eso de nada me sirve.

Alguien tiene una idea de como hacerlo o alguna otra manera de implementarlo.

javascript – ¿Cómo puedo ejecutar un bloque de codigo de PHP cada cierto tiempo?

Estoy creando un sitio web donde el objetivo es tener solo una sesión por usuario, logre hacer esto con algunas validaciones y agregando campos a mi BD, entonces supongamos que si el usuario ingresa con su usuario y contraseña en Chrome puede navegar sin problema, si el mismo usuario en otro navegador ya sea Firefox ingresa con su usuario y contraseña, en la sesión de Chrome al recargar la pagina o pasar a otra pagina directamente se cierra la sesión , pero lo que quiero hacer es que se cierre sesión al instante al momento que se inicie la otra sesión o si no es posible entonces que se haga en un determinado tiempo esto para no esperar a que recargue la pagina o cambie a otra.

este es mi codigo PHP donde tengo la validación, investigue que puedo hacerlo con ajax, pero no entiendo como hacerlo, alguien me podría orientar en esto por favor. Se los agradezco por adelantado.

$userById = $connection_s->getUsers($_SESSION("id_user"));
    if ($userById("fecha_acceso") <> $_SESSION("fecha_acceso")) {
         echo"<script>location.href="https://es.stackoverflow.com/logout.php";</script>";    
    }  

No se que mas podría poner de codigo, este esta es mi validación.

como puedo agregar un nuevo campo a mi modelo laravel?

Hola buenas necesito ayuda con un problema que tengo, este es el siguiente:
trabajo con laravel 5.8 y tengo un modelo el cual es el siguiente:

class ProductosJumpsellerweb extends Model
{
    protected $table = 'productosjumpsellerweb';

    protected $primaryKey = 'id_ai';

    public $incrementing = true;

    protected $fillable = [
    'id','sku','name','stock','price','parent_id'
    ];
    public $timestamps = false;
}

Este fue creado hace varios meses, hoy nace la necesidad de agregar una nueva columna a mi tabla y el modelo quedaría así según yo:

class ProductosJumpsellerweb extends Model
{
    protected $table = 'productosjumpsellerweb';

    protected $primaryKey = 'id_ai';

    public $incrementing = true;

    protected $fillable = [
    'id','sku','name','stock','price','parent_id','url'
    ];
    public $timestamps = false;
}

El problema es que en mi controlador no me aparece mi nuevo campo o tampoco se como poder verlo, quedo atento muchas gracias.

No puedo restringir tamaño de los vídeos de Vimeo que añado en Divi (WordPress)

Tengo una web en WordPress con el Divi Builder. Cuando inserto o añado un módulo de vídeo con una URL de un vídeo de Vimeo o un módulo de código con el código de inserción (tengo mi cuenta y suscripción PLUS a Vimeo), resulta que el vídeo (normalmente formato 16:9) toma un espacio contenedor (iframe) cuadrado, lo cual me rompe el diseño.

Es decir, si yo le preparo un contenedor rectangular (16:9) para que queda el vídeo ajustado a ese contenedor, resulta que el vídeo; el contenedor (normalmente una columna de una fila de Divi) se convierte en un cuadrado 1:1. El vídeo sigue su relación 16:9, pero el espacio que toma se duplica (1:1). Por lo que queda mal. He probado a restringir las medidas del contenedor de varias maneras, pero el Video se reproduce mal en la web.

introducir la descripción de la imagen aquí

En la imagen se aprecia que es una fila (rectángulo verde), con dos columnas iguales y cada vídeo en un módulo de código (video insertado). En teoria, las columnas (contenedores) de los vídeos deberían de ser rectangulares y estar ajustados por que yo restrinjo el tamaño y forma de los módulos de código con los vídeos. Pero se observa que hay un espacio en “blanco” tomado por cada vídeo que incluso se sobresale y no se ve en la captura.Las medidas del vídeo las pone Vimeo con su código, también lo he modificado y eso no influye en su iframe.

Espero que haya quedado claro lo que trato de explicar. La pregunta ¿como puedo restringir esa caja iframe que Vimeo consigue fijar?

Gracias

No puedo iniciar aplicación en C# Visual Studio 2017. El combo no se carga

Estoy intentando iniciar una aplicación, pero no logro iniciarla, ya que uno de los combos me informa que la posición es -1. El código es el siguiente:
En el designer del FrmPrincipal.Designer tengo inicializadas las variables:

 private DevExpress.XtraEditors.LabelControl lblUnidad = new DevExpress.XtraEditors.LabelControl();
 private DevExpress.XtraBars.BarListItem cboUnidad = new DevExpress.XtraBars.BarListItem();

Luego las utilizo en el FrmPrincipal, para los controles:

private void CambiarUnidadMedida(LN.Designs.Design.UNIDAD_MEDIDA un)
        {
            Design.Unidad = un;
            switch (un)
            {
                case LN.Designs.Design.UNIDAD_MEDIDA.DOTS:
                    {
                        
                        this.lblUnidad.Text = MensajesDLD.px;
                        this.reglaHorizontal.ScaleMode = enumScaleMode.smPixels;
                        this.reglaVertical.ScaleMode = enumScaleMode.smPixels;
                        this.reglaHorizontal.MajorInterval = 100;
                        this.reglaVertical.MajorInterval = 100;
                        this.cboUnidad.DataIndex = 1;
                        this.cboUnidad.Caption = this.cboUnidad.Strings(this.cboUnidad.DataIndex);

                        Elemento.EscalaUnidades = this.reglaHorizontal.scale / this.reglaHorizontal.MajorInterval;
                        this.panelDesign1.DistanciaGrid = Elemento.EscalaUnidades * 50;
                        this.propertyGridControl1.Refresh();
                        this.panelDesign1.Refresh();
                        break;
                    }
                case LN.Designs.Design.UNIDAD_MEDIDA.MM:
                    {
                    
                        this.lblUnidad.Text = MensajesDLD.mm;
                        this.reglaHorizontal.ScaleMode = enumScaleMode.smMillimetres;
                        this.reglaVertical.ScaleMode = enumScaleMode.smMillimetres;
                        this.reglaHorizontal.MajorInterval = 10;
                        this.reglaVertical.MajorInterval = 10;
                        this.cboUnidad.DataIndex = 1;
                        this.cboUnidad.Caption = this.cboUnidad.Strings(this.cboUnidad.DataIndex);

                        Elemento.EscalaUnidades = this.reglaHorizontal.scale / this.reglaHorizontal.MajorInterval;
                        this.panelDesign1.DistanciaGrid = Elemento.EscalaUnidades * 5;
                        this.propertyGridControl1.Refresh();
                        this.panelDesign1.Refresh();
                        break;
                    }
                /*case LN.Designs.Design.UNIDAD_MEDIDA.PL:
                    {
                        this.lblUnidad.Text = "pl";     
                        this.reglaHorizontal.ScaleMode = enumScaleMode.smInches;
                        this.reglaVertical.ScaleMode = enumScaleMode.smInches;
                        this.reglaHorizontal.MajorInterval = 1;
                        this.reglaVertical.MajorInterval = 1;
                        this.cboUnidad.DataIndex = 2;
                        this.cboUnidad.Caption = this.cboUnidad.Strings(this.cboUnidad.DataIndex);
                        break;
                    }*/
            }
private void CambiarUnidadMedida(LN.Designs.Design.UNIDAD_MEDIDA un)
        {
            Design.Unidad = un;
            switch (un)
            {
                case LN.Designs.Design.UNIDAD_MEDIDA.DOTS:
                    {
                        
                        this.lblUnidad.Text = MensajesDLD.px;
                        this.reglaHorizontal.ScaleMode = enumScaleMode.smPixels;
                        this.reglaVertical.ScaleMode = enumScaleMode.smPixels;
                        this.reglaHorizontal.MajorInterval = 100;
                        this.reglaVertical.MajorInterval = 100;
                        this.cboUnidad.DataIndex = 1;
                        this.cboUnidad.Caption = this.cboUnidad.Strings(this.cboUnidad.DataIndex);

                        Elemento.EscalaUnidades = this.reglaHorizontal.scale / this.reglaHorizontal.MajorInterval;
                        this.panelDesign1.DistanciaGrid = Elemento.EscalaUnidades * 50;
                        this.propertyGridControl1.Refresh();
                        this.panelDesign1.Refresh();
                        break;
                    }
                case LN.Designs.Design.UNIDAD_MEDIDA.MM:
                    {
                    
                        this.lblUnidad.Text = MensajesDLD.mm;
                        this.reglaHorizontal.ScaleMode = enumScaleMode.smMillimetres;
                        this.reglaVertical.ScaleMode = enumScaleMode.smMillimetres;
                        this.reglaHorizontal.MajorInterval = 10;
                        this.reglaVertical.MajorInterval = 10;
                        this.cboUnidad.DataIndex = 1;
                        this.cboUnidad.Caption = this.cboUnidad.Strings(this.cboUnidad.DataIndex);

                        Elemento.EscalaUnidades = this.reglaHorizontal.scale / this.reglaHorizontal.MajorInterval;
                        this.panelDesign1.DistanciaGrid = Elemento.EscalaUnidades * 5;
                        this.propertyGridControl1.Refresh();
                        this.panelDesign1.Refresh();
                        break;
                    }
                /*case LN.Designs.Design.UNIDAD_MEDIDA.PL:
                    {
                        this.lblUnidad.Text = "pl";     
                        this.reglaHorizontal.ScaleMode = enumScaleMode.smInches;
                        this.reglaVertical.ScaleMode = enumScaleMode.smInches;
                        this.reglaHorizontal.MajorInterval = 1;
                        this.reglaVertical.MajorInterval = 1;
                        this.cboUnidad.DataIndex = 2;
                        this.cboUnidad.Caption = this.cboUnidad.Strings(this.cboUnidad.DataIndex);
                        break;
                    }*/
            }


private void cboUnidad_ListItemClick(object sender, ListItemClickEventArgs e)
        {
            if (e.Index == 0)
            {
                if (this.panelDesign1.Design.Balanza.Modelo==Balanza.MODELO.SERIE_LP)
                    LN.Designs.SerieLP.UNIDAD = LN.Designs.Design.UNIDAD_MEDIDA.MM;
                this.CambiarUnidadMedida(LN.Designs.Design.UNIDAD_MEDIDA.MM);
            }
            else if (e.Index == 1)
            {
                if (this.panelDesign1.Design.Balanza.Modelo == Balanza.MODELO.SERIE_LP)
                    LN.Designs.SerieLP.UNIDAD = LN.Designs.Design.UNIDAD_MEDIDA.DOTS;
                this.CambiarUnidadMedida(LN.Designs.Design.UNIDAD_MEDIDA.DOTS);
            }
            else
            {
                this.CambiarUnidadMedida(LN.Designs.Design.UNIDAD_MEDIDA.PL);
            }
        }

Y también, al traducir la pantalla:

this.cboUnidad.Strings.Clear();
            this.cboUnidad.Strings.Add(MensajesDLD.Milimetros);
            this.cboUnidad.Strings.Add(MensajesDLD.Pixeles);
            
            if (this.cboUnidad.DataIndex >= 0)
                this.cboUnidad.Caption = this.cboUnidad.Strings(this.cboUnidad.DataIndex);

Cuando inicio, me aparece el siguiente mensaje:

introducir la descripción de la imagen aquí

¿Puede ser que los controles al ser DevExpress me cause esos problemas? ¿Por qué siempre aparece como DataIndex = -1? He intentado cambiar el valor, pero no ha dado resultado. Gracias

Como puedo pintar en el HTML mis datos guardados en el localStorage?

  • Esta es mi duda sobre como pintar en el HTML y así guardar los datos introducidos por el usuario