Changeset 427 for trunk


Ignore:
Timestamp:
Apr 8, 2010, 7:46:41 PM (14 years ago)
Author:
george
Message:
  • Upraveno: Automatický překlad nyní vytváří automaticky i částečné nedokončené překlady s přeloženými dílčími sloupci u překladů v dané skupině. Pro uchování informace o částečných překladech se využívá sloupce CompleteParts a v něm obsažené bitové masky.
  • Upraveno: Zobrazení několika nejnovějších překladů na hlavní stránce se nyní vyčítá přímo z tabulek překladů dle údaje ModifyTime.
Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/includes/global.php

    r418 r427  
    4747    echo(' <a href="'.$System->Link('/action.php?action=shoutbox').'">Vložit</a>');
    4848  echo('<div class="box"><table>');
    49   $ID = $Database->SQLCommand('SELECT * FROM `ShoutBox` ORDER BY `ID` DESC LIMIT 20');
     49  $ID = $Database->SQLCommand('SELECT * FROM `ShoutBox` ORDER BY `ID` DESC LIMIT 30');
    5050  while($Line = mysql_fetch_assoc($ID))
    5151    echo('<tr><td><strong>'.$Line['User'].'</strong>: '.htmlspecialchars($Line['Text']).'</td></tr>');
  • trunk/index.php

    r417 r427  
    1818function ShowLastTranslated()
    1919{
    20   global $Database;
     20  global $System;
    2121
    22   $Output = '<br /><strong>Poslední překlady:</strong><div class="NewsBox">';
    23   $DbResult = $Database->SQLCommand('SELECT `Date`, `User`.`Name`, `Text` FROM `Log` JOIN `User` ON `User`.`ID` = `Log`.`User` WHERE `Type` = 1 ORDER BY `Date` DESC LIMIT 20');
    24   while($DbRow = mysql_fetch_assoc($DbResult))
    25     $Output .= '<strong>'.$DbRow['Name'].' ('.date('d.m.Y', MysqlDateTimeToTime($DbRow['Date'])).')</strong>
    26     '.$DbRow['Text'].' <br />'; 
    27   $Output .= '</div>';
     22  $Count = 40;
     23  $Output = '<strong>Poslední překlady:</strong><div class="NewsBox">';
     24 
     25  $GroupListQuery = 'SELECT `Group`.* FROM `Group`';
     26  $Query = '';
     27  $UnionItems = array();
     28  $DbResult = $System->Database->query($GroupListQuery);
     29  while($DbRow = $DbResult->fetch_assoc())
     30  {
     31    //echo($DbRow['Name'].', ');
     32    $UnionItems[] = 'SELECT `T`.`User`, `T`.`ID`, `T`.`ModifyTime`, '.$DbRow['Id'].' AS `Group`, "'.addslashes($DbRow['Name']).'" AS `GroupName`, `T`.`Take` FROM `'.$DbRow['TablePrefix'].'` AS `T`'.
     33    ' WHERE (`T`.`Complete` = 1) AND (`T`.`Language` != 0) LIMIT '.$Count;
     34  }
     35  $Query = 'SELECT `TT`.*, `User`.`Name` AS `UserName` FROM ('.implode(' UNION ', $UnionItems).') AS `TT`'.
     36  ' JOIN `User` ON `User`.`Id` = `TT`.`User`'.
     37  ' ORDER BY `ModifyTime` DESC LIMIT '.$Count;
     38  $DbResult = $System->Database->query($Query);
     39  //echo($System->Database->error);
     40  //echo($Query);
     41  while($DbRow = $DbResult->fetch_assoc())
     42  {
     43    $Output .= '<strong>'.HumanDate($DbRow['ModifyTime']).' '.$DbRow['UserName'].'</strong> přeložil text <a href="form.php?group='.$DbRow['Group'].'&amp;ID='.$DbRow['ID'].'">'.$DbRow['ID'].'</a> převzatý z textu <a href="form.php?group='.$DbRow['Group'].'&amp;ID='.$DbRow['Take'].'">'.$DbRow['Take'].'</a> ve skupině <a href="TanslationList.php?group='.$DbRow['Group'].'&amp;action=filter">'.$DbRow['GroupName'].'</a><br />'; 
     44  }
    2845  return($Output);
    2946}
     
    119136 
    120137  echo('<br />'. 
    121   '<table class="Home"><tr><td>'.
     138  '<table class="Home"><tr><td colspan="2">'.
    122139  'Nacházíte se na stránce projektu překládání textů ze hry World of Warcraft (WoW).<br />'.
    123140  '<ul>'.
     
    128145  '<li>Cílem projektu je přeložit všechny texty ze hry. Nikoliv pouze texty výprav (questů).</li>'.
    129146  '<li>Texty lze překládat do dvou jazyků, češtiny a slovenštiny.</li>'.
    130   '</ul>'.ShowLastTranslated().'</td><td class="news-box">'.ShowNews().'</td></tr></table>');
     147  '</ul></td></tr><tr><td>'.ShowLastTranslated().'</td><td class="news-box">'.ShowNews().'</td></tr></table>');
    131148 
    132149         
  • trunk/save.php

    r420 r427  
    77// Ochrana proti neoprávněnému přístupu
    88// if($User->Licence(LICENCE_USER) == false) die('Nemáte přístup do této sekce! Je nutné se přihásit.');
     9
     10$CompleteText = array('nedokončený', 'dokončený');
    911
    1012$GroupId = LoadGroupIdParameter();
     
    3638        $Filter = '';
    3739        foreach($Group['Items'] as $GroupItem)
    38           if($GroupItem['Visible'] == 1)
    39             $Filter .= ' AND (`'.$GroupItem['Column'].'` = "'.$EnglishText[$GroupItem['Column']].'")';
     40          if(($GroupItem['Visible'] == 1) and ($EnglishText[$GroupItem['Column']] != ''))
     41            $Filter .= ' OR (`'.$GroupItem['Column'].'` = "'.$EnglishText[$GroupItem['Column']].'")';
     42        $Filter = ' AND ('.substr($Filter, 3).')';
    4043       
    4144        $DbResult = $System->Database->query('SELECT * FROM `'.$Table.'` WHERE (`Language` = 0)'.$Filter);
    42         while($DbRow = $DbResult->fetch_assoc())
     45        while($EnglishFound = $DbResult->fetch_assoc())
    4346        {         
    4447          // Get user translation paired to found english item entry
    45           $DbResult2 = $System->Database->query('SELECT * FROM `'.$Table.'` WHERE (`User` = '.$User->Id.') AND (`Entry` = '.$DbRow['Entry'].') AND (`VersionStart` = '.$SourceText['VersionStart'].') AND (`VersionEnd` = '.$SourceText['VersionEnd'].')');
     48          $DbResult2 = $System->Database->query('SELECT * FROM `'.$Table.'` WHERE (`User` = '.$User->Id.') AND (`Entry` = '.$EnglishFound['Entry'].') AND (`VersionStart` = '.$EnglishFound['VersionStart'].') AND (`VersionEnd` = '.$EnglishFound['VersionEnd'].')');
    4649          if($DbResult2->num_rows > 0)
    4750          {
    4851            $ExistedText = $DbResult2->fetch_assoc();
    49             $Values = '`Language` = '.$Language.', `Complete`='.$Complete;
     52            $Values = '`Language` = '.$Language.', `ModifyTime` = NOW()';
     53           
     54            $Completable = true;
     55            $CompleteParts = $ExistedText['CompleteParts'];
    5056            foreach($Group['Items'] as $GroupItem)
    5157            {
    5258              if($GroupItem['Visible'] == 1)
    53                 if(array_key_exists($GroupItem['Column'], $_POST))
    54                   $Values .= ', `'.$GroupItem['Column'].'` = "'.$_POST[$GroupItem['Column']].'"';
    55             }
     59              {
     60                if($EnglishFound[$GroupItem['Column']] == $EnglishText[$GroupItem['Column']])
     61                  if(array_key_exists($GroupItem['Column'], $_POST))
     62                  {
     63                    $Values .= ', `'.$GroupItem['Column'].'` = "'.$_POST[$GroupItem['Column']].'"';
     64                    $CompleteParts |= (1 << ($GroupItem['Sequence'] - 1));
     65                  }
     66                if((($CompleteParts & (1 << ($GroupItem['Sequence'] - 1))) == 0) and ($EnglishFound[$GroupItem['Column']] != '')) $Completable = false;
     67              }
     68            }
     69            if($Completable) $NewComplete = 1; // All parts of text are completed. Make entire text as completed
     70              else $NewComplete = 0;
     71            if($SourceText['ID'] == $ExistedText['ID'])
     72            {
     73              $NewComplete = $Complete; // Our original user text, set complete according user choice
     74              if($Complete == 1)
     75              {
     76                foreach($Group['Items'] as $GroupItem)
     77                  if($GroupItem['Visible'] == 1) $CompleteParts |= (1 << ($GroupItem['Sequence'] - 1));
     78              }
     79            }
     80            $Values .= ', `Complete`='.$NewComplete.', `CompleteParts` = '.$CompleteParts;
    5681           
    5782            // Update user translation
    5883            $System->Database->query('UPDATE `'.$Table.'` SET '.$Values.' WHERE `ID` = '.$ExistedText['ID']);
    5984           
    60             echo('Změny v překladu <a href="form.php?group='.$GroupId.'&amp;ID='.$ExistedText['ID'].'">'.$ExistedText['ID'].'</a> ('.$ExistedText['Entry'].') uloženy!<br />');
    61             WriteLog('Změny v překladu <a href="form.php?group='.$GroupId.'&amp;ID='.$ExistedText['ID'].'">'.$ExistedText['ID'].'</a> ('.$ExistedText['Entry'].') uloženy.', LOG_TYPE_TRANSLATION);
     85            echo('Změny v překladu <a href="form.php?group='.$GroupId.'&amp;ID='.$ExistedText['ID'].'">'.$ExistedText['ID'].'</a> ('.$ExistedText['Entry'].') uloženy jako '.$CompleteText[$NewComplete].'.<br />');
     86            WriteLog('Změny v překladu <a href="form.php?group='.$GroupId.'&amp;ID='.$ExistedText['ID'].'">'.$ExistedText['ID'].'</a> ('.$ExistedText['Entry'].') uloženy jako '.$CompleteText[$NewComplete].'.', LOG_TYPE_TRANSLATION);
    6287          } else
    6388          {
    6489            // Insert new user translation
    65             $Columns = '`Entry`, `VersionStart`, `VersionEnd`, `Language`, `Complete`, `User`, `Take`';
    66             $Values = $DbRow['Entry'].', '.$DbRow['VersionStart'].', '.$DbRow['VersionEnd'].', '.$Language.', '.$Complete.', '.$User->Id.', '.$SourceText['ID'];
     90            $Columns = '`Entry`, `VersionStart`, `VersionEnd`, `Language`, `User`, `Take`, `ModifyTime`';
     91            $Values = $EnglishFound['Entry'].', '.$EnglishFound['VersionStart'].', '.$EnglishFound['VersionEnd'].', '.$Language.', '.$User->Id.', '.$SourceText['ID'].', NOW()';
     92
     93            $CompleteParts = 0;
     94            $Completable = true;
    6795            foreach($Group['Items'] as $GroupItem)
    6896            {
     97              $Columns .= ', `'.$GroupItem['Column'].'`';
    6998              if($GroupItem['Visible'] == 1)
    7099              {
    71                 // Read form user data
    72                 if(array_key_exists($GroupItem['Column'], $_POST))
     100                if($EnglishFound[$GroupItem['Column']] == $EnglishText[$GroupItem['Column']])
    73101                {
    74                   $Columns .= ', `'.$GroupItem['Column'].'`';
    75                   $Values .= ', "'.$_POST[$GroupItem['Column']].'"';
    76                 }
     102                  // Read form user data
     103                  if(array_key_exists($GroupItem['Column'], $_POST))
     104                  {
     105                    $Values .= ', "'.$_POST[$GroupItem['Column']].'"';
     106                    $CompleteParts |= (1 << ($GroupItem['Sequence'] - 1));
     107                  } else $Values .= ', "'.$EnglishFound[$GroupItem['Column']].'"';
     108                } else $Values .= ', "'.$EnglishFound[$GroupItem['Column']].'"';
     109                if((($CompleteParts & (1 << ($GroupItem['Sequence'] - 1))) == 0) and ($EnglishFound[$GroupItem['Column']] != '')) $Completable = false;
    77110              } else
    78111              {
    79112                // Read from english text
    80                 $Columns .= ', `'.$GroupItem['Column'].'`';
    81                 $Values .= ', "'.$DbRow[$GroupItem['Column']].'"';
    82               }
    83             }
     113                $Values .= ', "'.$EnglishFound[$GroupItem['Column']].'"';
     114              }
     115            }
     116            if($Completable) $NewComplete = 1; // All parts of text are completed. Make entire text as completed
     117              else $NewComplete = 0;
     118            if($SourceText['ID'] == $EnglishFound['ID'])
     119            {
     120              $NewComplete = $Complete; // Our original user text, set complete according user choice
     121              if($Complete == 1)
     122              {
     123                foreach($Group['Items'] as $GroupItem)
     124                  if($GroupItem['Visible'] == 1) $CompleteParts |= (1 << ($GroupItem['Sequence'] - 1));
     125              }
     126            }
     127            $Columns .= ', `Complete`, `CompleteParts`';
     128            $Values .= ', '.$NewComplete.', '.$CompleteParts;
     129
     130            //echo('INSERT INTO `'.$Table.'` ('.$Columns.') VALUES ('.$Values.')');
    84131            $System->Database->query('INSERT INTO `'.$Table.'` ('.$Columns.') VALUES ('.$Values.')');
    85132            $LastID = $System->Database->insert_id;
    86133           
    87             echo('Text <a href="form.php?group='.$GroupId.'&amp;ID='.$LastID.'">'.$LastID.'</a> ze skupiny <a href="TranslationList.php?group='.$GroupId.'&amp;action=filter">'.$TranslationTree[$GroupId]['Name'].'</a> uložen! Převzat z <a href="form.php?group='.$GroupId.'&amp;ID='.$TextID.'">'.$TextID.'</a>.<br/>');
    88             WriteLog('Text <a href="form.php?group='.$GroupId.'&amp;ID='.$LastID.'">'.$LastID.'</a> ze skupiny <a href="TranslationList.php?group='.$GroupId.'&amp;action=filter">'.$TranslationTree[$GroupId]['Name'].'</a> uložen! Převzat z <a href="form.php?group='.$GroupId.'&amp;ID='.$TextID.'">'.$TextID.'</a>.', LOG_TYPE_TRANSLATION);
     134            echo('Text <a href="form.php?group='.$GroupId.'&amp;ID='.$LastID.'">'.$LastID.'</a> ze skupiny <a href="TranslationList.php?group='.$GroupId.'&amp;action=filter">'.$TranslationTree[$GroupId]['Name'].'</a> uložen jako '.$CompleteText[$NewComplete].'. Převzat z <a href="form.php?group='.$GroupId.'&amp;ID='.$TextID.'">'.$TextID.'</a>.<br/>');
     135            WriteLog('Text <a href="form.php?group='.$GroupId.'&amp;ID='.$LastID.'">'.$LastID.'</a> ze skupiny <a href="TranslationList.php?group='.$GroupId.'&amp;action=filter">'.$TranslationTree[$GroupId]['Name'].'</a> uložen jako '.$CompleteText[$NewComplete].'. Převzat z <a href="form.php?group='.$GroupId.'&amp;ID='.$TextID.'">'.$TextID.'</a>.', LOG_TYPE_TRANSLATION);
    89136          }
    90137        }       
  • trunk/style/style.css

    r410 r427  
    221221  overflow: auto;
    222222  width: 180px;
    223   height: 500px;
     223  height: 1000px;
    224224  font-size: 10px;
    225225  border-width: 1px;
     
    341341.news-box
    342342{
    343   width: 350px;
     343  width: 50%;
    344344}
    345345
Note: See TracChangeset for help on using the changeset viewer.