summaryrefslogtreecommitdiff
path: root/0.4.7a2/input.pl
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2013-04-06 13:14:47 +0200
committerPaul Buetow <paul@buetow.org>2013-04-06 13:14:47 +0200
commit630af0ed6c0af69c7df2e45aef7a87722a3c00c0 (patch)
treead76f850278b090f7e5c26561035d19c320400cc /0.4.7a2/input.pl
parent2860b03f00e48264ed15c132ad90b240ebe6070b (diff)
tagging ychat-perl-legacyychat-perl-legacy
Diffstat (limited to '0.4.7a2/input.pl')
-rw-r--r--0.4.7a2/input.pl194
1 files changed, 194 insertions, 0 deletions
diff --git a/0.4.7a2/input.pl b/0.4.7a2/input.pl
new file mode 100644
index 0000000..8561aba
--- /dev/null
+++ b/0.4.7a2/input.pl
@@ -0,0 +1,194 @@
+#!/usr/bin/perl -w
+
+# yChat - Copyright by Paul C. Bütow
+
+use CGI;
+$q = new CGI;
+require config;
+print
+ $q->header();
+
+$alias = $q->param("alias");
+$tmpid = $q->param("tmpid");
+#&secure_checkid($alias);
+$room = $q->param("room");
+$col = $q->param("col");
+$secol = $q->param("secol");
+$tmp = $q->param("tmp");
+$whisper = $q->param('whisper');
+
+if ($tmp eq "login") {
+ &zeit;
+ &post($room,"<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffa500>$alias hat den Chat betreten ...</font></i>");
+}
+
+print <<END;
+<html>
+<head>
+<script language="JavaScript"><!--
+
+// Einstellungsvariablen
+maxVerlauf = 10; // Anzahl der Einträge des Verlaufs
+maxPreview = 20; // Zeichenlänge der Verlaufsvorschau
+verlaufOrder = 1; // Neue Nachrichten von: 0=oben, 1=unten
+//autoAwayTimeout = 20; // Sekunden, nach denen der User 'Away' gesetzt wird
+//autoQuitTimeout = 40; // Sekunden, nach denen der User den Chat verlässt
+autoAwayTimeout = 300; // Sekunden, nach denen der User 'Away' gesetzt wird
+autoQuitTimeout = 1200; // Sekunden, nach denen der User den Chat verlässt
+
+// Interne Variablen
+userNotFocused = false; // Wenn User nicht schreibt
+userAway = false; // Wenn User automatisch auf 'Away' gesetzt ist
+userAwayTime = 0; // Sekunden, die User 'Away' ist
+fullVerlauf = new Array( maxVerlauf ); // Verlaufspuffer
+
+function delout()
+{
+ addVerlauf (document.inf.msg.value); // Dem Verlauf eine Nachricht anhängen
+ document.inf.submit(); // Formular absenden
+ document.inf.msg.focus(); // Fukus in das Eingabeform
+ document.inf.msg.select(); // Text im Eigabeform markieren
+ return false; // Abbrechen, damit das Frame nicht neu geladen wird
+}
+
+function CheckAuswahl()
+{
+ id=document.verlaufform.verlauf.selectedIndex; // ID des ausgewählten Feldes
+
+ if (fullVerlauf[id-1] != null) // Nur, wenn das Feld nicht leer ist
+ {
+ document.inf.msg.value = fullVerlauf[id-1]; // Eintrag ins Textfeld
+ }
+
+ document.verlaufform.verlauf.selectedIndex = 0; // Ersten Eintrag (Überschrift) auswählen
+ document.inf.msg.focus(); // Eingabefeld fokusieren
+
+ return true;
+}
+
+function addVerlauf (msg)
+{
+ if (msg == "") // Falls msg leer
+ return false; // Aufruf ignorieren
+
+ if (verlaufOrder) // neue Nachrichten von unten
+ {
+ for (i=0; i<(maxVerlauf-1); i++) // Alle Einträge einen aufrutschen
+ {
+ document.verlaufform.verlauf.options[i+1].text = document.verlaufform.verlauf.options[i+2].text;
+ fullVerlauf[i] = fullVerlauf[i+1];
+ }
+ }
+ else // neue Nachrichten von oben
+ {
+ for (i=(maxVerlauf-2); i>=0; i--) // Alle Einträge einen aufrutschen
+ {
+ document.verlaufform.verlauf.options[i+2].text = document.verlaufform.verlauf.options[i+1].text;
+ fullVerlauf[i+1] = fullVerlauf[i];
+ }
+ }
+
+ if (msg.length > maxPreview) // Vorschau zuschneiden
+ pre = msg.slice(0, maxPreview-3) + "...";
+ else
+ pre = msg;
+
+ if (verlaufOrder) // pos = Position des neuen Eintrags
+ pos = maxVerlauf-1;
+ else
+ pos = 0
+
+ document.verlaufform.verlauf.options[pos+1].text = pre; // Neue Vorschau anfügen
+ fullVerlauf[pos] = msg; // Neuen Eintrag an den Verlauf anfügen
+
+// document.verlaufform.verlauf.selectedIndex = maxVerlauf; // Fokus auf den letzten Eintrag
+ document.verlaufform.verlauf.selectedIndex = 0; // Fokus auf den ersten Eintrag (Überschrift)
+}
+
+function msgBlur()
+{
+ userNotFocused = true;
+ userAwayTime = 0;
+ userAway = false;
+}
+
+function msgFocus()
+{
+ userNotFocused = false;
+ if (userAway) // Wird ausgeführt, falls User 'Away' war
+ {
+ ; // nop
+ }
+ userAwayTime = 0;
+ userAway = false;
+}
+
+function checkInterval()
+{
+// status = "userNotFocused=" + userNotFocused + "; userAway=" + userAway + "; userAwayTime=" + userAwayTime + ""; // Debug
+ if (userNotFocused)
+ {
+ userAwayTime += 5; // Addiere 5, da nur alle 5Sek ausgeführt
+ if (!userAway)
+ {
+ if (autoAwayTimeout < userAwayTime) // Falls Zeit abgelaufen
+ {
+ if (document.inf.tmp.value != "away")
+ open ("mail.pl?alias=$alias&tmpid=$tmpid&msg=/away&col=$col&room=$room&tmp=autoaway","reload"); // 'Away' setzen
+ userAway = true;
+ }
+ }
+ else
+ {
+ if (autoQuitTimeout < userAwayTime) // Falls Zeit abgelaufen
+ {
+ open ("mail.pl?alias=$alias&tmpid=$tmpid&msg=/q&room=$room&tmp=autologout","reload"); // Chat beenden
+ }
+ }
+ }
+
+ window.setTimeout("checkInterval()",5000); // In 5 Sekunden wieder aufrufen
+}
+
+function initFrame()
+{
+ window.setTimeout("checkInterval()",5000); // In 5 Sekunden aufrufen
+ document.inf.msg.focus(); // Eingabefeld fokusieren
+}
+//-->
+</script>
+$style
+</head>
+<body class="blank" onload="initFrame();">
+ <div align="left">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td>
+ <form name="inf" target="reload" action="main.pl" onsubmit="return delout();">
+ <input type="hidden" name="alias" value="$alias">
+ <input type="hidden" name="room" value="$room">
+ <input type="hidden" name="col" value="$col">
+ <input type="hidden" name="secol" value="$secol">
+ <input type="hidden" name="tmpid" value="$tmpid">
+ <input type="hidden" name="whisper" value="$whisper">
+ <input type="hidden" name="tmp" value="$tmp">
+ <input size="50" name="msg" onBlur="msgBlur();" onFocus="msgFocus();">
+ </form>
+ </td>
+ <td><form name="verlaufform">
+ <script language="JavaScript"><!--
+ document.write("<select size='1' name='verlauf' size='40' onChange='CheckAuswahl();'>");
+ document.write("<option value>- Nachrichten-Verlauf -</option>");
+ for(i=0; i<maxVerlauf; i++) // Leere Verlaufsfelder generieren
+ document.write("<option value>(leer)</option>");
+ document.write("</select>");
+ //-->
+ </script>
+ </form>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
+END