Advertisement:

Author Topic: Aviso de Caixa de PMs cheia ou quase cheia  (Read 20413 times)

Offline margarett

  • Local Moderator
  • SMF Super Hero
  • *
  • Posts: 19,761
  • Gender: Male
Aviso de Caixa de PMs cheia ou quase cheia
« on: June 15, 2007, 05:28:24 AM »
Boas.

Já todos devem ter reparado, se tentarem enviar uma MP a um membro que tem a caixa de PMs cheia, vocês recebem um erro, mas o dito membro não tem qualquer aviso. Claro que deve ser cada membro a zelar pela disponibilidade da própria caixa, mas também sabemos que isso não acontece...

Portanto, e por necessidade própria, criei uma espécie de MOD (que nem sequer vou enviar para análise como MOD porque não tenho tempo - e não sei o suficiente :D - para criar um pacote como manda o figurino), que cria um aviso no topo da página, sempre que o membro tiver menos de 2 mensagens "livres" na sua caixa, e outro aviso quando a caixa estiver esgotada. Admins, visitantes e membros com PMs desabilitadas não vêm nada.

Este problema foi lançado no quadro do "Coding" mas nunca tive qualquer resposta:
http://www.simplemachines.org/community/index.php?topic=171608.0

Acabei por martelar um bocado e descobrir por mim. Fica aqui a alteração "manual".

Abrir o index.template.php do vosso tema.

Encontrar:
Code: [Select]
/* Show sticky and lock status seperate from topic icons? Leave true, icons don't exist for false.*/
$settings['seperate_sticky_lock'] = true;
}

Adicionar depois:
Code: [Select]
function PMIndex()
{
global $txt, $scripturl, $sourcedir, $context, $user_info, $user_settings, $db_prefix, $ID_MEMBER;


// Load up the members maximum message capacity.
if (!$user_info['is_admin'])
{
// !!! Why do we do this?  It seems like if they have any limit we should use it.
$request = db_query("
SELECT MAX(maxMessages) AS topLimit, MIN(maxMessages) AS bottomLimit
FROM {$db_prefix}membergroups
WHERE ID_GROUP IN (" . implode(', ', $user_info['groups']) . ')', __FILE__, __LINE__);
list ($maxMessage, $minMessage) = mysql_fetch_row($request);
mysql_free_result($request);

$context['message_limit'] = $minMessage == 0 ? 0 : $maxMessage;
}
else
$context['message_limit'] = 0;
}

Encontrar:
Code: [Select]
<body>';
Adicionar depois:

Code: [Select]
PMIndex();

if ($context['user']['is_logged'] && $context['allow_pm'] && $context['message_limit'] > 0)
{
$aux_calc = $context['message_limit'] - $context['user']['messages'];
if (($aux_calc <= 2) && ($aux_calc != 0))
echo' <div align="center"; style="font-size: 20pt; color: #ffffff">LIMITE DA CAIXA DE MENSAGENS QUASE A SER ATINGIDO</div>';
elseif ($aux_calc == 0 )
echo' <div align="center"; style="font-size: 20pt; color: #ffffff">LIMITE DA CAIXA DE MENSAGENS ATINGIDO. NÃO VAI RECEBER MAIS MPs!!!!</div>';

}

Neste ultimo "bocado de código" podem alterar as definições do aviso. Tamanho da letra, cor da letra e claro, o texto do aviso.

No meu fórum, o resultado foi este:
Com a caixa tendo apenas 1 ou 2 mensagens disponíveis:

Com a caixa esgotada aparece isto:



Foi testado em FF e IE6, mas deve trabalhar em qualquer browser.

Enjoy ;)
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

Quote
Over 90% of all computer problems can be traced back to the interface between the keyboard and the chair

Offline O Cobra

  • Jr. Member
  • **
  • Posts: 356
  • Gender: Male
    • Portugueses Online
Re: Aviso de Caixa de PMs cheia ou quase cheia
« Reply #1 on: June 15, 2007, 10:28:14 AM »
Bravo amigo, realmente é um belo trabalho que nos apresenta aqui, que de certeza vem ajudar e muito alguns amigos

Offline Tjda

  • Jr. Member
  • **
  • Posts: 146
  • Gender: Male
    • Biovolts
Re: Aviso de Caixa de PMs cheia ou quase cheia
« Reply #2 on: June 15, 2007, 06:20:05 PM »
Caixa de PM's cheia ..porra ...

Bom post

Offline N3lson

  • Sr. Member
  • ****
  • Posts: 808
  • Gender: Male
Re: Aviso de Caixa de PMs cheia ou quase cheia
« Reply #3 on: June 16, 2007, 01:22:05 AM »
Muitos parabéns ... boa ideia...

Com uma pequena alteração poderia-se colocar um pouco de grafismos tipo colocar uma barra de progresso a avisar, por baixo dos posts não lidos...

-------



« Last Edit: June 16, 2007, 01:25:09 AM by N3lson »
I´m Portuguese Yeah

Offline uni

  • Semi-Newbie
  • *
  • Posts: 56
  • Gender: Male
Re: Aviso de Caixa de PMs cheia ou quase cheia
« Reply #4 on: June 16, 2007, 07:08:57 PM »
Nice work mate, isto ainda pode vir a dar jeito!

Offline Meira

  • Semi-Newbie
  • *
  • Posts: 90
Re: Aviso de Caixa de PMs cheia ou quase cheia
« Reply #5 on: June 19, 2007, 10:57:19 PM »
No meu index, só aparece isso:

"/* Show sticky and lock status seperate from topic icons? */
   $settings['seperate_sticky_lock'] = true;"


Se eu colocar esses códigos ai, funcionará?

Abs!
Fórum PC Gamers venha fazer parte.
(Come to do part.)

Offline margarett

  • Local Moderator
  • SMF Super Hero
  • *
  • Posts: 19,761
  • Gender: Male
Re: Aviso de Caixa de PMs cheia ou quase cheia
« Reply #6 on: June 20, 2007, 04:32:43 AM »
Basicamente, o que se pretende é criar essa função "PMIndex()" a seguir à função "function template_init()"

Ou seja, procuras:
function template_init()
{

E depois tens de encontrar a "chaveta" - } - correspondente do final dessa função.

Se tiveres dificuldades, podes adicionar antes de:
Code: [Select]
// The main sub template above the content.
function template_main_above()
{
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

Quote
Over 90% of all computer problems can be traced back to the interface between the keyboard and the chair

Offline Meira

  • Semi-Newbie
  • *
  • Posts: 90
Re: Aviso de Caixa de PMs cheia ou quase cheia
« Reply #7 on: June 20, 2007, 10:54:49 AM »
Mais quais dos códigos da primeira mensagem devo adicionar antes do código que citara na mensagem acima?
Fórum PC Gamers venha fazer parte.
(Come to do part.)

Offline margarett

  • Local Moderator
  • SMF Super Hero
  • *
  • Posts: 19,761
  • Gender: Male
Re: Aviso de Caixa de PMs cheia ou quase cheia
« Reply #8 on: June 20, 2007, 11:38:01 AM »
Deves executar TODOS os procedimentos da primeira mensagem. Mas, em vez de encontrares:
Code: [Select]
/* Show sticky and lock status seperate from topic icons? Leave true, icons don't exist for false.*/
$settings['seperate_sticky_lock'] = true;
}
E adicionares a seguir o código indicado,
Encontras:
Code: [Select]
// The main sub template above the content.
function template_main_above()
{
E adicionas antes esse dito código
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

Quote
Over 90% of all computer problems can be traced back to the interface between the keyboard and the chair

Offline Meira

  • Semi-Newbie
  • *
  • Posts: 90
Re: Aviso de Caixa de PMs cheia ou quase cheia
« Reply #9 on: June 20, 2007, 02:53:59 PM »
Ai como ficou no meu arquivo, do ultimo código ao primeiro:


Quote
<body>';
PMIndex();

if ($context['user']['is_logged'] && $context['allow_pm'] && $context['message_limit'] > 0)
{
   $aux_calc = $context['message_limit'] - $context['user']['messages'];
   if (($aux_calc <= 2) && ($aux_calc != 0))
      echo' <div align="center"; style="font-size: 20pt; color: #ffffff">LIMITE DA CAIXA DE MENSAGENS QUASE A SER ATINGIDO</div>';
   elseif ($aux_calc == 0 )
      echo' <div align="center"; style="font-size: 20pt; color: #ffffff">LIMITE DA CAIXA DE MENSAGENS ATINGIDO. NÃO VAI RECEBER MAIS MPs!!!!</div>';

}


Quote
function PMIndex()
{
   global $txt, $scripturl, $sourcedir, $context, $user_info, $user_settings, $db_prefix, $ID_MEMBER;


   // Load up the members maximum message capacity.
   if (!$user_info['is_admin'])
   {
      // !!! Why do we do this?  It seems like if they have any limit we should use it.
      $request = db_query("
         SELECT MAX(maxMessages) AS topLimit, MIN(maxMessages) AS bottomLimit
         FROM {$db_prefix}membergroups
         WHERE ID_GROUP IN (" . implode(', ', $user_info['groups']) . ')', __FILE__, __LINE__);
      list ($maxMessage, $minMessage) = mysql_fetch_row($request);
      mysql_free_result($request);

      $context['message_limit'] = $minMessage == 0 ? 0 : $maxMessage;
   }
   else
      $context['message_limit'] = 0;
}

// The main sub template above the content.
function template_main_above()

Eu mudei a ordem para facilitar a postagem pra mim, tá certo ai o processo?

Obrigado, Margarret.
Fórum PC Gamers venha fazer parte.
(Come to do part.)

Offline margarett

  • Local Moderator
  • SMF Super Hero
  • *
  • Posts: 19,761
  • Gender: Male
Re: Aviso de Caixa de PMs cheia ou quase cheia
« Reply #10 on: June 20, 2007, 03:02:13 PM »
;)
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

Quote
Over 90% of all computer problems can be traced back to the interface between the keyboard and the chair

Offline Meira

  • Semi-Newbie
  • *
  • Posts: 90
Re: Aviso de Caixa de PMs cheia ou quase cheia
« Reply #11 on: June 30, 2007, 04:03:22 PM »
Margarett, como faço pra testar esse aviso na caixa de mensagens pessoais para ver se está funcionando tudo certo?

Fórum PC Gamers venha fazer parte.
(Come to do part.)

Offline margarett

  • Local Moderator
  • SMF Super Hero
  • *
  • Posts: 19,761
  • Gender: Male
Re: Aviso de Caixa de PMs cheia ou quase cheia
« Reply #12 on: July 02, 2007, 04:22:49 AM »
Crias um user de testes com um limite de mensagens qualquer, e envias do teu user "normal" um monte de MP's :P
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

Quote
Over 90% of all computer problems can be traced back to the interface between the keyboard and the chair

Offline Meira

  • Semi-Newbie
  • *
  • Posts: 90
Re: Aviso de Caixa de PMs cheia ou quase cheia
« Reply #13 on: July 02, 2007, 11:20:51 AM »
Criei e fiz o teste colocando com limite de max. de mensagens pessoais "3" e enviei 5, recebeu-as e não houve nenhuma mensagem. Porque será?

Fiz isso em permissões por grupos, tá certo?
Fórum PC Gamers venha fazer parte.
(Come to do part.)

Offline margarett

  • Local Moderator
  • SMF Super Hero
  • *
  • Posts: 19,761
  • Gender: Male
Re: Aviso de Caixa de PMs cheia ou quase cheia
« Reply #14 on: July 02, 2007, 11:25:08 AM »
Tá certo sim.

Agora, se entrares com esse user de teste, ele deve ver o aviso lá em cima. Se não vir, algo não está bem...
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

Quote
Over 90% of all computer problems can be traced back to the interface between the keyboard and the chair

Offline Meira

  • Semi-Newbie
  • *
  • Posts: 90
Re: Aviso de Caixa de PMs cheia ou quase cheia
« Reply #15 on: July 02, 2007, 04:04:01 PM »
Pois é, entrei com o tester e não apareceu.
Estou mandando o meu arquivo com a modificação para aparecer a mensagem e verifique pra mim qual é o erro, por favor.

Obrigado.
Fórum PC Gamers venha fazer parte.
(Come to do part.)

Offline margarett

  • Local Moderator
  • SMF Super Hero
  • *
  • Posts: 19,761
  • Gender: Male
Re: Aviso de Caixa de PMs cheia ou quase cheia
« Reply #16 on: July 03, 2007, 04:34:54 AM »
Parece estar bem.

Envia mais mensagens do teu user para esse "teste", até receberes o erro de caixa cheia. Depois de a caixa estar cheia, entra com o "teste" e verifica.
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

Quote
Over 90% of all computer problems can be traced back to the interface between the keyboard and the chair

Offline segrob

  • Semi-Newbie
  • *
  • Posts: 60
Re: Aviso de Caixa de PMs cheia ou quase cheia
« Reply #17 on: October 15, 2007, 07:24:27 PM »
boas margarett !
este teu tópico a muito interecence e estou com esse problema das mensagens !
fiz como tens no manual !
mas meti o maximo de mansagens 10 e o membro continua a receber as mensagens e a e ja tem 18 na caixa e consegues lelas todos!
« Last Edit: October 15, 2007, 09:26:04 PM by segrob »

Offline segrob

  • Semi-Newbie
  • *
  • Posts: 60
Re: Aviso de Caixa de PMs cheia ou quase cheia
« Reply #18 on: October 15, 2007, 07:51:05 PM »
deixo aqui como eu meti no meu que ficou mais visivel

http://img49.imageshack.us/img49/3610/screenshotde3.jpg



Encontar
Code: [Select]
   // Show a random news item? (or you could pick one from news_lines...)
   if (!empty($settings['enable_news']))
      echo '

                  <td class="smalltext" style="vertical-align:middle;padding-left:10px; padding-top:0px; padding-bottom:0px;">
                     <strong>', $txt[102], '</strong>: ', $context['random_news_line'], '
                  </td>';
   echo '
                  <td class="smalltext" style="vertical-align:middle;text-align:right;padding-right:10px; padding-top:0px; padding-bottom:0px;font-weight:bold">
                        ' , $context['current_time'], '
                  </td>
               </tr>
            </table>
         </div>';


Adicionar depois
Code: [Select]
PMIndex();

if ($context['user']['is_logged'] && $context['allow_pm'] && $context['message_limit'] > 0)
{
$aux_calc = $context['message_limit'] - $context['user']['messages'];
if (($aux_calc <= 2) && ($aux_calc != 0))
echo' <div align="center"; style="font-size: 14pt; color: #8B0000"> Faça uma limpeza á sua caixa de mensagens porque já se encontra no limite   </div>';
elseif ($aux_calc == 0 )
echo' <div align="center"; style="font-size: 13pt; color: #8B0000">VÓCE NÃO VAI RECEBER MAIS PMS SEU LIMITE DA CAIXA DE MENSAGENS ESTÁ ATINGIDO.</div>';

}
« Last Edit: October 15, 2007, 10:22:05 PM by segrob »

Offline margarett

  • Local Moderator
  • SMF Super Hero
  • *
  • Posts: 19,761
  • Gender: Male
Re: Aviso de Caixa de PMs cheia ou quase cheia
« Reply #19 on: October 16, 2007, 05:21:35 AM »
E o problema anterior, já solucionaste?

PS: bom trabalho ;) é bom ver que o pessoal não se limita a copiar.
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

Quote
Over 90% of all computer problems can be traced back to the interface between the keyboard and the chair