protected function Form_Create() { parent::Form_Create(); $this->pnlTab = new QTabs($this); $pnlDummy = new QPanel($this->pnlTab); $pnlDummy = new QPanel($this->pnlTab); $pnlDummy = new QPanel($this->pnlTab); $arrHeaders = array(NarroLink::ProjectList(t('Projects')), NarroLink::Translate(0, '', NarroTranslatePanel::SHOW_ALL, '', 0, 0, 10, 0, 0, t('Translate')), NarroLink::Translate(0, '', NarroTranslatePanel::SHOW_NOT_APPROVED, '', 0, 0, 10, 0, 0, t('Review'))); /** * Do not show the langauge tab if only two languages are active (source and target * Unless the user is an administrator and might want to set another one active */ if (NarroLanguage::CountAllActive() > 2 || QApplication::HasPermission('Administrator')) { $this->pnlLanguageTab = new QTabs($this->pnlTab); $pnlDummy = new QPanel($this->pnlLanguageTab); $arrLangHeaders[] = t('List'); if (QApplication::HasPermissionForThisLang('Can add language')) { $this->pnlLanguageEdit = new NarroLanguageEditPanel($this->pnlLanguageTab, NarroLanguage::Load(QApplication::QueryString('lid'))); $arrLangHeaders[] = QApplication::QueryString('lid') ? t('Edit') : t('Add'); } $this->pnlLanguageTab->Headers = $arrLangHeaders; $this->pnlLanguageTab->Selected = 1; $arrHeaders[] = t('Languages'); $this->pnlTab->Selected = count($arrHeaders) - 1; } $pnlDummy = new QPanel($this->pnlTab); $arrHeaders[] = NarroLink::UserList('', t('Users')); $pnlDummy = new QPanel($this->pnlTab); $arrHeaders[] = NarroLink::RoleList(0, '', t('Roles')); if (QApplication::HasPermissionForThisLang('Administrator')) { $pnlDummy = new QPanel($this->pnlTab); $arrHeaders[] = NarroLink::Log('', t('Application Log')); } $this->pnlTab->Headers = $arrHeaders; }
protected function Form_Create() { parent::Form_Create(); $this->pnlTab = new QTabs($this); $pnlDummy = new QPanel($this->pnlTab); $arrHeaders[] = NarroLink::ProjectList(t('Projects')); $pnlDummy = new QPanel($this->pnlTab); $arrHeaders[] = NarroLink::Translate(0, '', NarroTranslatePanel::SHOW_NOT_TRANSLATED, '', 0, 0, 10, 0, 0, t('Translate')); $pnlDummy = new QPanel($this->pnlTab); $arrHeaders[] = NarroLink::Review(0, '', NarroTranslatePanel::SHOW_NOT_APPROVED, '', 0, 0, 10, 0, 0, t('Translate')); if (NarroLanguage::CountAllActive() > 2 || QApplication::HasPermission('Administrator')) { $pnlDummy = new QPanel($this->pnlTab); $arrHeaders[] = NarroLink::LanguageList(t('Languages')); } $this->pnlUserList = new NarroUserListPanel($this->pnlTab); $arrHeaders[] = NarroLink::UserList('', t('Users')); $this->pnlTab->Selected = count($arrHeaders) - 1; $pnlDummy = new QPanel($this->pnlTab); $arrHeaders[] = NarroLink::RoleList(0, '', t('Roles')); if (QApplication::HasPermissionForThisLang('Administrator')) { $pnlDummy = new QPanel($this->pnlTab); $arrHeaders[] = NarroLink::Log('', t('Application Log')); } $this->pnlTab->Headers = $arrHeaders; }
protected function Form_Create() { parent::Form_Create(); if (!QApplication::HasPermissionForThisLang('Can export project', $this->objProject->ProjectId)) { QApplication::Redirect(NarroLink::ProjectList()); } $pnlDummy = new QPanel($this->pnlMainTab); $arrHeaders[] = NarroLink::Project($this->objProject->ProjectId, t('Overview')); if ($this->objProject instanceof NarroProject && QApplication::HasPermissionForThisLang('Can edit project', $this->objProject->ProjectId)) { $pnlDummy = new QPanel($this->pnlMainTab); $arrHeaders[] = NarroLink::ProjectEdit($this->objProject->ProjectId, t('Edit')); } $pnlDummy = new QPanel($this->pnlMainTab); $arrHeaders[] = NarroLink::Translate($this->objProject->ProjectId, '', 0, '', 0, 0, 10, 0, 0, t('Translate')); $pnlDummy = new QPanel($this->pnlMainTab); $arrHeaders[] = NarroLink::Review($this->objProject->ProjectId, '', NarroReviewPanel::SHOW_NOT_APPROVED, '', 0, 0, 10, 0, 0, t('Review')); $pnlDummy = new QPanel($this->pnlMainTab); $arrHeaders[] = NarroLink::ProjectFileList($this->objProject->ProjectId, '', '', t('Files')); $pnlDummy = new QPanel($this->pnlMainTab); $arrHeaders[] = NarroLink::ProjectLanguages($this->objProject->ProjectId, t('Languages')); if (QApplication::HasPermissionForThisLang('Can import project', $this->objProject->ProjectId)) { $pnlDummy = new QPanel($this->pnlMainTab); $arrHeaders[] = NarroLink::ProjectImport($this->objProject->ProjectId, t('Import')); } if (QApplication::HasPermissionForThisLang('Can export project', $this->objProject->ProjectId)) { $this->pnlSelectedTab = new NarroProjectExportPanel($this->objProject, $this->pnlMainTab); $arrHeaders[] = t('Export'); $this->pnlMainTab->Selected = count($arrHeaders) - 1; } $this->pnlMainTab->Headers = $arrHeaders; }
protected function Form_Create() { parent::Form_Create(); $this->pnlTab = new QTabs($this); /** * Create the project list panel and set the filter from the url. * The filter is used to show only projects of a given status based on their progress * (finished, empty, in progress). */ $this->pnlProjectList = new NarroProjectListPanel($this->pnlTab); $this->pnlTop = new NarroTopPanel(date(sprintf('Y-m-%d 00:00:00', date('d') - date('N') + 1)), $this); $pnlDummy = new QPanel($this->pnlTab); $pnlDummy = new QPanel($this->pnlTab); $arrHeaders = array(t('Projects'), NarroLink::Translate(0, '', NarroTranslatePanel::SHOW_NOT_TRANSLATED, '', 0, 0, 10, 0, 0, t('Translate')), NarroLink::Review(0, '', NarroTranslatePanel::SHOW_NOT_APPROVED, '', 0, 0, 10, 0, 0, t('Review'))); /** * Do not show the langauge tab if only two languages are active (source and target * Unless the user is an administrator and might want to set another one active */ if (NarroLanguage::CountAllActive() > 2 || QApplication::HasPermission('Administrator')) { $pnlDummy = new QPanel($this->pnlTab); $arrHeaders[] = NarroLink::LanguageList(t('Languages')); } $pnlDummy = new QPanel($this->pnlTab); $arrHeaders[] = NarroLink::UserList('', t('Users')); $pnlDummy = new QPanel($this->pnlTab); $arrHeaders[] = NarroLink::RoleList(0, '', t('Roles')); if (QApplication::HasPermissionForThisLang('Administrator')) { $pnlDummy = new QPanel($this->pnlTab); $arrHeaders[] = NarroLink::Log('', t('Application Log')); } $this->pnlTab->Headers = $arrHeaders; }
protected function Form_Create() { parent::Form_Create(); if (QApplication::GetUserId() == NarroUser::ANONYMOUS_USER_ID) { QApplication::Redirect(NarroLink::ProjectList()); exit; } if (QApplication::GetUserId() != QApplication::QueryString('u') && QApplication::HasPermissionForThisLang('Can manage users', null)) { $this->objUser = NarroUser::Load(QApplication::QueryString('u')); } if (!$this->objUser instanceof NarroUser) { $this->objUser = QApplication::$User; } $this->pnlBreadcrumb->setElements(NarroLink::ProjectList(t('Projects')), NarroLink::UserList('', t('Users')), $this->objUser->RealName); $this->pnlTab = new QTabs($this); new QPanel($this->pnlTab); $arrHeaders[] = NarroLink::UserProfile($this->objUser->UserId, t('Profile')); if (QApplication::GetUserId() == $this->objUser->UserId || QApplication::HasPermissionForThisLang('Can manage users', null)) { new QPanel($this->pnlTab); $arrHeaders[] = NarroLink::UserPreferences($this->objUser->UserId, t('Preferences')); } new QPanel($this->pnlTab); $arrHeaders[] = NarroLink::UserRole($this->objUser->UserId, t('Roles')); if (QApplication::GetUserId() == $this->objUser->UserId || QApplication::HasPermissionForThisLang('Can manage users', null)) { $this->pnlUser = new NarroUserEditPanel($this->objUser, $this->pnlTab); $arrHeaders[] = NarroLink::UserEdit($this->objUser->UserId, t('Edit')); $this->pnlTab->Selected = count($arrHeaders) - 1; } $this->pnlTab->Headers = $arrHeaders; }
public function ExportFile($strTemplateFile, $strTranslatedFile) { if ($strTranslatedFile != $this->objProject->DefaultTranslationPath . '/' . $this->objFile->FilePath && QApplication::HasPermissionForThisLang('Can import project', $this->objProject->ProjectId)) { if (file_exists($this->objProject->DefaultTranslationPath . '/' . $this->objFile->FilePath)) { copy($this->objProject->DefaultTranslationPath . '/' . $this->objFile->FilePath, $strTranslatedFile); } else { copy($strTemplateFile, $strTranslatedFile); } } }
protected function Form_Create() { parent::Form_Create(); if (QApplication::QueryString('p') == 0) { $this->pnlMainTab = new QTabs($this); $pnlDummy = new QPanel($this->pnlMainTab); $arrHeaders[] = NarroLink::ProjectList(t('Projects')); $pnlDummy = new QPanel($this->pnlMainTab); $arrHeaders[] = NarroLink::Translate(0, '', NarroTranslatePanel::SHOW_NOT_APPROVED, '', 0, 0, 10, 0, 0, t('Translate')); $this->pnlReview = new NarroTranslatePanel($this->pnlMainTab); $arrHeaders[] = t('Review'); $this->pnlMainTab->Selected = count($arrHeaders) - 1; if (NarroLanguage::CountAllActive() > 2 || QApplication::HasPermission('Administrator')) { $pnlDummy = new QPanel($this->pnlMainTab); $arrHeaders[] = NarroLink::LanguageList(t('Languages')); } $pnlDummy = new QPanel($this->pnlMainTab); $arrHeaders[] = NarroLink::UserList('', t('Users')); $pnlDummy = new QPanel($this->pnlMainTab); $arrHeaders[] = NarroLink::RoleList(0, '', t('Roles')); if (QApplication::HasPermissionForThisLang('Administrator')) { $pnlDummy = new QPanel($this->pnlMainTab); $arrHeaders[] = NarroLink::Log('', t('Application Log')); } $this->pnlMainTab->Headers = $arrHeaders; } else { $pnlDummy = new QPanel($this->pnlMainTab); $arrHeaders[] = NarroLink::Project($this->objProject->ProjectId, t('Overview')); if ($this->objProject instanceof NarroProject && QApplication::HasPermissionForThisLang('Can edit project', $this->objProject->ProjectId)) { $pnlDummy = new QPanel($this->pnlMainTab); $arrHeaders[] = NarroLink::ProjectEdit($this->objProject->ProjectId, t('Edit')); } $pnlDummy = new QPanel($this->pnlMainTab); $arrHeaders[] = NarroLink::Translate($this->objProject->ProjectId, '', NarroTranslatePanel::SHOW_NOT_TRANSLATED, '', 0, 0, 10, 0, 0, t('Translate')); $this->pnlReview = new NarroTranslatePanel($this->pnlMainTab); $arrHeaders[] = t('Review'); $this->pnlMainTab->Selected = count($arrHeaders) - 1; $pnlDummy = new QPanel($this->pnlMainTab); $arrHeaders[] = NarroLink::ProjectFileList($this->objProject->ProjectId, '', '', t('Files')); $pnlDummy = new QPanel($this->pnlMainTab); $arrHeaders[] = NarroLink::ProjectLanguages($this->objProject->ProjectId, t('Languages')); if (QApplication::HasPermissionForThisLang('Can import project', $this->objProject->ProjectId)) { $pnlDummy = new QPanel($this->pnlMainTab); $arrHeaders[] = NarroLink::ProjectImport($this->objProject->ProjectId, t('Import')); } if (QApplication::HasPermissionForThisLang('Can export project', $this->objProject->ProjectId)) { $pnlDummy = new QPanel($this->pnlMainTab); $arrHeaders[] = NarroLink::ProjectExport($this->objProject->ProjectId, t('Export')); } $this->pnlMainTab->Headers = $arrHeaders; } }
public function __construct(NarroUser $objUser, $objParentObject, $strControlId = null) { // Call the Parent try { parent::__construct($objParentObject, $strControlId); } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; } $this->strTemplate = dirname(__FILE__) . '/' . __CLASS__ . '.tpl.php'; $this->objUser = $objUser; $this->pnlTranslatedPerProjectPie = new QDatabasePieChart($this); $this->pnlTranslatedPerProjectPie->Query = sprintf(' SELECT narro_project.project_name AS label, COUNT(narro_suggestion.suggestion_id) AS cnt FROM narro_suggestion, narro_context, narro_project WHERE narro_context.text_id = narro_suggestion.text_id AND narro_project.project_id = narro_context.project_id AND narro_suggestion.language_id=%d AND narro_suggestion.user_id=%d GROUP BY narro_context.project_id', QApplication::GetLanguageId(), $this->objUser->UserId); $intSuggestionCount = NarroSuggestion::CountByUserId($this->objUser->UserId); $this->pnlTranslatedPerProjectPie->Total = $intSuggestionCount; $this->pnlTranslatedPerProjectPie->MinimumDataValue = 0; $this->pnlApprovedPie = new QPieChart($this); $this->pnlApprovedPie->Total = $this->pnlTranslatedPerProjectPie->Total; $this->pnlApprovedPie->MinimumDataValue = 0; $objDatabase = NarroContextInfo::GetDatabase(); $strQuery = sprintf("\n SELECT\n DISTINCT narro_context_info.valid_suggestion_id\n FROM\n narro_context_info, narro_suggestion\n WHERE\n narro_context_info.valid_suggestion_id=narro_suggestion.suggestion_id AND\n narro_suggestion.user_id=%d", $this->objUser->UserId); $objDbResult = $objDatabase->Query($strQuery); $intValidSuggestionCount = $objDbResult->CountRows(); $this->pnlApprovedPie->Data = array(t('Approved') => $intValidSuggestionCount, t('Not approved') => $intSuggestionCount - $intValidSuggestionCount); $this->tabActivity = new QTabs($this); $this->dtgSuggestions_Create(); $arrHeaders[] = t('Translations'); $this->dtgReviews_Create(); $arrHeaders[] = t('Reviews'); $this->dtgComments_Create(); $arrHeaders[] = t('Comments'); $this->dtgVotes_Create(); $arrHeaders[] = t('Votes'); if (QApplication::HasPermissionForThisLang('Administrator') || QApplication::GetUserId() == $this->objUser->UserId) { $this->dtgLog_Create(); $arrHeaders[] = t('Logged messages'); } $this->tabActivity->Headers = $arrHeaders; }
public function __construct(NarroFile $objFile, $objParentObject, $strControlId = null) { parent::__construct($objParentObject, $strControlId); $this->objFile = $objFile; $this->btnExport = new QButton($this); $this->btnExport->Text = t('Download'); $this->btnExport->ActionParameter = $this->objFile->FileId; $this->btnExport->AddAction(new QClickEvent(), new QServerControlAction($this, 'btnExport_Click')); $strTemplateFile = $this->objFile->Project->DefaultTemplatePath . $this->objFile->FilePath; if (file_exists($strTemplateFile) && (filesize($strTemplateFile) < __MAXIMUM_FILE_SIZE_TO_EXPORT__ || QApplication::HasPermissionForThisLang('Can export file', $this->objFile->ProjectId)) && file_exists($strTemplateFile)) { $this->blnDisplay = true; } else { $this->blnDisplay = false; } $this->fileToUpload = new QFileControl($this); }
protected function Form_Create() { parent::Form_Create(); $this->pnlTab = new QTabPanel($this); $this->pnlTab->UseAjax = false; $this->pnlRoleTab = new QTabPanel($this->pnlTab); $this->pnlRoleEdit = new NarroRoleEditPanel($this->pnlRoleTab, NarroRole::Load(QApplication::QueryString('rid'))); $this->pnlRoleTab->addTab(new QPanel($this->pnlRoleTab), t('List'), NarroLink::RoleList()); $this->pnlRoleTab->addTab($this->pnlRoleEdit, QApplication::QueryString('lid') ? t('Edit') : t('Add')); $this->pnlTab->addTab(new QPanel($this->pnlTab), t('Projects'), NarroLink::ProjectList()); $this->pnlTab->addTab(new QPanel($this->pnlTab), t('Translate'), NarroLink::Translate(0, '', NarroTranslatePanel::SHOW_ALL, '', 0, 0, 10, 0, 0)); $this->pnlTab->addTab(new QPanel($this->pnlTab), t('Languages'), NarroLink::LanguageList()); $this->pnlTab->addTab(new QPanel($this->pnlTab), t('Users'), NarroLink::UserList()); $this->pnlTab->addTab($this->pnlRoleTab, t('Roles')); $this->pnlTab->SelectedTab = 4; $this->pnlRoleTab->SelectedTab = 1; $this->pnlTab = new QTabs($this); $pnlDummy = new QPanel($this->pnlTab); $arrHeaders[] = NarroLink::ProjectList(t('Projects')); $pnlDummy = new QPanel($this->pnlTab); $arrHeaders[] = NarroLink::Translate(0, '', NarroTranslatePanel::SHOW_NOT_TRANSLATED, '', 0, 0, 10, 0, 0, t('Translate')); $pnlDummy = new QPanel($this->pnlTab); $arrHeaders[] = NarroLink::Review(0, '', NarroTranslatePanel::SHOW_NOT_APPROVED, '', 0, 0, 10, 0, 0, t('Translate')); if (NarroLanguage::CountAllActive() > 2 || QApplication::HasPermission('Administrator')) { $pnlDummy = new QPanel($this->pnlTab); $arrHeaders[] = NarroLink::LanguageList(t('Languages')); } $pnlDummy = new QPanel($this->pnlTab); $arrHeaders[] = NarroLink::UserList('', t('Users')); $this->pnlRoleTab = new QTabs($this->pnlTab); new QPanel($this->pnlRoleTab); $arrRoleHeaders[] = NarroLink::RoleList(0, '', t('List')); if (QApplication::HasPermissionForThisLang('Can add role')) { $pnlDummy = new NarroRoleEditPanel($this->pnlRoleTab, NarroRole::Load(QApplication::QueryString('rid'))); $arrRoleHeaders[] = NarroLink::RoleEdit(null, t('Add')); $this->pnlRoleTab->Selected = count($arrRoleHeaders) - 1; } $this->pnlRoleTab->Headers = $arrRoleHeaders; $arrHeaders[] = t('Roles'); $this->pnlTab->Selected = count($arrHeaders) - 1; if (QApplication::HasPermissionForThisLang('Administrator')) { $pnlDummy = new QPanel($this->pnlTab); $arrHeaders[] = NarroLink::Log('', t('Application Log')); } $this->pnlTab->Headers = $arrHeaders; }
public function __construct($objParentObject, $strControlId = null) { // Call the Parent try { parent::__construct($objParentObject, $strControlId); } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; } $this->strTemplate = __NARRO_INCLUDES__ . '/narro/panel/NarroUserListPanel.tpl.php'; $colActions = new QDataGridColumn(QApplication::Translate('Actions'), '<?= $_CONTROL->ParentControl->dtgUser_ActionsColumn_Render($_ITEM) ?>'); $colActions->HtmlEntities = false; // Setup DataGrid $this->dtgUser = new NarroUserDataGrid($this); $this->dtgUser->UseAjax = QApplication::$UseAjax; $this->dtgUser->ShowHeader = true; $this->dtgUser->ShowFilter = false; $this->dtgUser->Title = t('Users'); // Datagrid Paginator $this->dtgUser->Paginator = new QPaginator($this->dtgUser); $this->dtgUser->PaginatorAlternate = new QPaginator($this->dtgUser); $this->dtgUser->ItemsPerPage = QApplication::$User->GetPreferenceValueByName('Items per page'); // Specify the local databind method this datagrid will use $this->dtgUser->SetDataBinder('dtgUser_Bind', $this); $this->dtgUser->MetaAddColumn(QQN::NarroUser()->RealName, sprintf('Name="%s"', t('Real name')), 'Html="<?= $_CONTROL->ParentControl->dtgUser_RealNameColumn_Render($_ITEM) ?>"', 'HtmlEntities=false'); $this->dtgUser->MetaAddColumn(QQN::NarroUser()->Username, sprintf('Name="%s"', t('Username')), 'Html="<?= $_CONTROL->ParentControl->dtgUser_UsernameColumn_Render($_ITEM) ?>"', 'HtmlEntities=false'); if (QApplication::HasPermissionForThisLang('Administrator', null)) { $this->dtgUser->MetaAddColumn(QQN::NarroUser()->Email, sprintf('Name="%s"', t('Email')), 'Html="<?= $_CONTROL->ParentControl->dtgUser_EmailColumn_Render($_ITEM) ?>"', 'HtmlEntities=false'); } if (QApplication::HasPermissionForThisLang('Can manage users', null)) { $this->dtgUser->AddColumn($colActions); } $this->dtgUser->SortColumnIndex = 0; $this->txtSearch = new QTextBox($this); $this->btnSearch = new QButton($this); $this->btnSearch->Text = t('Search'); $this->btnSearch->PrimaryButton = true; if (QApplication::$UseAjax) { $this->btnSearch->AddAction(new QClickEvent(), new QAjaxControlAction($this, 'dtgUser_Bind')); } else { $this->btnSearch->AddAction(new QClickEvent(), new QServerControlAction($this, 'dtgUser_Bind')); } }
public function btnImport_Click($strFormId, $strControlId, $strParameter) { if (!$this->fileToUpload->Display) { $this->fileToUpload->Display = true; return false; } $objFileImporter = NarroFileType::GetFileImporter($this->objNarroFile->TypeId); $objFileImporter->User = QApplication::$User; $objFileImporter->Project = $this->objNarroFile->Project; $objFileImporter->SourceLanguage = NarroLanguage::LoadByLanguageCode(NarroLanguage::SOURCE_LANGUAGE_CODE); $objFileImporter->TargetLanguage = QApplication::$TargetLanguage; $objFileImporter->CheckEqual = true; $objFileImporter->File = $this->objNarroFile; $objFileImporter->OnlySuggestions = !QApplication::HasPermissionForThisLang('Can approve', $this->objNarroFile->ProjectId); $objFileImporter->ApproveAlreadyApproved = QApplication::HasPermissionForThisLang('Can approve', $this->objNarroFile->ProjectId); $objFileImporter->Approve = QApplication::HasPermissionForThisLang('Can approve', $this->objNarroFile->ProjectId); $strTempFileName = tempnam(__TMP_PATH__, QApplication::$TargetLanguage->LanguageCode); $objFileImporter->ImportFile($this->objNarroFile->Project->DefaultTemplatePath . $this->objNarroFile->FilePath, $this->fileToUpload->File); }
public function __construct(NarroText $objText, $objParentObject, $strControlId = null) { // Call the Parent try { parent::__construct($objParentObject, $strControlId); } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; } $this->blnAutoRenderChildren = true; $this->intTextId = $objText->TextId; $this->strText = sprintf('<span class="instructions">%s</span>', t('User comments')); $this->dtgComments = new NarroTextCommentDataGrid($this); $colComment = $this->dtgComments->MetaAddColumn(QQN::NarroTextComment()->CommentText); $colComment->HtmlEntities = false; $colComment->Html = '<?=$_CONTROL->ParentControl->colComment_Render($_ITEM)?>'; $this->dtgComments->ShowFilter = false; $this->dtgComments->ShowHeader = false; $this->dtgComments->AdditionalConditions = QQ::Equal(QQN::NarroTextComment()->TextId, $objText->TextId); $this->dtgComments->AdditionalClauses = array(QQ::OrderBy(QQN::NarroTextComment()->Created, 1), QQ::Expand(QQN::NarroTextComment()->Language), QQ::Expand(QQN::NarroTextComment()->User)); $this->txtComment = new QTextBox($this); $this->txtComment->Name = t('Comment'); $this->txtComment->TextMode = QTextMode::MultiLine; $this->txtComment->PreferedRenderMethod = 'Render'; $this->txtComment->Columns = 80; $this->txtComment->ToolTip = t('Enter your comments here'); $this->txtComment->CssClass = 'comment'; $this->txtComment->DisplayStyle = QDisplayStyle::Block; $this->txtComment->Display = QApplication::HasPermissionForThisLang('Can comment'); $this->btnSave = new QImageButton($this); $this->btnSave->AlternateText = t('Add comment'); $this->btnSave->CssClass = 'imgbutton save'; $this->btnSave->ToolTip = $this->btnSave->AlternateText; $this->btnSave->ImageUrl = __NARRO_IMAGE_ASSETS__ . '/comment.png'; $this->btnSave->AddAction(new QClickEvent(), new QAjaxControlAction($this, 'btnSave_Click')); $this->btnSave->Display = QApplication::HasPermissionForThisLang('Can comment'); }
public function btnDelete_Click($strFormId, $strControlId, $strParameter) { if (QApplication::HasPermissionForThisLang('Can delete language', null)) { $this->objNarroLanguage->Delete(); } QApplication::Redirect(NarroLink::LanguageList()); }
public function btnImport_Click($strFormId, $strControlId, $strParameter) { if (!QApplication::HasPermissionForThisLang('Can import project', $this->objProject->ProjectId)) { return false; } $strProcLogFile = __TMP_PATH__ . '/' . $this->objProject->ProjectId . '-' . QApplication::$TargetLanguage->LanguageCode . '-import-process.log'; $strProcPidFile = __TMP_PATH__ . '/' . $this->objProject->ProjectId . '-' . QApplication::$TargetLanguage->LanguageCode . '-import-process.pid'; $strProgressFile = __TMP_PATH__ . '/import-' . $this->objProject->ProjectId . '-' . QApplication::$TargetLanguage->LanguageCode; if ($strParameter == 1) { if (NarroUtils::IsProcessRunning('import', $this->objProject->ProjectId)) { $this->objImportProgress->Translated = NarroProgress::GetProgress($this->objProject->ProjectId, 'import'); $this->objImportProgress->MarkAsModified(); } else { $this->lblImport->Text = t('Import finished.'); if (QApplication::$UseAjax) { QApplication::ExecuteJavaScript('if (typeof lastImportId != \'undefined\') clearInterval(lastImportId)'); } if (file_exists($strProcLogFile) && filesize($strProcLogFile)) { NarroLogger::LogInfo(sprintf('There are messages from the background process: %s', file_get_contents($strProcLogFile))); } if (file_exists($strProcLogFile)) { unlink($strProcLogFile); } if (file_exists($strProcPidFile)) { unlink($strProcPidFile); } if (file_exists($strProgressFile)) { unlink($strProgressFile); } $this->lblImport->Visible = true; $this->btnImport->Visible = true; $this->btnKillProcess->Visible = false; $this->objImportProgress->Translated = 0; $this->objImportProgress->Visible = false; } $this->pnlLogViewer->MarkAsModified(); } elseif ($strParameter == 2) { $this->pnlLogViewer->ProjectId = $this->objProject->ProjectId; $this->pnlLogViewer->LanguageId = QApplication::GetLanguageId(); $this->pnlLogViewer->DateStart = QDateTime::Now(); NarroProgress::ClearProgressFileName($this->objProject->ProjectId, 'import'); set_time_limit(0); if (file_exists($strProcLogFile)) { unlink($strProcLogFile); } if (file_exists($strProcPidFile)) { unlink($strProcPidFile); } if (file_exists($strProgressFile)) { unlink($strProgressFile); } $objNarroImporter = new NarroProjectImporter(); /** * Get boolean options */ $objNarroImporter->CheckEqual = true; $objNarroImporter->Approve = $this->chkApproveImportedTranslations->Checked; $objNarroImporter->ApproveAlreadyApproved = !$this->chkApproveOnlyNotApproved->Checked; $objNarroImporter->OnlySuggestions = !$this->chkImportSourceTexts->Checked; $objNarroImporter->Project = $this->objProject; $objNarroImporter->ImportUnchangedFiles = $this->chkImportUnchangedFiles->Checked; $objNarroImporter->User = QApplication::$User; $objNarroImporter->TargetLanguage = QApplication::$TargetLanguage; $objNarroImporter->SourceLanguage = NarroLanguage::LoadByLanguageCode(NarroLanguage::SOURCE_LANGUAGE_CODE); try { $objNarroImporter->TranslationPath = $this->pnlTranslationsSource->Directory; $objNarroImporter->TemplatePath = $this->objProject->DefaultTemplatePath; } catch (Exception $objEx) { NarroLogger::LogError(sprintf('An error occurred during import: %s', $objEx->getMessage())); $this->lblImport->Text = sprintf(t('Import failed: %s'), $objEx->getMessage()); return false; } try { $objNarroImporter->ImportProject(); } catch (Exception $objEx) { NarroLogger::LogError(sprintf('An error occurred during import: %s', $objEx->getMessage())); $this->lblImport->Text = sprintf(t('Import failed: %s'), $objEx->getMessage()); } $this->lblImport->Visible = true; $this->btnImport->Visible = true; $this->btnKillProcess->Visible = false; $this->objImportProgress->Visible = false; $this->pnlLogViewer->MarkAsModified(); } else { $this->pnlLogViewer->ProjectId = $this->objProject->ProjectId; $this->pnlLogViewer->LanguageId = QApplication::GetLanguageId(); $this->pnlLogViewer->DateStart = QDateTime::Now(); NarroProgress::ClearProgressFileName($this->objProject->ProjectId, 'import'); $this->pnlLogViewer->MarkAsModified(); $this->btnImport->Visible = false; $this->btnKillProcess->Visible = QApplication::HasPermission('Administrator', $this->objProject, QApplication::$TargetLanguage->LanguageCode) && !$this->btnImport->Visible; $this->objImportProgress->Visible = true; $this->objImportProgress->Translated = 0; $this->lblImport->Text = ''; try { $strCommand = sprintf(__PHP_CLI_PATH__ . ' ' . escapeshellarg(sprintf('%s/includes/narro/importer/narro-cli.php', __DOCROOT__ . __SUBDIRECTORY__)) . ' --import --minloglevel 3 --project %d --user %d --check-equal ' . ($this->chkApproveImportedTranslations->Checked ? '--approve ' : '') . ($this->chkImportUnchangedFiles->Checked ? '--import-unchanged-files ' : '') . ($this->chkApproveOnlyNotApproved->Checked ? '' : '--approve-already-approved ') . (!$this->chkImportSourceTexts->Checked || !QApplication::HasPermission('Can import project', $this->objProject->ProjectId) ? '--only-suggestions ' : '') . ' --template-lang %s --translation-lang %s --template-directory %s --translation-directory %s', (int) $this->objProject->ProjectId, (int) QApplication::$User->UserId, escapeshellarg(NarroLanguage::SOURCE_LANGUAGE_CODE), escapeshellarg(QApplication::$TargetLanguage->LanguageCode), escapeshellarg($this->objProject->DefaultTemplatePath), escapeshellarg($this->pnlTranslationsSource->Directory)); } catch (Exception $objEx) { NarroLogger::LogError(sprintf('An error occurred during import: %s', $objEx->getMessage())); $this->lblImport->Text = sprintf(t('Import failed: %s'), $objEx->getMessage()); $this->lblImport->Visible = true; $this->btnImport->Visible = true; $this->btnKillProcess->Visible = QApplication::HasPermission('Administrator', $this->objProject, QApplication::$TargetLanguage->LanguageCode) && !$this->btnImport->Visible; $this->objImportProgress->Translated = 0; $this->objImportProgress->Visible = false; $this->pnlLogViewer->MarkAsModified(); return false; } if (file_exists($strProcLogFile) && is_writable($strProcLogFile)) { unlink($strProcLogFile); } NarroUtils::Exec($strCommand, $arrOutput, $arrError, $intRetVal, true); if ($intRetVal == 0) { if (QApplication::$UseAjax) { QApplication::ExecuteJavaScript(sprintf('lastImportId = setInterval("qc.pA(\'%s\', \'%s\', \'QClickEvent\', \'1\')", %d);', $strFormId, $strControlId, 2000)); } else { $this->btnImport_Click($strFormId, $strControlId, 1); } } else { $this->objImportProgress->Visible = false; NarroLogger::LogError('Failed to launch a background process, there will be no progress displayed, and it might take a while, please wait for more messages'); $this->pnlLogViewer->MarkAsModified(); /** * try importing without launching a background process */ if (QApplication::$UseAjax) { QApplication::ExecuteJavaScript(sprintf('lastImportId = setTimeout("qc.pA(\'%s\', \'%s\', \'QClickEvent\', \'2\')", %d);', $strFormId, $strControlId, 2000)); } else { $this->btnImport_Click($strFormId, $strControlId, 2); } } } }
$_CONTROL->Text->RenderWithError(); $_CONTROL->Translation->RenderWithError(); $_CONTROL->Message->Render(); if ($_CONTROL->SaveIgnoreButton) { $_CONTROL->SaveIgnoreButton->RenderWithError(); } if ($_CONTROL->ContextInfo) { $_CONTROL->ContextInfo->Render(); } if ($_CONTROL->TextAccessKey) { $_CONTROL->TextAccessKey->RenderWithName(); } if ($_CONTROL->TextCommandKey) { $_CONTROL->TextCommandKey->RenderWithName(); } if (QApplication::HasPermissionForThisLang('Can suggest')) { $_CONTROL->CopyButton->Render(); } if ($_CONTROL->KeepUntranslatedButton) { $_CONTROL->KeepUntranslatedButton->Render(); } if (QApplication::HasPermissionForThisLang('Can suggest')) { $_CONTROL->SaveButton->Render(); } $_CONTROL->HelpButton->Render(); if ($_CONTROL->TranslationList) { $_CONTROL->TranslationList->Render(); } if ($_CONTROL->CommentList) { $_CONTROL->CommentList->Render(); }
public function dtgLanguage_Actions_Render(NarroLanguage $objLanguage) { if (QApplication::HasPermissionForThisLang('Can edit language', null)) { return sprintf('<a href="language_edit.php?l=%s&lid=%d">%s</a>', QApplication::$TargetLanguage->LanguageCode, $objLanguage->LanguageId, t('Edit')); } }
public function dtgProjectList_Bind() { if ($this->txtSearch->Text != '') { $arrConditions[] = QQ::Like(QQN::NarroProject()->ProjectName, sprintf('%%%s%%', $this->txtSearch->Text)); } else { $arrConditions[] = QQ::All(); } if (QApplication::HasPermissionForThisLang('Can manage project')) { $arrConditions[] = QQ::All(); } else { $arrConditions[] = QQ::AndCondition(QQ::Equal(QQN::NarroProject()->NarroProjectProgressAsProject->Active, 1), QQ::Equal(QQN::NarroProject()->Active, 1)); } // Setup the $objClauses Array $objClauses = array(QQ::Expand(QQN::NarroProject()->NarroProjectProgressAsProject, QQ::Equal(QQN::NarroProject()->NarroProjectProgressAsProject->LanguageId, QApplication::GetLanguageId()))); // Remember! We need to first set the TotalItemCount, which will affect the calcuation of LimitClause below $this->dtgProjectList->TotalItemCount = NarroProject::QueryCount(QQ::AndCondition($arrConditions), $objClauses); // If a column is selected to be sorted, and if that column has a OrderByClause set on it, then let's add // the OrderByClause to the $objClauses array if ($objClause = $this->dtgProjectList->OrderByClause) { array_push($objClauses, $objClause); } // Add the LimitClause information, as well if ($objClause = $this->dtgProjectList->LimitClause) { array_push($objClauses, $objClause); } // Set the DataSource to be the array of all NarroProjectProgress objects, given the clauses above $this->dtgProjectList->DataSource = NarroProject::QueryArray(QQ::AndCondition($arrConditions), $objClauses); }
public function btnClearLog_Click($strFormId, $strControlId, $strParameter) { if (QApplication::HasPermissionForThisLang('Administrator')) { if (QApplication::HasPermission('Administrator')) { NarroLog::GetDatabase()->NonQuery(sprintf('DELETE FROM narro_log')); } else { NarroLog::GetDatabase()->NonQuery(sprintf('DELETE FROM narro_log WHERE language_id=%d', QApplication::GetLanguageId())); } $this->dtgLog->btnFilterReset_Click($strFormId, $strControlId, $strParameter); $this->dtgLog->Refresh(); } }
public function btnReplace_Click() { if (!QApplication::HasPermissionForThisLang('Can approve')) { return false; } if ($this->txtReplace->Display == false) { $this->txtReplace->Display = true; } else { if ($this->txtSearch->Text == '') { return false; } if ($this->txtReplace->Text == '') { return false; } $strQuery = NarroContextInfo::GetQueryForConditions($objQueryBuilder, QQ::AndCondition($this->arrConditions), $this->arrClauses); $objDbResult = NarroContextInfo::GetDatabase()->Query($strQuery); if ($objDbResult) { $intReplaceCnt = 0; $intApproved = 0; $intTranslations = 0; $arrProcessed = array(); while ($objDbRow = $objDbResult->GetNextRow()) { $objContextInfo = NarroContextInfo::InstantiateDbRow($objDbRow, null, null, null, $objQueryBuilder->ColumnAliasArray); if (in_array($objContextInfo->ContextInfoId, $arrProcessed)) { continue; } else { $arrProcessed[] = $objContextInfo->ContextInfoId; } $objReplaceSuggestion = null; if (preg_match("/^'.*'\$/", $this->txtSearch->Text)) { $strToReplace = substr($this->txtSearch->Text, 1, -1); } else { $strToReplace = $this->txtSearch->Text; } if ($strToReplace == $objContextInfo->Context->Text->TextValue) { $objReplaceSuggestion = NarroSuggestion::LoadByTextIdLanguageIdSuggestionValueMd5($objContextInfo->Context->TextId, QApplication::GetLanguageId(), md5($this->txtReplace->Text)); if (!$objReplaceSuggestion) { $objSuggestion = new NarroSuggestion(); $objSuggestion->UserId = QApplication::GetUserId(); $objSuggestion->TextId = $objContextInfo->Context->TextId; $objSuggestion->LanguageId = QApplication::GetLanguageId(); $objSuggestion->SuggestionValue = $this->txtReplace->Text; $objSuggestion->HasComments = 0; $objSuggestion->IsImported = 0; $objSuggestion->Created = QDateTime::Now(); $objSuggestion->Modified = null; $objSuggestion->Save(); $intTranslations++; $objReplaceSuggestion = $objSuggestion; } } if ($objReplaceSuggestion instanceof NarroSuggestion) { $intReplaceCnt++; if ($objContextInfo->ValidSuggestionId != $objReplaceSuggestion->SuggestionId || $this->chkApprove->Checked) { if ($objContextInfo->ValidSuggestionId == null) { $intApproved++; } $objContextInfo->ValidSuggestionId = $objReplaceSuggestion->SuggestionId; $objContextInfo->ValidatorUserId = QApplication::GetUserId(); $objContextInfo->Modified = QDateTime::Now(); $objContextInfo->Save(); } } } $this->dtrText->RemoveChildControls(true); $this->btnReplace->Refresh(); QApplication::ExecuteJavaScript(sprintf('jQuery(\'#%s\').after(\' <small style="padding: 2px;" class="ui-state-highlight ui-corner-all"><span style="width:16px; height: 16px; display:inline-block" class="ui-icon ui-icon-info"></span> %s.</small>\')', $this->btnReplace->ControlId, sprintf(t('%d occurences of "%s" translated with "%s", out of which %d were already approved, %d translations added.'), $intReplaceCnt, $strToReplace, $this->txtReplace->Text, $intApproved, $intTranslations))); } } }
public function btnKeepUntranslated_Click($strFormId, $strControlId, $strParameter) { if (QApplication::HasPermissionForThisLang('Can suggest', $this->objContextInfo->Context->ProjectId)) { $this->txtTranslation->Text = $this->objContextInfo->Context->Text->TextValue; $this->chkChanged->Checked = true; $objSuggestion = $this->btnSave_Click($strFormId, $strControlId, $strParameter); } if (!QApplication::HasPermissionForThisLang('Can approve', $this->objContextInfo->Context->ProjectId) && $objSuggestion instanceof NarroSuggestion) { $this->btnVote_Click($strFormId, $strControlId, $objSuggestion->SuggestionId); } $this->btnHelp_Click($strFormId, $strControlId, $strParameter); }
public function btnExport_Click($strFormId, $strControlId, $strParameter) { if (!QApplication::HasPermissionForThisLang('Can export project', $this->objProject->ProjectId)) { return false; } $strProcLogFile = __TMP_PATH__ . '/' . $this->objProject->ProjectId . '-' . QApplication::$TargetLanguage->LanguageCode . '-export-process.log'; if ($strParameter == 1) { if (NarroUtils::IsProcessRunning('export', $this->objProject->ProjectId)) { $this->objExportProgress->Translated = NarroProgress::GetProgress($this->objProject->ProjectId, 'export'); $this->objExportProgress->MarkAsModified(); } else { $this->lblExport->Text = t('Export finished.'); if (QApplication::$UseAjax) { QApplication::ExecuteJavaScript('if (typeof lastExportId != \'undefined\') clearInterval(lastExportId)'); } if (file_exists($strProcLogFile) && filesize($strProcLogFile)) { NarroLogger::LogInfo(sprintf('There are messages from the background process: %s', file_get_contents($strProcLogFile))); } $this->lblExport->Visible = true; $this->btnExport->Visible = true; $this->btnKillProcess->Visible = false; $this->objExportProgress->Translated = 0; $this->objExportProgress->Visible = false; QApplication::$PluginHandler->DisplayExportMessage($this->objProject); if (is_array(QApplication::$PluginHandler->PluginReturnValues)) { foreach (QApplication::$PluginHandler->PluginReturnValues as $strPluginName => $mixReturnValue) { if (count($mixReturnValue) == 2 && $mixReturnValue[0] instanceof NarroProject && is_string($mixReturnValue[1]) && $mixReturnValue[1] != '') { $this->lblExport->Text .= sprintf('<br /><span class="info"><b>%s</b>: %s</span>', $strPluginName, nl2br($mixReturnValue[1])); } } } } $this->pnlLogViewer->MarkAsModified(); } elseif ($strParameter == 2) { $this->pnlLogViewer->DateStart = QDateTime::Now(); $this->pnlLogViewer->ProjectId = $this->objProject->ProjectId; $this->pnlLogViewer->LanguageId = QApplication::GetLanguageId(); NarroProgress::ClearProgressFileName($this->objProject->ProjectId, 'import'); set_time_limit(0); if ($this->chkCleanDirectory->Checked) { NarroUtils::RecursiveDelete($this->objProject->DefaultTranslationPath . '/*'); } $objNarroImporter = new NarroProjectImporter(); /** * Get boolean options */ $objNarroImporter->ExportedSuggestion = $this->lstExportSuggestionType->SelectedValue; $objNarroImporter->Project = $this->objProject; $objNarroImporter->ExportAuthorList = $this->txtAuthor->Text; $objNarroImporter->User = QApplication::$User; $objNarroImporter->TargetLanguage = QApplication::$TargetLanguage; $objNarroImporter->SourceLanguage = NarroLanguage::LoadByLanguageCode(NarroLanguage::SOURCE_LANGUAGE_CODE); try { $objNarroImporter->TranslationPath = $this->objProject->DefaultTranslationPath; $objNarroImporter->TemplatePath = $this->objProject->DefaultTemplatePath; } catch (Exception $objEx) { NarroLogger::LogError(sprintf('An error occurred during export: %s', $objEx->getMessage())); $this->lblExport->Text = t('Export failed.'); } try { $objNarroImporter->ExportProject(); } catch (Exception $objEx) { NarroLogger::LogError(sprintf('An error occurred during export: %s', $objEx->getMessage())); $this->lblExport->Text = t('Export failed.'); } $this->lblExport->Visible = true; $this->btnExport->Visible = true; $this->btnKillProcess->Visible = false; $this->objExportProgress->Visible = false; $this->pnlLogViewer->MarkAsModified(); } else { $this->pnlLogViewer->DateStart = QDateTime::Now(); $this->pnlLogViewer->ProjectId = $this->objProject->ProjectId; $this->pnlLogViewer->LanguageId = QApplication::GetLanguageId(); if ($this->chkCleanDirectory->Checked) { NarroUtils::RecursiveDelete($this->objProject->DefaultTranslationPath . '/*'); } $this->btnExport->Visible = false; $this->btnKillProcess->Visible = $this->btnKillProcess->Visible = QApplication::HasPermission('Administrator', $this->objProject, QApplication::$TargetLanguage->LanguageCode); $this->objExportProgress->Visible = true; $this->objExportProgress->Translated = 0; $this->lblExport->Text = ''; try { $strCommand = sprintf('%s %s --export --project %d --user %d --template-lang %s --translation-lang %s --template-directory %s --translation-directory %s --exported-suggestion %d --export-author-list %s', __PHP_CLI_PATH__, escapeshellarg(sprintf('%s/includes/narro/importer/narro-cli.php', __DOCROOT__ . __SUBDIRECTORY__)), (int) $this->objProject->ProjectId, (int) QApplication::$User->UserId, escapeshellarg(NarroLanguage::SOURCE_LANGUAGE_CODE), escapeshellarg(QApplication::$TargetLanguage->LanguageCode), escapeshellarg($this->objProject->DefaultTemplatePath), escapeshellarg($this->objProject->DefaultTranslationPath), (int) $this->lstExportSuggestionType->SelectedValue, escapeshellarg($this->txtAuthor->Text)); } catch (Exception $objEx) { NarroLogger::LogError(sprintf('An error occurred during export: %s', $objEx->getMessage())); $this->lblExport->Text = t('Export failed.'); $this->lblExport->Visible = true; $this->btnExport->Visible = true; $this->btnKillProcess->Visible = false; $this->objExportProgress->Translated = 0; $this->objExportProgress->Visible = false; $this->pnlLogViewer->MarkAsModified(); return false; } if (file_exists($strProcLogFile) && is_writable($strProcLogFile)) { unlink($strProcLogFile); } $mixProcess = proc_open("{$strCommand} &", array(2 => array("file", $strProcLogFile, 'a')), $foo); if ($mixProcess) { if (QApplication::$UseAjax) { QApplication::ExecuteJavaScript(sprintf('lastExportId = setInterval("qc.pA(\'%s\', \'%s\', \'QClickEvent\', \'1\')", %d);', $strFormId, $strControlId, 2000)); } else { $this->btnExport_Click($strFormId, $strControlId, 1); } } else { $this->objExportProgress->Visible = false; NarroLogger::LogError('Failed to launch a background process, there will be no progress displayed, and it might take a while, please wait for more messages'); $this->pnlLogViewer->MarkAsModified(); /** * try exporting without launching a background process */ if (QApplication::$UseAjax) { QApplication::ExecuteJavaScript(sprintf('lastExportId = setTimeout("qc.pA(\'%s\', \'%s\', \'QClickEvent\', \'2\')", %d);', $strFormId, $strControlId, 2000)); } else { $this->btnExport_Click($strFormId, $strControlId, 2); } } } }