<?php
            
/*#################################################################################
            # Trennzeicheneinfüger von http://vlado-do.de/hyphenation/                        #
            # Basierend auf Arbeit von: http://yellowgreen.de/                                #
            # Lizenz: http://creativecommons.org/licenses/by-sa/3.0/                          #
            #################################################################################*/

  /* Der folgende Parameterblock (sieben Zeilen) ist nur für die Optik,
     für die Arbeit des Trennzeicheneinfügers ist er unwichtig */
$hintergrundbild "bg3.jpg";
$hintergrundfarbe "#00CC99";
$description "&bdquo;Weiche&ldquo; Trennzeichen in Text mit HTML-Elementen einfügen.";
$keywords=", weiche Trennzeichen, HTML, Blocksatz, soft hyphen, &amp;shy;";
$titel "Trennzeicheneinfüger";
$css "div.vorschau {border-width:1px;border-color:black;border-style:solid;padding:0.3em;background-color:#FFFF99;max-height:20em;width:100%;overflow:scroll;" . ($_POST['blocksatz']? "text-align:justify;" "") . "} table.text { width:100%;margin-bottom:1em;border-width:2px; }" . ($_POST['fraktur']? " div.vorschau, div.vorschau h2, div.vorschau p, div.vorschau ul, div.vorschau ol { font-family:\'Alte Schwabacher\',Gothik,Fraktur;font-size:large; }" "" );
$root "../";

/* Name der tatsächlichen Inhaltsdatei: */
$filename __FILE__;

$S_FRAGL "$&#x017F;";

/* Begrenzung der Textlänge, da die Ersetzungen den Server überlasten könnten */
/* Für online-Version: 10.000 */
$MAXLENGTH 10000;

/* Schalter für den Fall, dass der Text zu lang ist: */
$no_worries TRUE;

if (
$_POST['anwenden']) {
  
$nutztext $_POST['txt'];
  
$textlaenge strlen($nutztext);
  if (
$textlaenge $MAXLENGTH){
    
$no_worries FALSE;
    
$text "<p>Der eingegebene Text ist mit " $textlaenge " Zeichen länger als erlaubt (" $MAXLENGTH " Zeichen)! Kürzen Sie Ihren Text, oder laden Sie meinen Trennzeicheneinfüger herunter, um ohne diese Beschränkung auf ihrem eigenen Server arbeiten zu können.</p>";
  }
  else {
/* Lässt man den Firefox ein „ſ“ direkt ausgeben, wird es als „s“ dargestellt,
   aber die „ſ“ werden beim nochmaligen Aufruf nicht automatisch umkodiert */  
  
$nutztext stripslashes(str_replace("ſ""&#x017F;"$nutztext));
  
$trennzeichen $_POST['trennzeichen'];
  
$GLOBALS["hyphen"] = $trennzeichen;
  
$sprache $_POST['sprache'];
  
$s_aktion $_POST['s_aktion'];
  
$tz_aktion $_POST['tz_aktion'];
  
$fraktur $_POST['fraktur'];
  
$rote_s $_POST['rote_s'];
  
$blocksatz $_POST['blocksatz'];
  
$dass $_POST['dass'];

  if (
$tz_aktion == "einfügen"){
    if (
$sprache == "Deutsch")
      
$GLOBALS["language"] = "de";
    else if (
$sprache == "Englisch")
      
$GLOBALS["language"] = "en";
    else if (
$sprache == "Französisch")
      
$GLOBALS["language"] = "fr";
    if (
$sprache == "Englisch")
      
$GLOBALS["charmin"] = 6;
    include(
"hyphenation.php");
    
$nutztext hyphenation($nutztext);
  } else if (
$tz_aktion == "entfernen"){
      if (
$trennzeichen == "&shy;"$trennzeichen "­";
      
$nutztext str_replace($trennzeichen""$nutztext);
  }
  else if (
$tz_aktion == "in &shy; umwandeln"){
      
$nutztext str_replace($trennzeichen"&shy;"$nutztext);
  }

  if (
$dass$nutztext str_replace(" dass "" daß "$nutztext); 

  if (
$rote_s)
    
$s_fragl_vorsch "<span class=\"rot\">&#x017F;</span>";
  else
    
$s_fragl_vorsch "&#x017F;";

  if (
$s_aktion == "einfügen") { 
    
$in_tag FALSE;
    
$in_HTML_char FALSE;
    
$neutext "";
    for (
$i 0$i mb_strlen($nutztext); $i++){
      
$char mb_substr($nutztext$i1);
      switch (
$char){
      case 
"<"$in_tag TRUE; break;
      case 
">"$in_tag FALSE; break;
      case 
"&"$in_HTML_char TRUE; break;
      case 
";"$in_HTML_char FAlSE; break;
      }
      
/* Haben wir ein s, was im normalen Text ist (nicht "tag", nicht Sonderzeichen")? */
      
if (!$in_tag && !$in_HTML_char && ($char == "s")){
    
$nchar mb_substr($nutztext, ($i 1), 1);
    
/* Ist das Wort nach dem s zuende? */
    
if ($nchar == " " || $nchar == "." || $nchar == "," || $nchar == "<" || $nchar == "“" || $nchar == "?" || $nchar == "-")
      
$neutext $neutext "s";
    else{
      
$nchars mb_substr($nutztext, ($i 1), mb_strlen($trennzeichen));
      
/* Ist die Silbe nach dem s zuende? */
      
if ($nchars == $trennzeichen)
        
$neutext $neutext $S_FRAGL;
      
/* Andernfalls ist das lange s angebracht: */
      
else $neutext $neutext "&#x017F;";
    }
      }
      else
    
$neutext $neutext $char;
    }
    
$nutztext $neutext;
  }
  else
    if (
$s_aktion == "entfernen"){
      if (
$rote_s$nutztext str_replace($S_FRAGL"s"$nutztext);
      
$nutztext str_replace("&#x017F;""s"$nutztext);
    }
  }
 }
/* else: keinen Text bearbeiten: */
else{
  
$nutztext "";
  
$fraktur TRUE;
  
$blocksatz TRUE;
  
$dass FALSE;
}

if (
$no_worries)
$text '
<table class="text">
<tr>
<td valign="top">
<form method="post" action="./indexD.php" accept-charset="utf-8">
<textarea name="txt" cols="50" rows="20" style="margin-bottom:1em;">' 
.
  (
$rote_s$nutztext str_replace($S_FRAGL"&#x017F;"$nutztext)) .
'</textarea>

<div style="float:right;">Textlänge: ' 
$textlaenge '</div> <input type="submit" value="Anwenden" name="anwenden" />

<div title="Die Tilde &#x007e; sieht man und kann man umsetzen, &amp;shy; ist unsichtbar">
  Trennzeichen
  <select name="trennzeichen" size="1" style="width:5em;"><option>&amp;shy;</option><option selected="selected">&#x007e;</option></select>
  <select name="tz_aktion" size="1" style="width:10em;"><option selected="selected">ignorieren</option><option>einfügen</option><option>entfernen</option><option>in &amp;shy; umwandeln</option></select>
</div>

<div title="Manche Stellen müssen durch die Semantik (manuell) entschieden werden">Lange S (&#x017F;)
<select name="s_aktion" size="1" style="width:10em;"><option selected="selected">ignorieren</option><option>einfügen</option><option>entfernen</option></select>
</div>

<div title="Beeinflusst die Silbentrennung">Sprache: <select name="sprache" size="1" style="width:10em;"><option selected="selected">Deutsch</option><option>Englisch</option><option>Französisch</option></select></div>

<div title="Markierung kann nur beim Einfügen von langen s gesetzt werden"><input type="checkbox" name="rote_s" size="30"' 
. ($rote_s ' checked="checked"' '' ) . ' /> fragliche „&#x017F;“ markieren ($, rot)</div>

<div title="In Fraktur sieht &bdquo;dass&rdquo; doof aus"><input type="checkbox" name="dass" size="30"' 
. ($dass ' checked="checked"' '' ) . ' /> „ dass “ zu „ daß “ umwandeln</div>

<div title="Funktioniert nur, wenn Schrift installiert ist."><input type="checkbox" name="fraktur" size="30"' 
. ($fraktur ' checked="checked"' '' ) . ' /> Vorschau in Frakturschrift</div>

<div title="Beeinflusst nur die Vorschau"><input type="checkbox" name="blocksatz" size="30"' 
. ($blocksatz ' checked="checked"' '' ) . ' /> Vorschau im Blocksatz</div>

</td>
<td valign="top" style="width:100%">
<div class="vorschau">' 
.
  
str_replace($S_FRAGL$s_fragl_vorsch$nutztext) .
'</div>
</td>
</table>

</form>

#trenner#

<h2>Quelltext</h2>

<p>Mein Trennzeicheneinfüger basiert auf einem Script vom <a href="http://yellowgreen.de/" title="Webdesigner">yellowgreen designbüro</a>, welches
wiederum auf der Silbentrennung von LaTeX aufbaut. Weil das <a href="php-hyphenation.zip" title="Paket aus Script und LaTeX-Trenn-Mustern">Script von yellowgreen</a> unter einer <a href="http://creativecommons.org/licenses/by-sa/3.0/" title="DIESE Lizenz">CC-Lizenz</a> steht, gilt diese nun auch für meine Erweiterung.
<br><a href="trennzeicheneinfueger.phps" charset="UTF-8" title="Zum Ansehen und Herunterladen">trennzeicheneinfueger.phps</a> (benötigt eine passende <a href="layout.inc.phps" title="Mini-Layout-Datei">layout.inc.php</a>).
<p>

'
;

include 
'../Include/layout.inc.php';


?>