Twitter Bootstrap - List Groups Tool

Biblio2ls\Library\TwBs\BsListGroup,
Biblio2ls\Library\TwBs\BsDropDown  &
Biblio2ls\Library\TwBs\BsBtnGroup

Biblio2ls\Library\TwBs\BsListGroup

Las instancias de esta clase ofrecen como salida listas debidamente formateadas, empleando un juego de propiedades del framework Bootstrap. El parámetro $modo pasado a su constructor permite establecer si se usa una lista estándar o una lista de enlaces, empotrada en un div. Las listas se presentan, como tablas de una sola columna, que se extienden hasta llenar horizontálmente su contenedor.
La lista puede contener parametrizaciones internas para afectar los ítems.
Ejemplo 1:

  • Anim pariatur cliche reprehenderit
  • enim eiusmod high life accusamus terry richardson ad squid
  • 3 wolf moon officia aute
  • non cupidatat skateboard dolor brunch
La lista (arriba) se obtuvo usando el siguiente código:
    $lorenipsum = str_replace(',', '.', 'Anim pariatur cliche... ');
    $listaarray = explode('.', $lorenipsum);
    $lista2l = new \Biblio2ls\Library\TwBs\BsListGroup($listaarray, 'ul');
    $body = $lista2l->toString();

Ejemplo 2 (lista con enlaces y parámetros con nombre):

// Estructura de los ítems
    $item = [
      'text'=> 'texto_a_mostrar'|'',
      'link'=> 'uri_a_enlazar'|no asignado,
      'head'=> 'encabezado'|no asignado,
      'htag'=> 'etiqueta_de_encabezado'|no asignado //0 a 6 0=span
      'disabled' => 1|0|Null o no asignado,
      'active' => 1|0|Null o no asignado,
      'badge' => escalar|Null|no asignado,
      'context' => 'info'|'success'|..., //clase contextual
      'clase' => array|Null
    ];
  

A continuación se muestra una lista con 4 ítems definidos usando la estructura indicada arriba:

Si se hace click en el enlace para descarga se podrá verificar que el uso de enlaces manuales funciona.

Aprovechando la definición de la lista enterior intento mostrar un menú dropdown

Biblio2ls\Library\TwBs\BsDropDown

Las instancias de esta clase ofrecen como salida menúes emergentes (dropdown & dropup menus) debidamente formateados y totalmente funcionales.
Se deben emplear al menos dos parámetros en su constructor: un texto o un array para definir el botón y un array de arrays texto, enlace. Opcionalmente, se puede parametrizar le contenedor de lista para obtener mejoras de aspecto.
La lista de ítems admite algunas parametrizaciones internas, similares a las usadasen las instancias de BsGroupList anque no todas tienen efecto similar.

menu ascendente

$dropdown = new \Biblio2ls\Library\TwBs\BsDropDown('Dropdown test', $items);
$dropup = new \Biblio2ls\Library\TwBs\BsDropDown('Dropup test', $items, NULL, '', TRUE);
Observaciones
En el menú "Dropup test" se pueden observar tres diferencias fundamentales con respecto del "Dropdown" Se deben a que su array de definición los items no contienen las claves head y htag; y adicionalmente incluye dos ítems especiales "%sep%" que genera un separador y otro que tiene asignada la clave "isheader" => 1 para que sea presentado como encabezado sin enlaces.
No sobra anotar que los badges no se muestran correctamente en los menús emergentes. De modo que para generar los items en los DropDowns se emplea la clase TwBs/BsItemA mientras que en las listas se instancia su parent TwBs/BsItem que "sabe" manejar los badges.
Biblio2ls\Library\TwBs\BsBtnGroup
Clase asistente para generar grupos de botones alineados y toolbars.
Uso: $btnbar = new \Biblio2ls\Library\TwBs\BsBtnGroup(
$tagName, $grouptype, $role, $groupItems, $groupDef);
donde: $tagName = 'div' | 'nav', $grouptype = 'btn-group' | btn-toolbar | navbar-x ', $role = 'group' | 'toolbar' | 'navigation' |... $groupItems = array( btn_1_ArrayDef, btn_1_ArrayDef, ..., btn_n_ArrayDef), $groupDef = [ 'class' => [class1, class2, ...], 'attrb' => [k1=>v1, k2=>v2, ...], 'ukatt' => [att1, att2, ...] 'itemsbase' => 'class-base-name', 'items' => [subitemdef, ...], // si se anida debe incluir para los iteradores tag, //como tagName grouptype, role ], y btn_x_ArrayDef = [ 'tag' => 'button' | div, 'class' => ['btn', 'btn-default'], 'attrb' => [...], 'ukatt' => [...], 'text' => 'Botón x' ]

Prueba del modelo de definición de botones: Si aparece correctamente se logro el cambio.

Barra de menú

Barra de herramientas

Al aplicar la clase 'btn-group-xs' al elemento ToolBar no se logra el efecto deseado pues los btn-ngroup interiores no heredan del contenedor externo. Se debe ejecutar el llamado:
    $btns->addClase('btn-group-xs');
    para cada caja interior.

Php - BiblioTools