Farbverlauf zweier Farben im Chat

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

      Farbverlauf zweier Farben im Chat

      Moin moin,

      ich habe vor einen Farbverlauf im Chat mit unterzubringen habe soweit auch schon alles fertig,
      zB.:
      • eintrag inder settings.dat 'color2',
      • ../cgi-bin/Templates_de/messages/text.html richtig bearbeitet
      er speichert es auch richtig nur wird die eingegebene zweite farbe in dem Chatfenster nicht angezeigt

      wo muss ich noch was ändern das es angezeigt wird.

      in der ../cgi-bin/Plugins/DataModules/OnlineModule.pm

      hab ich auch schon 'color2', hinzugefügt.

      nun bin ich ratlos und brauche da mal eure hilfe...

      lieben gruss sven

      PHP-Quellcode

      1. <!--- plugindir::TemplateEngines/LanguageIndependentTemplateEngine.pm --->
      2. {IF|$current_user.show_time}({GETTIME}) {ENDIF}<font color="{GET|$params.color}"><b>
      3. <a href="javascript:void(0)" onfocus="resetFocus()" onclick="{IF|$params.name ne $current_user.name}{IF|$current_user.popup_privatemsg}writePrivateMsg('{GET_ESCAPED|$params.name}','{GET_ESCAPED|$params.nick}','');{ELSE}insertText('/msg {GET_JS|$params.nick} ');{ENDIF}{ENDIF}return false;" style="color:{GET|$params.color}">{GET|$params.nick}</a>{IF|$params.*} ({TEXT|at} {FOREACH|$nick|$params.*}{GET|$nick}{NOTLAST}, {ENDFOR}){ENDIF}:</font></b> <script type='text/javascript'>
      4. var text = '{GET|$params.text}';
      5. var farben = new Array('{GET|$params.color}', '{GET|$params.color2}');
      6. var size = '14';
      7. var family = 'Comic Sans MS'
      8. var hex1, hex2, decnum, hexnum;
      9. var SR, SG, SB, ER, EG, EB, MR, MG, MB, DR, DG, DB;
      10. var NSR, NSG, NSB, NER, NEG, NEB, k, v, w;
      11. var ll = new Array
      12. function transHex(hexchar) {
      13. if (hexchar == 'a' || hexchar == 'A') return 10;
      14. else if (hexchar == 'b' || hexchar == 'B') return 11;
      15. else if (hexchar == 'c' || hexchar == 'C') return 12;
      16. else if (hexchar == 'd' || hexchar == 'D') return 13;
      17. else if (hexchar == 'e' || hexchar == 'E') return 14;
      18. else if (hexchar == 'f' || hexchar == 'F') return 15;
      19. else return 0;
      20. }
      21. function transNum(numchar) {
      22. if (0 <= numchar && numchar <= 9) return String(numchar);
      23. else if (numchar == 10) return 'A';
      24. else if (numchar == 11) return 'B';
      25. else if (numchar == 12) return 'C';
      26. else if (numchar == 13) return 'D';
      27. else if (numchar == 14) return 'E';
      28. else if (numchar == 15) return 'F';
      29. else return 0;
      30. }
      31. function getHex(num) {
      32. num = parseInt(num)
      33. hexchar1 = parseInt(num/16);
      34. hexnum = transNum(hexchar1);
      35. hexchar2 = num%16;
      36. hexnum = hexnum + transNum(hexchar2);
      37. return hexnum;
      38. }
      39. function getNum(hex) {
      40. hex1 = parseInt(hex.substring(0, 1));
      41. hex2 = parseInt(hex.substring(1, 2));
      42. if (!isNaN(hex1)) decnum = hex1*16;
      43. else decnum = (parseInt(transHex(hex.substring(0, 1)))*16);
      44. if (!isNaN(hex2)) decnum += hex2;
      45. else decnum += (transHex(hex.substring(1, 2)));
      46. return decnum;
      47. }
      48. k = 0;
      49. b = text.length % (farben.length-1);
      50. SR = getNum(farben[k].substring(1,3));
      51. SG = getNum(farben[k].substring(3,5));
      52. SB = getNum(farben[k].substring(5,7));
      53. ER = getNum(farben[(k+1)].substring(1,3));
      54. EG = getNum(farben[(k+1)].substring(3,5));
      55. EB = getNum(farben[(k+1)].substring(5,7));
      56. x = 0;
      57. if (k < b) {
      58. l = (parseInt(text.length/(farben.length-1))+1);
      59. x++;
      60. }
      61. else l = parseInt(text.length/(farben.length-1));
      62. for (a = 0; a < farben.length-1; a++) {
      63. l[a] = parseInt(text.length/(farben.length-1));
      64. if (text.lenght % (farben.length-1) > a) l[a]++;
      65. }
      66. NSR = (SR-ER)/(l-1);
      67. NSG = (SG-EG)/(l-1);
      68. NSB = (SB-EB)/(l-1);
      69. v = 0;
      70. w = 0;
      71. l_small = parseInt(text.length/(farben.length-1));
      72. for (i = 0; i < text.length; i++) {
      73. if (i == ((l_small*(k+1))+x))
      74. {
      75. k++;
      76. if (k < b) {
      77. l = (parseInt(text.length/(farben.length-1))+1);
      78. x++;
      79. }
      80. else {
      81. l = parseInt(text.length/(farben.length-1));
      82. }
      83. w=v;
      84. SR = getNum(farben[k].substring(1,3));
      85. SG = getNum(farben[k].substring(3,5));
      86. SB = getNum(farben[k].substring(5,7));
      87. ER = getNum(farben[k+1].substring(1,3));
      88. EG = getNum(farben[k+1].substring(3,5));
      89. EB = getNum(farben[k+1].substring(5,7));
      90. NSR = (SR-ER)/(l-1);
      91. NSG = (SG-EG)/(l-1);
      92. NSB = (SB-EB)/(l-1);
      93. }
      94. DR = SR - parseInt(NSR*(i-w));
      95. DG = SG - parseInt(NSG*(i-w));
      96. DB = SB - parseInt(NSB*(i-w));
      97. MR = getHex(DR);
      98. MG = getHex(DG);
      99. MB = getHex(DB);
      100. v++;
      101. document.write ('<span style="font-size:' + size + 'px; font-family: ' + family + '; color: #' + MR + MG + MB + ';">' + text.substring (i,i+1) + '</span>');
      102. }
      103. </script>
      104. <br>
      er speichert es auch richtig nur wird die eingegebene zweite farbe in dem Chatfenster nicht angezeigt: -->

      var farben = new Array('{GET|$params.color}', '{GET|$params.color2}');

      damit hast du einmal farben [0] und einmal farben [1], die du aber nirgendwo aufrufst, so wie ich das beim durchlesen sehe, sondern immer nur als komplettes array. und da ich davon ausgehe, dass es sich hier um die start- und endfarbe handelt, welche als verlauf dargestellt werden sollen, wird das nicht funzen.

      und was soll das bitte sein?
      var ll = new Array


      und ruf doch mal bitte am ende des scripts das array auf, um zu sehen, ob dort noch deine zwei farbwerte ausgegeben werden.
      var farben = new Array('{GET|$params.color}', '{GET|$params.color2}');

      er muss doch irgendwo auch das "{GET|$params.color}" auslesen können um die farbe herzu bekommen
      dann muss ich doch nur das "{GET|$params.color2}" an der gleichen stelle einfügen damit er es dort auch aus lesen kann, nur das ist halt meine frage gewesen wo ich dies eingeben kann???


      damit hast du einmal farben [0] und einmal farben [1], die du aber
      nirgendwo aufrufst, so wie ich das beim durchlesen sehe, sondern immer
      nur als komplettes array. und da ich davon ausgehe, dass es sich hier um
      die start- und endfarbe handelt, welche als verlauf dargestellt werden
      sollen, wird das nicht funzen.
      wenn ich die variablen durch du farbcodes ersetze erhalte ich ja die richtige ausgabe
      oben im quellcode zeile 4 und 5
      var text = 'hier wird der text aus gelesen';
      var
      farben = new Array('#FF0000', '00FF00');
      var
      size = '14';
      var
      family = 'Comic Sans MS'
      und der text wird dann so dargestellt:



      zeile fünf kann weiter erweitert werden

      Quellcode

      1. var farben = new Array('#FF0000', '#00FF00', '#FFFF00', '#0000FF');
      das kann aber gar nie sein, denn wenn du hier

      var farben = new Array('#FF0000', '00FF00');

      nur zwei farben eingibst, hast du niemals das angezeigte ergebnis

      wenn, dann müsste da zb
      var farben = new Array('FF0000', '00FF00', 'FFFF00', '0000FF', 'FF00FF');

      stehen. und diese werte liest du dann halt über die dementsprechende css ein, indem du dort für jeden style die farbwerte festlegst
      eben. und genau deswegen fragte ich. hier handelt es sich um eine separate datei MIT ZWEI FARBEN und nicht mit mehreren und auch nicht um die text.html. deswegen musst halt mehr eintragen und wie du das lösen kannst, dazu habe ich dir den vorschlag über die css gegeben. denn wenn du diverse styles mit verschiedenen hintergrundfarben hast, wirst du nicht drumrumkommen, für jedes style andere farbwerte einzutragen, da sonst der text unlesbar werden könnte.

      und dann könntest du sogar noch hergehen und irgendwo in den einstellungen eine checkbox anlegen und diese in der text.html abfragen
      IF {$blablablafarbverlauf} javascript mit mehreren farben aus der css {ELSE} normale textausgabe wie im body in der css hinterlegt.

      ich habe das eben selbst in die text.html eingebaut und die css mit vier farbwerten angelegt und abgerufen, ist in zehn minuten erledigt und funktioniert. ich habe mir aber nicht die mühe germacht, für das script von :hail: kostenlose-javascripts.de eine abfrage zu integrieren
      hmmm, ich habe den oben geposteten quellcode aus meiner text.html hier rein kopiert.......

      es soll so sein das sich die user, selber zwei farben aussuchen können und diese dann in ihrem profil (bzw. editprofile.html) eintragen können und diese dann daraus eingelesen werden...
      müsste dann ganz einfach gehn
      in die editprofile ein input radio mit farbverlauf aktivieren ja / nein oder checkbox zum markieren
      dazu zwei option select-felder mit den aliasfarbwerten aus der settings einlesen
      dies in der userinformation hinterlegen
      abfragen in der text.html
      fertig
      ich habe deine text.html im original verwendet und kurz eingesetzt. was noch nicht enthalten ist, ist, dass die eingetragenen werte in der edit nicht eingelesen werden, aber das ist ja sicher nicht das problem.


      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Joergoletto“ ()

      settings bearbeiten:

      1. check_profile_fields_range einfügen:


      farbverlauf => [
      0,
      1,
      ],


      2. custom_profile_fields einfügen:

      'farbverlauf',
      'farbe1',
      'farbe2',
      'farbe3',
      'pixel',


      editprofile bearbeiten:

      <tr>
      <td> Farbverlauf aktivieren</td><td>
      Ja <input type=radio name="farbverlauf" value="1"> Nein <input type=radio name="farbverlauf" value="0"
      </td>
      </tr>
      <tr>
      <td> Farbenauswahl</td>
      <td>
      <select name="farbe1"><option value="ff0000">Rot
      <option value="00ff00">Grün
      <option value="0000ff">Blau
      </select>
      <select name="farbe2"><option value="00ff00">Grün
      <option value="0000ff">Blau
      <option value="ff0000">Rot
      </select>
      <select name="farbe3"><option value="0000ff">Blau
      <option value="ff0000">Rot
      <option value="00ff00">Grün
      </select>
      <select name="pixel"><option value="12">12 Pix
      <option value="14">14 Pix
      <option value="16">16 Pix
      <option value="18">18 Pix
      </select>
      </td>
      </tr>

      dein javascript abändern:

      var text = '{GET|$params.text}';
      var farben = new Array('{GET|$user_information.farbe1}', '{GET|$user_information.farbe2}','{GET|$user_information.farbe3}');
      var size = '{GET|$user_information.pixel}';

      deine text.html:

      <!--- plugindir::TemplateEngines/LanguageIndependentTemplateEngine.pm --->
      {NEED|$user_information}
      {IF|$current_user.show_time}({GETTIME}) {ENDIF}<font color="{GET|$params.color}"><b>
      ...... ...... ....... ........ ........ IF|$params.*} ({TEXT|at} {FOREACH|$nick|$params.*}{GET|$nick}{NOTLAST}, {ENDFOR}){ENDIF}:</font></b>

      {IF|$user_information.farbverlauf==1}
      <script type='text/javascript'>
      .......
      .......
      .......
      .......
      document.write ('<span style="font-size:' + size + 'px; font-family: ' + family + '; color: #' + MR + MG + MB + ';">' + text.substring (i,i+1) + '</span>');
      }
      </script>
      {ELSE}
      {GET|$params.text}
      {ENDIF}
      <br>
      du kannst auch noch hergehen und eine schriftart auswählen lassen. dazu müsstest du lediglich in der settings bei custom_profile_fields

      'schriftart',

      hinzufügen, um sie in der editprofile eintragen zu können

      <select name="schriftart"><option value="Comic Sans MS">Comic Sans MS'
      <option value="arial">Arial
      <option value="verdana">Verdana
      <option value="helvetica">Helvetica
      </select>

      und das javascript dann:

      var family = '{GET|$user_information.schriftart}';


      was noch fehlt ist, dass du eben dann beim aufruf der profile abfragen musst, welche werte der user aktuell gespeichert hat, so dass diese auch angezeigt werden.