Jump to content
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal
Miguel92

[MOD] Hoy es su cumpleaños V.0.1

Recommended Posts

Pedido: [Mod-Pedido] Hoy es su Cumpleaños!

Por: @Rebieta

 

Nota: No sé si es exactamente lo que quiere, pero les dejo el mod (Bueno, conjunto de mods)... PD: les dejaré las imágenes y el archivo m.home_cumpleanos.tpl

 

Cumpleaños completos
Lo pongo de esta manera porque es un conjunto de mod en uno solo

torneo.png.1cf6625cc2ad5ca5e2ce87e1fe07f3c6.png

les quedará así, obviamente no se fijen en el diseño ya que lo hice para la default así no más ya que puede ser usada en cualquier theme

 

LOS MODS USADOS:
    - [MOD] Notificación de cumpleaños del usuario que sigues by @Kmario19
    - [MOD] Cumpleaños en la homeby @Kmario19
    - [MOD] Cumpleaños v2 + Administración + Fecha en perfil by @k_jupiter

 

MOD NUMERO 1: 
    * Anuncia a tus seguidores de tu cumpleaños!

Spoiler

1) - Buscamos en c.user.php las líneas

        // NOMBRE
        $this->nick = $this->info['user_name'];
        $this->uid = $this->info['user_id'];
        $this->is_banned = $this->info['user_baneado'];


    y debajo pegamos
 

      $this->getFollowBirthday();


    Luego buscamos

        // ACTUALES
        $total = explode(',',$pages['limit']);
        $total = ($total[0]) + count($data);
        //
        return array('data' => $data, 'pages' => $pages, 'total' => $total);
    }


    y debajo pegaremos

    /*
        getFollowBirthday()
    */
    function getFollowBirthday(){
        /*
            Si quieres, activa la zona horaria deacuerdo a tu ubicacion para que las fechas se ajusten a tu zona y no a la del servidor de tu web.
            America/Bogota => Colombia (Ver zonas horarias disponibles en http://php.net/manual/es/timezones.php).
            Para activar borra el #.
        */
        # date_default_timezone_set("America/Argentina/Buenos_Aires");
        $type = 18; // Tipo de notificacion disponible
        $uid = $this->uid;
        $mes = date("n",time());
        $dia = date("j",time());
        $query = db_exec(array(__FILE__, __LINE__), 'query', "SELECT f.f_id FROM u_follows AS f LEFT JOIN u_miembros AS u ON f.f_id = u.user_id LEFT JOIN u_perfil AS p ON p.user_id = u.user_id WHERE f.f_user = '$uid' AND f.f_type = '1' AND p.user_dia = '$dia' AND p.user_mes = '$mes' AND f.f_id NOT IN(SELECT obj_uno FROM u_monitor WHERE user_id = '$uid' AND not_type = '18')");
        $follows = result_array($query);
        // Notificamos
        foreach($follows as $val){
            db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO u_monitor (user_id, obj_user, obj_uno, not_type, not_date) VALUES (\''.$uid.'\', \''.$val['f_id'].'\', \''.$val['f_id'].'\', \''.$type.'\', \''.time().'\')');
        }
    }

  [ PARA SABER LAS ZONAS HORARIAS VEÁSE TimeZones y/o TimeZones(America) ]

 

2) - Buscamos en c.monitor.php la línea

        17 => array('text' => 'Tu foto recibió una medalla', 'css' => 'medal'),

    debajo pegamos

        18 => array('text' => 'Está de cumpleaños <strong>¡Felicítalo!</strong>', 'css' => 'cake'),

    Luego buscaremos

        case 17:
            return 'SELECT f.foto_id, f.f_title, f.f_user, m.medal_id, m.m_title, m.m_image, a.medal_for, u.user_id, u.user_name FROM w_medallas_assign AS a LEFT JOIN f_fotos AS f ON f.foto_id = a.medal_for LEFT JOIN u_miembros AS u ON u.user_id = f.f_user LEFT JOIN w_medallas AS m ON m.medal_id = a.medal_id WHERE m.medal_id = \''.(int)$data['obj_uno'].'\' AND f.foto_id = \''.(int)$data['obj_dos'].'\' LIMIT 1';
        break;


    y debajo pegaremos

        case 18:
            global $tsUser;
            $dato['user_name'] = $tsUser->getUserName($data['obj_uno']);
            return $dato;
        break;

    Luego buscamos

        case 17:
            $oracion['text'] = 'Tu <a href="'.$site_url.'/fotos/'.$data['user_name'].'/'.$data['foto_id'].'/'.$tsCore->setSEO($data['f_title']).'.html" title="'.$data['f_title'].'"><b>foto</b></a> tiene una nueva <span class="qtip" title="'.$data['m_title'].'"><b>medalla</b> <img src="'.$site_url.'/themes/default/images/icons/med/'.$data['m_image'].'_16.png"/></span>';
        break;


    y pegamos

        case 18:
            $oracion['text'] = $this->monitor[$no_type]['text'];
        break;

3) - Por último buscamos en phpost.css

        span.ma_medal{ background: url(images/icons/med/blue_bronze_16.png);}


    y debajo pegamos

        span.ma_cake{ background: url(images/icons/cat/cake.png);}


 

 

 

MOD NUMERO 2: 
    * Anunciar cumpleaños en la home!

Spoiler

 

1) - Buscamos en c.afiliado.php y antes de la última llave } agregamos

        /*
            Cumpleaños by kmario19
        */
        function getBirthday(){ 
            global $tsUser, $tsCore;
            // ZONA HORARIA
            // Ver zonas horarias disponibles en http://php.net/manual/es/timezones.php
            date_default_timezone_set("America/Argentina/Buenos_Aires");
            // TIEMPO   
            $mes = date("m",time());
            $dia = date("d",time());
            $ano = date("Y",time());        
            // DATOS
            $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, p.user_ano FROM u_miembros AS u, u_perfil AS p WHERE u.user_id = p.user_id AND u.user_baneado = 0 AND p.user_mes = \''.$mes.'\' AND p.user_dia = \''.$dia.'\'');
            $data['data'] = result_array($query);
            // TOTAL
            $data['total'] = count($data['data']);
            // AÑO ACTUAL
            $data['ano'] = $ano;            
            // RETORNO
            return $data;
        }

2) - Luego buscamos en posts.php

         // AFILIADOS
        $smarty->assign("tsAfiliados",$tsAfiliado->getAfiliados());


    y pegamos debajo

        // CUMPLEAÑOS
         $smarty->assign("tsBirthday",$tsAfiliado->getBirthday());

3) - Luego en t.home.php buscamos

        </div>
        <div id="derecha">


    y debajo agregamos

        {if $tsBirthday.data}
            {include file='modules/m.home_cumpleanos.tpl'}
        {/if}

4) - Crearemos un archivo en modules llamado m.home_cumpleanos.tpl y colocaremos esto

        <div id="lastCommBox">
            <div class="box_title">
                <div class="box_txt estadisticas">Los Cumpleaños!</div> 
                <div class="box_txt" style="float: right;">({$tsBirthday.total})</div>
            </div>
            <div class="box_cuerpo">
                {foreach from=$tsBirthday.data item=b}
                <div id="usuario_cumple">
                    <div class="rgimg" style="background-image: url({$tsConfig.url}/files/avatar/{$b.user_id}_120.jpg);">
                        <img src="{$tsConfig.images}/icons/cumple.png">
                    </div>
                    <div class="user_cump">
                        <a href="{$tsConfig.url}/perfil/{$b.user_name}" title="{$b.user_name}">{$b.user_name}</a> <br>
                        <small>Edad: ({$tsBirthday.ano-$b.user_ano})</small>
                    </div>
                </div>
                {/foreach}
            </div>
            <br class="space"/>
        </div>
        {literal}
        <style>
            #usuario_cumple {
                border: 1px solid #1C1717;
            }
            #usuario_cumple .rgimg {
                width: 39px;
                height: 39px;
                float: left;
                border-right: 1px solid #1C1717;
                margin-right: 5px;
            }
            #usuario_cumple .rgimg img {
                position: absolute;
                margin-top: 1.2rem;
                margin-left: 42px;
            }
            #usuario_cumple .user_cump {
                padding: 5px 0;
            }
            #usuario_cumple .user_cump a {
                font-size: 14px;
                font-weight: bold;
            }
            #usuario_cumple .user_cump small {
                font-size: 10px;
                margin-left: 18px;
            }
        </style>
        {/literal}

 

 

MOD NUMERO 3: 
    * Logo especial de cumpleaños + Mensaje!

Spoiler

 

1) - Buscamos en perfil.php las líneas

        $tsInfo['follow'] = $tsCuenta->iFollow($usuario['user_id']);
        // ME SIGUE?
        $tsInfo['yfollow'] = $tsCuenta->yFollow($usuario['user_id']);


    debajo agregaremos

        // MOD CUMPLEAÑOS v2
        $dia=date('d');
        $mes=date('m');
        $smarty->assign('tsDia',$dia);
        $smarty->assign('tsMes',$mes);

2) - En m.perfil_headinfo.tpl buscamos

        {if $tsUser->uid != $tsInfo.uid && $tsUser->is_member}
            <span class="ex_opts">
                <a href="javascript:bloquear({$tsInfo.uid}, {if $tsInfo.block.bid}false{else}true{/if}, 'perfil')" id="bloquear_cambiar">{if $tsInfo.block.bid}Desbloquear{else}Bloquear{/if}</a>


    y arriba pegamos
 

        {if $tsUser->uid != $tsInfo.uid && $tsUser->is_member}
            <div title="felicidades" style="background-image:url({$tsConfig.images}/icons/cookie.png);background-repeat: no-repeat;padding-left: 20px">Felicítale el: {$tsInfo.user_dia} de {if $tsInfo.user_mes==1}Enero{elseif $tsInfo.user_mes==2}Febrero{elseif $tsInfo.user_mes==3}Marzo{elseif $tsInfo.user_mes==4}Abril{elseif $tsInfo.user_mes==5}Mayo{elseif $tsInfo.user_mes==6}Junio{elseif $tsInfo.user_mes==7}Julio{elseif $tsInfo.user_mes==8}Agosto{elseif $tsInfo.user_mes==9}Septiembre{elseif $tsInfo.user_mes==10}Octubre{elseif $tsInfo.user_mes==11}Noviembre{elseif $tsInfo.user_mes==12}Diciembre{/if}
        </div>
        {/if}

3) - En c.core.php y vamos a final de todo y arriba de

        /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
            
        }


    pegamos esto

        /*
        ===========================================
            ====== INICIA EL MOD DE TRON ====== 
            ====== Actualizado 20/04/18 ====== 
        ===========================================
            birthday() OBTENEMOS LA FECHA
        */
        function birthday(){
            global $tsUser;
            //
            $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT user_mes, user_dia FROM u_perfil WHERE user_id = \'' . $tsUser->uid . '\' ORDER BY user_id DESC LIMIT 1');

            if(!$query) exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') );
            $data = db_exec('fetch_assoc', $query);
        return $data;
        }
        /* 
        ===========================================
            ====== INICIA EL MOD DE TRON ====== 
            ====== Actualizado 20/04/18 ====== 
        =========================================== */

4) - En header.php y buscamos

        // Mensajes
        $smarty->assign('tsMPs',$tsMP->mensajes);


    y debajo pegamos

        // Cumpleaños v2
        $actuald=date(d);
        $actualm=date(m);
        $smarty->assign('tsActuald',$actuald);
        $smarty->assign('tsActualm',$actualm);
        $smarty->assign('tsBirthday',$tsCore->birthday());

5) - Luego buscamos en main_header.php 

        <a id="logoi" title="{$tsConfig.titulo}" href="{$tsConfig.url}">
            <img border="0" align="top" title="{$tsConfig.titulo}" alt="{$tsConfig.titulo}" src="http://o2.t26.net/images/space.gif">
        </a>

    y la reemplazamos por

        {if $tsActuald == $tsBirthday.user_dia && $tsActualm == $tsBirthday.user_mes}
            <a id="logoCumple" style="background-image:url({$tsConfig.logoc_url});" title="{$tsConfig.logoc_title}" href="{$tsConfig.url}"></a>
        {else}
            <a id="logoi" title="{$tsConfig.titulo}" style="" href="{$tsConfig.url}"></a>
        {/if}

    debajo de 

        <div class="UIBeeper" id="BeeperBox"></div>
        <div id="brandday">


    pegamos (* Totalmente opcional *)

        {if $tsActuald == $tsBirthday.user_dia && $tsActualm == $tsBirthday.user_mes}
            <div id="admi_mensaje">
                <b>Mensaje de la administración: </b>
                <span class="mensajito">{$tsConfig.logoc_mensaje}</span>
            </div>
        {/if}

Si quieres aplicar el mensaje en otro lugar solo debes usar

{if $tsActuald == $tsBirthday.user_dia && $tsActualm == $tsBirthday.user_mes} {$tsConfig.logoc_mensaje} {/if}

 

6) - Luego ejecutamos esta consulta

        ALTER TABLE w_configuracion ADD logoc_url tinytext NOT NULL, ADD logoc_title tinytext NOT NULL, ADD logoc_mensaje text NOT NULL;

7) - Ahora en c.admin.php buscamos

        'offline' => empty($_POST['offline']) ? 0 : 1,
        'offline_message' => $tsCore->setSecure($tsCore->parseBadWords($_POST['offline_message'])),


    y debajo pegamos

        'logoc_url' => $tsCore->setSecure($_POST['logocurl']),
        'logoc_title' => $tsCore->setSecure($_POST['logoctitle']),
        'logoc_mensaje' => $tsCore->setSecure($_POST['logocmensaje']),

    Luego buscamos

        , `chat_id` = \'' . $c['chat'] .


    y a lado pegamos

        '\', `logoc_url` = \'' . $c['logoc_url'] . '\', `logoc_title` = \'' . $c['logoc_title'] . '\', `logoc_mensaje` = \'' . $c['logoc_mensaje'] .

8) -  Ahora en m.admin_configs.tpl buscamos

        <dl>
            <dt><label for="ai_url">Dirección del sitio:</label></dt>
            <dd><input type="text" id="ai_url" name="url" maxlength="32" value="{$tsConfig.url}" /></dd>
        </dl>


    y debajo pegamos

        <h4 style="padding: 6px 0; text-align: center; font-size: 22px;border-bottom: 2px solid #004A95;" >Adminitrar para cumpleaños</h4>
        <dl>
            <dt><label for="logoc_url">Logo de cumpleaños</label><br /><span>Introduce la URL del logo de cumpleaños. Les aparecerá cuando cumplan los años.</span></dt>
            <dd><input type="text" id="logoc_url" name="logocurl" maxlength="300" value="{$tsConfig.logoc_url}" /></dd>
        </dl>
        <dl>
            <dt><label for="logoc_title">Título Del logo</label><br /><span>Introduce el título que quieres que salga al poner el maose encima del logo.</span></dt>
            <dd><input type="text" id="logoc_title" name="logoctitle" maxlength="300" value="{$tsConfig.logoc_title}" /></dd>
        </dl>
        <dl>
            <dt><label for="logoc_mensaje">Mensaje</label><br /><span>Introduce el mensaje para dedicarle en su cumpleaños.</span></dt>
            <dd><input type="text" id="logoc_mensaje" name="logocmensaje" value="{$tsConfig.logoc_mensaje}" /></dd>
        </dl>
        <hr>

9) - Por último agregamos esto a estilo.css donde más quieras

        #logoCumple{
            width: 270px;
            height: 48px;
            float:left;
            margin-top: 11px;
            background-size: cover;
        }
        #admi_mensaje {
            background: linear-gradient(90deg, #068B41, #0D5DA1);
            padding: 12px 0;
            text-align: center;
            margin-top: -10px;
            color: #FFF!important;
            letter-spacing: 2px;
        }
        #admi_mensaje span {
            margin-left: 5px;
        }


 

 

Archivo m.home_cumpleanos.tpl + imagenes[cookie.png y cumple.png] → modis.zip ←  lo descomprimen directamente en la carpeta de su theme

Bueno, ni siquiera es un mod... es un conjunto, luego en la otra versión ya será diferente!

  • Thanks 4
  • Downvote 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Miguel92
      Esto es algo que siempre quise hacer, pero como he mencionado anteriormente "SOY MALíSIMO EN PROGRAMACIÓN PHP", pero estaba buscando algo parecido en el foro...pero no encontré. Así que realice uno desde cero.
       
      1 - En inc/class/c.posts.php buscan
          /*         getCatData()         :: OBTENER DATOS DE UNA CATEGORIA     */ y arriba agregan
         /*       OBTENER LOS TITULOS DE LOS POSTS ANTERIOR/SIGUIENTE    */    function TituloAnterior() {       global $tsCore;       $post_id = intval($_GET['post_id']-1);       $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT post_id, post_title FROM p_posts WHERE post_id = \''.$tsCore->setSecure($post_id).'\' LIMIT 1');       $data = db_exec('fetch_assoc', $query);       return $data['post_title'];    }    function TituloSiguente() {       global $tsCore;       $post_id = intval($_GET['post_id']+1);       $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT post_id, post_title FROM p_posts WHERE post_id = \''.$tsCore->setSecure($post_id).'\' LIMIT 1');       $data = db_exec('fetch_assoc', $query);       return $data['post_title'];    }  
      2 - Luego en inc/php/posts.php buscan
                  // COMENTARIOS             /*$tsComments = $tsPosts->getComentarios($tsPost['post_id']);             $tsComments = array('num' => $tsComments['num'], 'data' => $tsComments['data']);             $smarty->assign("tsComments",$tsComments);*/             // PAGINAS y arriba pegan
                  $smarty->assign("tsTituloAnterior",$tsPosts->TituloAnterior());             $smarty->assign("tsTituloSiguente",$tsPosts->TituloSiguente());  
      y en la sección del post donde esta anterior, aleatorio y siguente le agregan 
      {$tsTituloAnterior} o {$tsTituloSiguente}
       
      hasta ahora todo bien, pero cual es el problema
      Ejemplo 1: Llegaste al último post, pero ya no veras ningún nombre de post siguente...Pero lo que quiero es que muestre el nombre del post actual ya que es el último
      Ejemplo 2: Tienes los posts con las id (1,2,3,6) hay falta el 4 y 5, y esto no funcionaría ya que le esta sumando o restando a la ID actual y en este caso:
      ¿Como haría para buscar el ID más cercano?
    • By Miguel92
      Pedido: [Mod] Imagen de cabecera en comunidades
      Por: @fellomix
       
      Una segunda forma de poder hacerlo!
       
      1 -  Ejecutar esta consulta
      ALTER TABLE `c_comunidades` ADD `c_headercom` VARCHAR(255) NOT NULL AFTER `c_nombre_corto`; 2 -  Buscar en c.comunidades.php en la función nueva_comunidad()
                      'fecha' => time(),                 'nombre' => $tsCore->setSecure($tsCore->parseBadWords($_POST['nombre']), true),                 'ncorto' => $tsCore->setSeo($tsCore->setSecure($_POST['ncorto'], true)),
      y debajo agregamos
                      'headercom' => $tsCore->setSecure($tsCore->parseBadWords($_POST['headercom']), true),
      un poco más abajo buscamos
                  // Insertamos             if(db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO c_comunidades (c_autor, c_nombre, c_nombre_corto,
      y le agregamos a lado 
                   c_headercom,
      un poquito más abajo de
                      VALUES (                     \''.$tsUser->uid.'\',                     \''.$dato['nombre'].'\',                     \''.$dato['ncorto'].'\',
      agregamos
                          \''.$dato['headercom'].'\',
      Luego buscamos la función editar_comunidad($comid)
                          'pais' => $tsCore->setSecure($_POST['pais']),                         'desc' => $tsCore->setSecure($_POST['descripcion']),                     'color' => $tsCore->setSecure($_POST['back_color']),
      y debajo pegamos
                          'headercom' => $tsCore->setSecure($_POST['headercom']),
      más abajo buscamos 
                          c_acceso = \''.(int)$dato['acceso'].'\',                     c_permisos = \''.$dato['permisos'].'\',
      y debajo pegamos
       
                         c_headercom = \''.$dato['headercom'].'\',             
      3 - Después buscamos en c.crear_left.tpl
          <div class="item_form clearfix">         <label>Categoría</label>         <select name="categoria" id="ShowCats" class="required" onChange="com.subcat()" tabindex="3">             <option value="0">Selecciona una categoría</option>             {foreach from=$tsCats item=c}             <option value="{$c.cid}" {if $tsDato.c_categoria == $c.cid}selected="selected"{/if}>{$c.c_nombre}</option>             {/foreach}         </select>     </div>
      y debajo o arriba pegamos (se me olvido quitar los required, ya que no es obligatorio)
          <div class="item_form clearfix">         <label>Cabecera!</label>         <input type="text" name="headercom" tabindex="10" maxlength="180" size="60" class="required input_text https" placeholder="URL de portada (debe tener https://)" pattern="https://.*" value="{$tsDato.c_headercom}">         <small class="mg-lt">Solo admitirá los https!</small>     </div> 4 - Después buscamos c.com_info.tpl [línea 24 y 25]
      <div class="ver_com_info">     <div class="vci_left floatL">
      y la reemplazamos por
      <div class="ver_com_info" style="background-image: url({$tsCom.c_headercom});">     <div class="opacity">     <div class="vci_left floatL">
      luego debajo de la línea 61 agregaremos un 
          </div> 5 -  Por último agregaremos esto a comunidades.css
      .ver_com_info {     padding: 0; } .headercom {      background-position: center center;     background-size: cover;     background-repeat: no-repeat; } .opacity {     padding: 20px 8px;     background-color: rgba(255,255,255,.6); }  
    • By Miguel92
      Esto es una mini actualización del

      Lo había incluido en el theme Hydra, pero no lo voy a usar!

      ¿Cual es la diferencia con el original?
      Que solo he agregado una función que he buscado por internet, que en este caso leerá el directorio CSS y obtendrá todos los nombre que existan en dicha carpeta, y es por ello que estan escritas manualmente estilo.css, extras.css y phpost.css en el caso que exista otro css fuera de la carpeta lo tendrán que escribir...
      Todos los achivos encontrados serán mostrados en un select en el cual ustedes puede seleccionar y presionar editar ya que agrega el texto correspondiente en el input

      1 - Ir a js/admin.js y debajo de todo agregar
      /* EDITAR CSS */ var css = { editar: function(){ var e = $('input[name=file-css]').val(); if(css.check(e)){ $.ajax({ type: 'POST', url: global_data.url + '/css.php?ajax=1&pas=0', data: 'css=' + e, success: function(h){ $('textarea[name=css]').html(h).css({ width:'100%', height: '500px', resize: 'vertical' }).show(); $('button[name=savecss]').show(); } }); } else sinCss(); }, save: function(){ var e = $('input[name=file-css]').val(); var t = $('textarea[name=css]').val(); $.ajax({ type: 'POST', url: global_data.url + '/css.php?ajax=1&pas=1', data: 'css=' + t + '&name=' + e, success: function(h){ mydialog.show(); mydialog.title('Guardado...'); mydialog.body('Debes recargar <b>' + global_data.s_title + '</b> para que los cambios realizados en el archivos sean aplicados!'); mydialog.buttons(true, true, 'Regargar', 'admincss()', true, false, true, 'No', 'close', true, true); mydialog.center(); } }); }, check: function(filename){ var ext = (/[.]/.exec(filename)) ? /[^.]+$/.exec(filename.toLowerCase()) : ''; if(ext && /^(css)$/.test(ext)) return true; else return false; } } // admincss function admincss() { location.href = global_data.url + '/admin/css' } function sinCss() { mydialog.show(); mydialog.title('Error'); mydialog.body('Debes seleccionar o escribir un archivos CSS para poder elegir'); mydialog.buttons(true, true, 'Ya entendi!', 'close', true, true); mydialog.center(); }

      2 - Ir a templates/t.admin.tpl y debajo de
      {elseif $tsAction == 'rangos'} {include file='admin_mods/m.admin_rangos.tpl'}
      agregar
      {elseif $tsAction == 'css'} {include file='admin_mods/m.admin_css.tpl'}
      3 -  Ir a templates/admin_mods/ y crear un archivo llamado m.admin_css.tpl y agregar lo siguiente (El diseño esta realizado con bootstrap 4 y Material) por lo que deberán adaptarlo a su theme
      {literal} <script type="text/javascript"> function cambioOpciones() { document.getElementById("mostrarCss").value=document.getElementById("opciones").value; } </script> {/literal} <div class="card-header"> <h3>Editar CSS</h3> </div> <div id="rec" class="card-body"> <span class="d-block">Seleccione un archivo, si no se encuentra escribalo!</span> <div class="row"> <div class="col-4"> <select id="opciones" onchange="cambioOpciones();" size="8" class="custom-select"> <option value=''>Selecciona una opción</option> <option value='estilo.css'>Estilo</option> <option value='extras.css'>Extras</option> <option value='phpost.css'>Phpost</option> {php} $directorio = opendir("../../themes/".TS_TEMA."/css/"); //ruta actual while ($archivo = readdir($directorio)) { if (is_dir($archivo)) { } else { $txtCSS = ucfirst(str_replace('.css', ' ', $archivo)); echo "<option value='css/$archivo'>$txtCSS</option>"; } } {/php} </select> </div> <div class="col-8"> <input type="text" name="file-css" id=mostrarCss" class="d-inline form-control" placeholder="Ej: estilo.css o css/admin.css" size="15" style="width:70%" /> <button class="btn btn-outline-success" onclick="css.editar(); return false;">Editar</button> <textarea name="css" class="prettyprint lang-css" style="display:none;"></textarea> <button class="btn btn-outline-info" onclick="css.save(); return false;" name="savecss" style="display:none;">Guardar</button> </div> </div> </div>
      Veran en el código de m.admin_css.tpl esto
      $directorio = opendir("../../themes/".TS_TEMA."/css/"); //ruta actual
      en donde dice ".TS_TEMA." no funciona, solo le cambian por el nombre de su theme actual

      4 - En la misma carpeta buscan m.admin_sidemenu.tpl y buscan
      <li id="a_temas"><span class="cat-title"><a href="{$tsConfig.url}/admin/temas">Temas y apariencia</a></span></li> y  agregan
      <li id="a_rangos"><span class="cat-title"><a href="{$tsConfig.url}/admin/css">Editar CSS</a></span></li> 5 - Por último van a inc/php/ajax y crean un archivo llamado ajax.css.php y pegan esto
      <?php if ( ! defined('TS_HEADER')) exit('No se permite el acceso directo al script att Xtatter :P'); /*/ · EDITAR EL CSS EN LA ADMIN BY XTATTER /*/ if($tsUser->uid == 1){ $pas = (int)$_GET['pas']; if($pas == 0) { $file_css = $tsCore->setSecure($_POST['css']); $i = file_get_contents($tsCore->settings['tema']['t_url'] . '/' . $file_css); if(empty($i)) $i = 'Error: el archivo no existe'; die($i); } else { $css = $_POST['css']; $css = str_replace('\\n', '\n', $css); $css = str_replace("&#039;", "'", $css); $css = str_replace('&quot;', '"', $css); $file_css = $_POST['name']; $i = '../../'.$tsCore->settings['tema']['t_url'] . '/'; file_put_contents( '../../themes/'.$tsCore->settings['tema']['t_path'] .'/'. $file_css, $css ); } } else { return false; } ?>
      VISTA PREVIA

    • By Miguel92
      Pedido: [Mod] Imagen de cabecera en comunidades
      Por: @fellomix
       
      No sé si es exactamente lo que se pidió..
       
      Quedaría como la imagen, pero obviamente no tiene ese borde rojo ya que lo estaba probando...

       
      Ahora deben de seguir los siguientes pasos...(creo que les va a servir para cualquier theme con comunidades y cualquier versión de Risus)
      Buscamos en inc/class/c.comunidades.php
                  } elseif($type == 3) {                 $this->mod_history($comid, 5, $comid);                 $name = 'cf_'.(int)$comid.'.jpg';                 $root = TS_FILES.'uploads/'.$name;                 if(copy($file['tmp_name'],$root)) return '1: '.$tsCore->settings['url'].'/files/uploads/'.$name;                 else return '0: No se pudo subir la imagen';             }  y debajo o al lado de } pegamos
                   elseif($type == 4) {                 $this->mod_history($comid, 6, $comid);                 $name = 'head_'.(int)$comid.'.jpg';                 $root = TS_FILES.'uploads/'.$name;                 if(copy($file['tmp_name'],$root)) return '1: '.$tsCore->settings['url'].'/files/uploads/'.$name;                 else return '0: No se pudo subir la imagen';             } Luego buscamos en inc/php/ajax/ajax.comunidades.php
              case 'comunidades-edit_fondo':             //<--                 $result = $tsCom->uploadImagen($_FILES['background'], $_GET['comid'], 3);                 echo $tsCore->setJSON($result);             //-->         break; y debajo agregaremos
              case 'comunidades-edit_header':             //<--                 $result = $tsCom->uploadImagen($_FILES['header'], $_GET['comid'], 4);                 echo $tsCore->setJSON($result);             //-->         break; Luego vamos a themes/TUTHEME/js/comunidades.js y buscamos
          votar_tema: function(voto) {         $('#loading').fadeIn(250);         voto = (voto == 'pos') ? 'pos' : 'neg';         var votos = $('#votos_total');         var total_votos = parseInt(votos.text());         total_votos = (isNaN(total_votos)) ? 0 : total_votos; Arriba de esto pegamos lo siguiente
          subir_cabecera: function() {         $('#loading').fadeIn(250);         if ($('#head_input').val()) {             if(isImageFile($('#head_input').val())){                 $('#head_change').css({'opacity' : 0.5});                 $.ajaxFileUpload({                     url: global_data.url + '/comunidades-edit_header.php?' + cgget('comid', true),                     fileElementId: 'head_input',                     dataType: 'json',                     success: function(h){                         if(h.charAt(0) == 1) {                             $('#head_change').css({'opacity' : 1});                             $('#head_change').attr({'src' : h.substring(3) + '?' + new Date().getTime()});                         } else {                             mydialog.alert('Error', h.substring(3));                         }                                         $('#loading').fadeOut(250);                     }                 });             } else mydialog.alert('Error', 'El archivo no es una imagen válida.');         } else mydialog.alert('Error', 'No selecciono ningun archivo.');     },  
      Más abajo buscamos
          if(global_com.comid!='') {         $('body').css({'background-image' : 'url("' + global_data.url + '/files/uploads/cf_' + global_com.comid + '.jpg")'});     }
      y debajo agregamos
          if(global_com.comid!='') {         $('.headercom').css({'background-image' : 'url("' + global_data.url + '/files/uploads/head_' + global_com.comid + '.jpg")'});     } Solo tendríamos que agregar la clase .headercom en donde queramos que aparezca la cabecera de la comunidad
       
      Luego en themes/TUTHEME/templates/comunidades/c.crear_right.tpl y arriba de
      <input type="hidden" id="comid" value="{$tsDato.c_id}" /> <div class="com_box_title clearfix"><h2>Imagen de la comunidad</h2></div>
      Pegamos
          <div class="com_box_title clearfix"><h2>Cabecera de la comunidad</h2></div>     <div class="com_edit_imagen" align="center"> <img src="{$tsConfig.url}/files/uploads/head_{$tsDato.c_id}.jpg" id="head_change" height="180" width="100%" /> <input type="file" id="head_input" class="input_text" name="header" style="width: 100%;" onchange="com.subir_cabecera({$tsDato.c_id})" /> </div>  
      En themes/TUTHEME/templates/comunidades/c.com_info.tpl
      <div class="ver_com_info">     <div class="vci_left floatL">
      y la reemplazamos por
      <div class="ver_com_info headercom">     <div class="opacity">     <div class="vci_left floatL">
      luego más abajo buscamos
          <a href="#" onclick="$('.ver_com_info').toggle();return false;"><i class="com_icon icon_less"></i></a>     <div class="clearfix"></div> </div>
      y la reemplazamos por
          <a href="#" onclick="$('.ver_com_info').toggle();return false;"><i class="com_icon icon_less"></i></a>     <div class="clearfix"></div>     </div> </div> por último en themes/TUTHEME/css/comunidades.css agregamos
      .ver_com_info {     padding: 0; } .headercom { /* De acá podrán darle estilo al fondo */     background-position: center center;     background-size: cover;     background-repeat: no-repeat; } .opacity {     padding: 20px 8px;     background-color: rgba(255,255,255,.6); }  
      Luego trataré de hacer otro, pero que evite subir imagenes a nuestro servidor y que la suba a un web como por ejemplo imgur...creo, no sé...ya lo veré
      PD: Si al editar la imagen no cambia, presionen "CTRL + SHIFT + R" y para evitar eso busquen en t.comunidades.tpl 
      <script type="text/javascript" src="{$tsConfig.js}/comunidades.js"></script> y lo cambian por
      <script type="text/javascript" src="{$tsConfig.js}/comunidades.js?{$smarty.now}"></script>  
    • By Tronlar
      Hola a [email protected],os dejo como poner el editor WYSIWYG igual que la versión 1.3 , lo he probado en la V5 pero tiene que funcionar en cualquier tema.Si tienes problemas con otro tema o lo que sea respecto al mod,coméntalo aquí dejando tu web y un usuario demo.

      En c.core.php --> inc/class/c.core.php

      Buscar:
      /* parseBBCode($bbcode) */ function parseBBCode($bbcode, $type = 'normal', $smiles = true, $mentions = true) { // Class BBCode include_once(TS_EXTRA . 'bbcode.inc.php'); $parser = new BBCode(); // Seleccionar texto $parser->setText($bbcode); // Seleccionar tipo switch ($type) { // NORMAL case 'normal': // BBCodes permitidos $parser->setRestriction(array('url', 'code', 'quote', 'font', 'size', 'color', 'img', 'b', 'i', 'u', 's', 'align', 'spoiler', 'swf', 'video', 'goear', 'hr', 'sub', 'sup', 'table', 'td', 'tr', 'ul', 'li', 'ol', 'notice', 'info', 'warning', 'error', 'success')); break; // FIRMA case 'firma': // BBCodes permitidos $parser->setRestriction(array('url', 'font', 'size', 'color', 'img', 'b', 'i', 'u', 's', 'align', 'spoiler')); break; // NOTICIAS case 'news': // BBCodes permitidos $parser->setRestriction(array('url', 'b', 'i', 'u', 's')); break; // SOLO SMILES (Esta opción se mantiene por compatibilidad con versiones anteriores, pero en su lugar se recomienda utilizar la opción "normal") case 'smiles': $parser->setRestriction(array('url', 'code', 'quote', 'quotePHPost', 'font', 'size', 'color', 'img', 'b', 'i', 'u', 'align', 'spoiler', 'swf', 'goear', 'hr', 'li')); break; } // HTML $html = $parser->getAsHtml(); // SMILES if ($smiles) $html = $parser->parseSmiles(); // MENCIONES if ($mentions) $html = $parser->parseMentions(); // Retornar resultado return $html; }  
       
      Cambiar por:
      /* parseBBCode($bbcode) */ function parseBBCode($bbcode, $type = 'normal') { // Class BBCode include_once(TS_EXTRA . 'bbcode.inc.php'); $parser = new BBCode(); // Seleccionar texto $parser->setText($bbcode); // Seleccionar tipo switch ($type) { // NORMAL case 'normal': // BBCodes permitidos $parser->setRestriction(array('url', 'code', 'quote', 'font', 'size', 'color', 'img', 'b', 'i', 'u', 's', 'align', 'spoiler', 'swf', 'video', 'goear', 'hr', 'sub', 'sup', 'table', 'td', 'tr', 'ul', 'li', 'ol', 'notice', 'info', 'warning', 'error', 'success')); // SMILES $parser->parseSmiles(); // MENCIONES $parser->parseMentions(); break; // FIRMA case 'firma': // BBCodes permitidos $parser->setRestriction(array('url', 'font', 'size', 'color', 'img', 'b', 'i', 'u', 's', 'align', 'spoiler')); break; // NOTICIAS case 'news': // BBCodes permitidos $parser->setRestriction(array('url', 'b', 'i', 'u', 's')); // SMILES $parser->parseSmiles(); break; // SOLO SMILES (Esta opción se mantiene por compatibilidad con versiones anteriores, pero en su lugar se recomienda utilizar la opción "normal") case 'smiles': $parser->setRestriction(array('url', 'code', 'quote', 'quotePHPost', 'font', 'size', 'color', 'img', 'b', 'i', 'u', 'align', 'spoiler', 'swf', 'goear', 'hr', 'li')); // SMILES $parser->parseSmiles(); // MENCIONES $parser->parseMentions(); break; } // Retornar resultado HTML return $parser->getAsHtml(); }  

      En acciones.js --> themes/tutema/js/acciones.js

      Buscar:
      /* Citar comentarios */ function citar_comment(id, nick){ var textarea = $('#body_comm'); textarea.focus(); textarea.val(((textarea.val()!='') ? textarea.val() + '\n' : '') + '[quote=' + nick + ']' + htmlspecialchars_decode($('#citar_comm_'+id).html(), 'ENT_NOQUOTES') + '[/quote]\n'); }  

      Cambiar por:
      /* Citar comentarios */ function citar_comment(id, nick){ var textarea = $('#body_comm'); var message = $.trim($('#comment-body-'+id).html()); $('.wysibb-texarea').execCommand('quote',{autor: nick, seltext: message}); }  
       
      Buscar:
      //Imprimir editores function print_editor(){ //Editor de posts if($('#markItUp') && !$('#markItUpMarkItUp').length){ $('#markItUp').markItUp(mySettings); $('#emoticons a').live("click",function(){ emoticon = ' ' + $(this).attr("smile") + ' '; $.markItUp({ replaceWith:emoticon }); return false; }); } //Editor de posts comentarios if($('#body_comm') && !$('#markItUpbody_comm').length){ $('#body_comm').markItUp(mySettings_cmt); } //Editor de respuestas comunidades if($('#body_resp') && !$('#markItUpbody_resp').length){ $('#body_resp').markItUp(mySettings_cmt); } } /* FIN - Editor */  

      Cambiar por:
      //Imprimir editores function print_editor(){ //Editor de posts if($('#markItUp').length && !$('.wysibb-texarea').length || $('#wysibb').length && !$('.wysibb-texarea').length){ $('#markItUp, #wysibb').removeAttr('onblur onfocus class style').css('height', '400').addClass('required').wysibb(); $('#moreemofn, #emoticons').remove(); } //Editor de posts comentarios if($('#body_comm').length && !$('.wysibb-texarea').length){ var wbbOpt = { buttons: "smilebox,|,bold,italic,underline,strike,sup,sub,|,img,video,link" } $('#body_comm').removeAttr('onblur onfocus class style title').css('height', '80').html('').wysibb(wbbOpt); } //Editor de respuestas comunidades if($('#body_resp') && !$('#markItUpbody_resp').length){ $('#body_resp').markItUp(mySettings_cmt); } //Editor de respuesta de mensajes if($('#respuesta').length && !$('.wysibb-texarea').length){ var wbbOpt = { buttons: "smilebox,|,bold,italic,underline,strike,sup,sub,|,img,video,link,|,removeFormat" } $('#respuesta').removeAttr('onblur onfocus class style title').css('height', '80').html('').wysibb(wbbOpt); } } /* FIN - Editor */  
       
      Buscar:
      mydialog.buttons(true, true, 'Enviar', 'mensaje.enviar(0)', true, true, true, 'Cancelar', 'close', true, false); mydialog.center();  
       
      Cambiar por:
      mydialog.buttons(true, true, 'Enviar', '$(\'.wysibb-texarea\').sync(); mensaje.enviar(0)', true, true, true, 'Cancelar', 'close', true, false); var wbbOpt = { resize_maxheight: 170, buttons: "smilebox,|,bold,italic,underline,strike,sup,sub,|,img,video,link,|,removeFormat" } $('#msg_body').wysibb(wbbOpt); mydialog.center();  

      Buscar:
      // RESPONDER responder: function(mp_id){ this.vars['mp_id'] = $('#mp_id').val(); this.vars['mp_body'] = encodeURIComponent($('#respuesta').val()); // Fix: 14/12/2014 - 1.1.000.9 if(this.vars['mp_body'] == '') { $('#respuesta').focus(); return; } // this.ajax('respuesta','id=' + this.vars['mp_id'] + '&body=' + this.vars['mp_body'], function(h){ $('#respuesta').val(''); // LIMPIAMOS switch(h.charAt(0)){ case '0': mydialog.alert("Error", h.substring(3)); break; case '1': $('#historial').append($(h.substring(3)).fadeIn('slow')); break; } $('#respuesta').focus(); }); },
          
      Cambiar por:
      // RESPONDER responder: function(mp_id){ this.vars['mp_id'] = $('#mp_id').val(); this.vars['mp_body'] = encodeURIComponent($('#respuesta').bbcode()); // Fix: 06/05/2018 - 1.3 if(this.vars['mp_body'] == '') { $('#respuesta').focus(); return; } // this.ajax('respuesta','id=' + this.vars['mp_id'] + '&body=' + this.vars['mp_body'], function(h){ $('#respuesta').val(''); // LIMPIAMOS $('.wysibb-body').html(''); switch(h.charAt(0)){ case '0': mydialog.alert("Error", h.substring(3)); break; case '1': $('#historial').append($(h.substring(3)).fadeIn('slow')); break; } $('#respuesta').focus(); }); },  

          
      En funciones.js --> themes/tutema/js/funciones.js

      Buscar:
      // NUEVO COMENTARIO nuevo: function(mostrar_resp, comentarionum){ // EVITAR FLOOD $('#btnsComment').attr({'disabled':'disabled'}); // var textarea = $('#body_comm'); var text = textarea.val();
      Cambiar por:
      // NUEVO COMENTARIO nuevo: function(mostrar_resp, comentarionum){ // EVITAR FLOOD $('#btnsComment').attr({'disabled':'disabled'}); // var textarea = $('#body_comm'); var text = textarea.bbcode();  
       
      Buscar:
      // VISTA PREVIA DEL COMENTARIO preview: function(id, type){ var textarea = (type == 'new') ? $('#' + id) : $('#edit-comment-' + id); var text = textarea.val();  

      Cambiar por:
      // VISTA PREVIA DEL COMENTARIO preview: function(id, type){ var textarea = (type == 'new') ? $('#' + id) : $('#edit-comment-' + id); var text = textarea.bbcode();  

      En main_header.tpl --> themes/tutema/templates/sections/main_header.tpl    
              
      Buscar:
      <link href="{$tsConfig.tema.t_url}/extras.css" rel="stylesheet" type="text/css" />  

      Agregar debajo:
      <link href="{$tsConfig.css}/wysibb.css" rel="stylesheet" type="text/css" />  
       
      Buscar:
       
      <script src="{$tsConfig.js}/funciones.js" type="text/javascript"></script>
      Agregar debajo:
      <script src="{$tsConfig.js}/wysibb.js" type="text/javascript"></script>  
      Subir esta carpeta y ya lo tienen funcionando.
       
       

       

       

       

       

       

       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Patrocinador



  • ×