mirror of
https://github.com/humhub/humhub.git
synced 2025-01-17 22:28:51 +01:00
Merge branch 'master' into v1.3-dev
# Conflicts: # composer.json # protected/humhub/modules/admin/controllers/PendingRegistrationsController.php # protected/humhub/modules/admin/controllers/UserController.php # protected/humhub/modules/admin/views/pending-registrations/index.php # protected/humhub/modules/admin/views/user/index.php # protected/humhub/modules/space/behaviors/SpaceController.php # protected/humhub/modules/space/behaviors/SpaceModelMembership.php # static/less/file.less # themes/HumHub/css/theme.css
This commit is contained in:
commit
708af2787b
37
.travis.yml
37
.travis.yml
@ -4,10 +4,14 @@ php:
|
||||
- 5.6
|
||||
- 7.0
|
||||
- 7.1
|
||||
|
||||
matrix:
|
||||
fast_finish: true
|
||||
|
||||
dist: precise
|
||||
dist: trusty
|
||||
|
||||
addons:
|
||||
chrome: stable
|
||||
|
||||
# faster builds on new travis setup not using sudo
|
||||
sudo: false
|
||||
@ -20,22 +24,23 @@ cache:
|
||||
services: mysql
|
||||
|
||||
before_install:
|
||||
- phantomjs -v
|
||||
- echo "extension=ldap.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
|
||||
- wget https://chromedriver.storage.googleapis.com/2.35/chromedriver_linux64.zip
|
||||
- unzip -d $HOME chromedriver_linux64.zip
|
||||
- $HOME/chromedriver --url-base=/wd/hub &
|
||||
|
||||
install:
|
||||
#- wget http://chromedriver.storage.googleapis.com/2.10/chromedriver_linux64.zip
|
||||
#- unzip chromedriver_linux64.zip -d ./
|
||||
#- export CHROME_BIN=chromium-browser
|
||||
# Start xvfb for gui test
|
||||
- "export DISPLAY=:99.0"
|
||||
- "sh -e /etc/init.d/xvfb start"
|
||||
#- "export DISPLAY=:99.0"
|
||||
#- "sh -e /etc/init.d/xvfb start"
|
||||
# Download and start selenium
|
||||
- sleep 3 # give xvfb some time to start
|
||||
- echo "Download selenium-server-standalone jar file"
|
||||
- wget -c -nc --retry-connrefused --tries=0 http://goo.gl/EoH85x -O selenium-server-standalone.jar
|
||||
- echo "Run selenium server - background process"
|
||||
- nohup bash -c "java -jar selenium-server-standalone.jar &" && sleep 1; cat nohup.out
|
||||
#- sleep 3 # give xvfb some time to start
|
||||
#- echo "Download selenium-server-standalone jar file"
|
||||
#- wget -c -nc --retry-connrefused --tries=0 http://goo.gl/EoH85x -O selenium-server-standalone.jar
|
||||
#- echo "Run selenium server - background process"
|
||||
#- nohup bash -c "java -jar selenium-server-standalone.jar &" && sleep 1; cat nohup.out
|
||||
# Run Composer update
|
||||
- travis_retry composer self-update && composer --version
|
||||
- travis_retry composer global require "fxp/composer-asset-plugin:~1.3"
|
||||
@ -45,20 +50,18 @@ install:
|
||||
# Install test environment
|
||||
- |
|
||||
mysql -e 'CREATE DATABASE `humhub_test` CHARACTER SET utf8 COLLATE utf8_general_ci;'
|
||||
cd protected/humhub/tests/codeception/bin
|
||||
php yii migrate/up --includeModuleMigrations=1 --interactive=0
|
||||
php yii installer/auto
|
||||
php yii search/rebuild
|
||||
cd ../../../../..
|
||||
cd protected/humhub/tests
|
||||
php codeception/bin/yii migrate/up --includeModuleMigrations=1 --interactive=0
|
||||
php codeception/bin/yii installer/auto
|
||||
php codeception/bin/yii search/rebuild
|
||||
codecept build
|
||||
cd ../../../
|
||||
|
||||
script:
|
||||
- php -S 127.0.0.1:8080 > /dev/null 2>&1 &
|
||||
- php -S 127.0.0.1:8080 &> /dev/null &
|
||||
#- phantomjs --webdriver=4444 > /dev/null 2>&1 & # Not in use since phantomjs hangs with QIODevice::write (QTcpSocket): device not open
|
||||
- sleep 5
|
||||
- curl http://127.0.0.1:8080/index-test.php
|
||||
- curl -I http://127.0.0.1:8080/index-test.php
|
||||
- |
|
||||
cd protected/humhub/tests/
|
||||
codecept run
|
||||
|
@ -22,8 +22,7 @@
|
||||
"yiisoft/yii2-httpclient": "~2.0.0",
|
||||
"raoul2000/yii2-jcrop-widget": "*",
|
||||
"kartik-v/yii2-widgets": "*",
|
||||
"phpoffice/phpexcel": "*",
|
||||
"cebe/markdown": "~1.0.2",
|
||||
"cebe/markdown": "1.0.2",
|
||||
"yiisoft/yii2-jui": "~2.0.0",
|
||||
"zendframework/zend-http": "*",
|
||||
"jbroadway/urlify": "^1.0",
|
||||
@ -57,9 +56,10 @@
|
||||
"yiisoft/yii2-redis": "^2.0",
|
||||
"firebase/php-jwt": "^5.0",
|
||||
"npm-asset/socket.io-client": "^2.0"
|
||||
"phpoffice/phpspreadsheet": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"codeception/codeception": "*",
|
||||
"codeception/codeception": "~2.3",
|
||||
"yiisoft/yii2-debug": "~2.0.0",
|
||||
"yiisoft/yii2-gii": "~2.0.0",
|
||||
"yiisoft/yii2-faker": "~2.0.0",
|
||||
|
91
protected/humhub/components/export/Column.php
Normal file
91
protected/humhub/components/export/Column.php
Normal file
@ -0,0 +1,91 @@
|
||||
<?php
|
||||
/**
|
||||
* @link https://www.humhub.org/
|
||||
* @copyright Copyright (c) 2018 HumHub GmbH & Co. KG
|
||||
* @license https://www.humhub.com/licences
|
||||
*/
|
||||
|
||||
namespace humhub\components\export;
|
||||
|
||||
use yii\base\Object;
|
||||
|
||||
/**
|
||||
* Column is the base class of all [[SpreadsheetExport]] column classes.
|
||||
*
|
||||
* This class was originally developed by Paul Klimov <klimov.paul@gmail.com> and his
|
||||
* project csv-grid (https://github.com/yii2tech/csv-grid).
|
||||
*/
|
||||
class Column extends Object
|
||||
{
|
||||
/**
|
||||
* @var SpreadsheetExport the grid view object that owns this column.
|
||||
*/
|
||||
public $grid;
|
||||
/**
|
||||
* @var string the header cell content. Note that it will not be HTML-encoded.
|
||||
*/
|
||||
public $header;
|
||||
/**
|
||||
* @var string the footer cell content. Note that it will not be HTML-encoded.
|
||||
*/
|
||||
public $footer;
|
||||
/**
|
||||
* @var callable This is a callable that will be used to generate the content of each cell.
|
||||
* The signature of the function should be the following: `function ($model, $key, $index, $column)`.
|
||||
* Where `$model`, `$key`, and `$index` refer to the model, key and index of the row currently being rendered
|
||||
* and `$column` is a reference to the [[Column]] object.
|
||||
*/
|
||||
public $content;
|
||||
/**
|
||||
* @var bool whether this column is visible. Defaults to true.
|
||||
*/
|
||||
public $visible = true;
|
||||
/**
|
||||
* @var string|null specify data type
|
||||
* @see https://phpspreadsheet.readthedocs.io/en/develop/topics/accessing-cells/#excel-datatypes
|
||||
*/
|
||||
public $dataType = null;
|
||||
/**
|
||||
* @var array containing style information
|
||||
* @see https://phpspreadsheet.readthedocs.io/en/develop/topics/recipes/#styles
|
||||
*/
|
||||
public $styles = [];
|
||||
|
||||
/**
|
||||
* Renders the header cell content.
|
||||
* The default implementation simply renders [[header]].
|
||||
* This method may be overridden to customize the rendering of the header cell.
|
||||
* @return string the rendering result
|
||||
*/
|
||||
public function renderHeaderCellContent()
|
||||
{
|
||||
return trim($this->header) !== '' ? $this->header : $this->grid->emptyCell;
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders the footer cell content.
|
||||
* The default implementation simply renders [[footer]].
|
||||
* This method may be overridden to customize the rendering of the footer cell.
|
||||
* @return string the rendering result
|
||||
*/
|
||||
public function renderFooterCellContent()
|
||||
{
|
||||
return trim($this->footer) !== '' ? $this->footer : $this->grid->emptyCell;
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders the data cell content.
|
||||
* @param mixed $model the data model
|
||||
* @param mixed $key the key associated with the data model
|
||||
* @param int $index zero-based index of data model among models array returned by [[GridView::dataProvider]].
|
||||
* @return string the rendering result
|
||||
*/
|
||||
public function renderDataCellContent($model, $key, $index)
|
||||
{
|
||||
if ($this->content !== null) {
|
||||
return call_user_func($this->content, $model, $key, $index, $this);
|
||||
} else {
|
||||
return $this->grid->emptyCell;
|
||||
}
|
||||
}
|
||||
}
|
131
protected/humhub/components/export/DataColumn.php
Normal file
131
protected/humhub/components/export/DataColumn.php
Normal file
@ -0,0 +1,131 @@
|
||||
<?php
|
||||
/**
|
||||
* @link https://www.humhub.org/
|
||||
* @copyright Copyright (c) 2018 HumHub GmbH & Co. KG
|
||||
* @license https://www.humhub.com/licences
|
||||
*/
|
||||
|
||||
namespace humhub\components\export;
|
||||
|
||||
use yii\base\Model;
|
||||
use yii\data\ActiveDataProvider;
|
||||
use yii\db\ActiveQueryInterface;
|
||||
use yii\helpers\ArrayHelper;
|
||||
use yii\helpers\Inflector;
|
||||
|
||||
/**
|
||||
* DataColumn is the default column type for the [[SpreadsheetExport]] widget.
|
||||
*
|
||||
* This class was originally developed by Paul Klimov <klimov.paul@gmail.com> and his
|
||||
* project csv-grid (https://github.com/yii2tech/csv-grid).
|
||||
*/
|
||||
class DataColumn extends Column
|
||||
{
|
||||
/**
|
||||
* @var string the attribute name associated with this column. When neither [[content]] nor [[value]]
|
||||
* is specified, the value of the specified attribute will be retrieved from each data model and displayed.
|
||||
*
|
||||
* Also, if [[label]] is not specified, the label associated with the attribute will be displayed.
|
||||
*/
|
||||
public $attribute;
|
||||
/**
|
||||
* @var string label to be displayed in the [[header|header cell]].
|
||||
* If it is not set and the models provided by the GridViews data provider are instances
|
||||
* of [[\yii\db\ActiveRecord]], the label will be determined using [[\yii\db\ActiveRecord::getAttributeLabel()]].
|
||||
* Otherwise [[\yii\helpers\Inflector::camel2words()]] will be used to get a label.
|
||||
*/
|
||||
public $label;
|
||||
/**
|
||||
* @var string|\Closure anonymous function or a string that is used to determine the value for the current column.
|
||||
*
|
||||
* If this is an anonymous function, it will be called for each row and the return value will be used as the
|
||||
* value to display for every data model. The signature of this function should be:
|
||||
* `function ($model, $key, $index, $column)`.
|
||||
* Where `$model`, `$key`, and `$index` refer to the model, key and index of the row currently being rendered
|
||||
* and `$column` is a reference to the [[DataColumn]] object.
|
||||
*
|
||||
* You may also set this property to a string representing the attribute name to be displayed in this column.
|
||||
*
|
||||
* If this is not set, `$model[$attribute]` will be used to obtain the value, where `$attribute`
|
||||
* is the value of [[attribute]].
|
||||
*/
|
||||
public $value;
|
||||
/**
|
||||
* @var string|array in which format should the value of each data model be displayed as
|
||||
* (e.g. `"raw"`, `"text"`, `"html"`, `['date', 'php:Y-m-d']`). Supported formats are determined by
|
||||
* the [[GridView::formatter|formatter]] used by he [[GridView]]. Default format is "text" which will format
|
||||
* the value as an HTML-encoded plain text when [[\yii\i18n\Formatter]] is used as
|
||||
* the [[GridView::$formatter|formatter]] of the GridView.
|
||||
*/
|
||||
public $format = 'text';
|
||||
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function renderHeaderCellContent()
|
||||
{
|
||||
if ($this->header !== null || $this->label === null && $this->attribute === null) {
|
||||
return parent::renderHeaderCellContent();
|
||||
}
|
||||
|
||||
$provider = $this->grid->dataProvider;
|
||||
|
||||
if ($this->label === null) {
|
||||
if ($provider instanceof ActiveDataProvider && $provider->query instanceof ActiveQueryInterface) {
|
||||
/* @var $model Model */
|
||||
$model = new $provider->query->modelClass;
|
||||
$label = $model->getAttributeLabel($this->attribute);
|
||||
} else {
|
||||
$models = $provider->getModels();
|
||||
if (($model = reset($models)) instanceof Model) {
|
||||
/* @var $model Model */
|
||||
$label = $model->getAttributeLabel($this->attribute);
|
||||
} else {
|
||||
$label = Inflector::camel2words($this->attribute);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$label = $this->label;
|
||||
}
|
||||
|
||||
return $label;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the data cell value.
|
||||
* @param mixed $model the data model
|
||||
* @param mixed $key the key associated with the data model
|
||||
* @param integer $index zero-based index of data model among models array returned by [[GridView::dataProvider]].
|
||||
* @return string the data cell value
|
||||
*/
|
||||
public function getDataCellValue($model, $key, $index)
|
||||
{
|
||||
if ($this->value !== null) {
|
||||
if (is_string($this->value)) {
|
||||
return ArrayHelper::getValue($model, $this->value);
|
||||
} else {
|
||||
return call_user_func($this->value, $model, $key, $index, $this);
|
||||
}
|
||||
} elseif ($this->attribute !== null) {
|
||||
return ArrayHelper::getValue($model, $this->attribute);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function renderDataCellContent($model, $key, $index)
|
||||
{
|
||||
if ($this->content === null) {
|
||||
$value = $this->getDataCellValue($model, $key, $index);
|
||||
if ($value === null) {
|
||||
return $this->grid->nullDisplay;
|
||||
}
|
||||
return $this->grid->formatter->format($value, $this->format);
|
||||
} else {
|
||||
return parent::renderDataCellContent($model, $key, $index);
|
||||
}
|
||||
}
|
||||
}
|
35
protected/humhub/components/export/DateTimeColumn.php
Normal file
35
protected/humhub/components/export/DateTimeColumn.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
/**
|
||||
* @link https://www.humhub.org/
|
||||
* @copyright Copyright (c) 2018 HumHub GmbH & Co. KG
|
||||
* @license https://www.humhub.com/licences
|
||||
*/
|
||||
|
||||
namespace humhub\components\export;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Shared\Date;
|
||||
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
|
||||
|
||||
/**
|
||||
* DateTimeColumn exports DateTime values to [[SpreadsheetExport]] widget.
|
||||
*/
|
||||
class DateTimeColumn extends DataColumn
|
||||
{
|
||||
/**
|
||||
* @var array containing style information
|
||||
* @see https://phpspreadsheet.readthedocs.io/en/develop/topics/recipes/#styles
|
||||
*/
|
||||
public $styles = [
|
||||
'numberFormat' => [
|
||||
'formatCode' => NumberFormat::FORMAT_DATE_DATETIME
|
||||
]
|
||||
];
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function renderDataCellContent($model, $key, $index)
|
||||
{
|
||||
return Date::PHPToExcel(parent::renderDataCellContent($model, $key, $index));
|
||||
}
|
||||
}
|
146
protected/humhub/components/export/ExportResult.php
Normal file
146
protected/humhub/components/export/ExportResult.php
Normal file
@ -0,0 +1,146 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @link https://www.humhub.org/
|
||||
* @copyright Copyright (c) 2018 HumHub GmbH & Co. KG
|
||||
* @license https://www.humhub.com/licences
|
||||
*/
|
||||
|
||||
namespace humhub\components\export;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use Yii;
|
||||
use yii\base\Object;
|
||||
use yii\helpers\FileHelper;
|
||||
use yii\web\Response;
|
||||
|
||||
/**
|
||||
* ExportResult represents SpreadsheetExport result.
|
||||
*
|
||||
* This class was originally developed by Paul Klimov <klimov.paul@gmail.com> and his
|
||||
* project csv-grid (https://github.com/yii2tech/csv-grid).
|
||||
*
|
||||
* @see SpreadsheetExport
|
||||
*/
|
||||
class ExportResult extends Object
|
||||
{
|
||||
|
||||
/**
|
||||
* @var string base path for the temporary directory and files.
|
||||
*/
|
||||
public $basePath = '@runtime/data_export';
|
||||
|
||||
/**
|
||||
* @var string base name, which should be used for the created files.
|
||||
*/
|
||||
public $fileBaseName = 'export';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $writerType = 'csv';
|
||||
|
||||
/**
|
||||
* @var Spreadsheet Spreadsheet instance
|
||||
*/
|
||||
private $spreadsheet;
|
||||
|
||||
/**
|
||||
* @var string temporary files directory name
|
||||
*/
|
||||
private $tempFileName;
|
||||
|
||||
/**
|
||||
* @var string name of the result file.
|
||||
*/
|
||||
private $resultFileName;
|
||||
|
||||
/**
|
||||
* Destructor.
|
||||
* Makes sure the temporary directory removed.
|
||||
*/
|
||||
public function __destruct()
|
||||
{
|
||||
$this->delete();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string files directory name
|
||||
* @throws \yii\base\Exception
|
||||
*/
|
||||
public function getTempFileName()
|
||||
{
|
||||
if ($this->tempFileName === null) {
|
||||
$basePath = Yii::getAlias($this->basePath);
|
||||
FileHelper::createDirectory($basePath);
|
||||
$this->tempFileName = $basePath . DIRECTORY_SEPARATOR . uniqid(time(), true);
|
||||
}
|
||||
return $this->tempFileName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string result file name
|
||||
*/
|
||||
public function getResultFileName()
|
||||
{
|
||||
if ($this->resultFileName === null) {
|
||||
$this->resultFileName = $this->fileBaseName . '.' . $this->writerType;
|
||||
}
|
||||
return $this->resultFileName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates new CSV file in result set.
|
||||
* @return Spreadsheet instance.
|
||||
*/
|
||||
public function newSpreadsheet()
|
||||
{
|
||||
$this->spreadsheet = new Spreadsheet();
|
||||
return $this->spreadsheet;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes associated directory with all internal files.
|
||||
* @return boolean whether file has been deleted.
|
||||
*/
|
||||
public function delete()
|
||||
{
|
||||
if (!empty($this->tempFileName) && is_writable($this->tempFileName)) {
|
||||
unlink($this->tempFileName);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves this file.
|
||||
* @param string $file destination file name (may content path alias).
|
||||
* @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
|
||||
*/
|
||||
public function saveAs($file)
|
||||
{
|
||||
$writer = IOFactory::createWriter($this->spreadsheet, ucfirst($this->writerType));
|
||||
$writer->save($file);
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepares response for sending a result file to the browser.
|
||||
* Note: this method works only while running web application.
|
||||
* @param array $options additional options for sending the file. See [[\yii\web\Response::sendFile()]] for details.
|
||||
* @return \yii\web\Response application response instance.
|
||||
* @throws \PhpOffice\PhpSpreadsheet\Exception
|
||||
* @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
|
||||
* @throws \yii\base\Exception
|
||||
*/
|
||||
public function send($options = [])
|
||||
{
|
||||
$this->saveAs($this->getTempFileName());
|
||||
|
||||
$response = Yii::$app->getResponse();
|
||||
$response->on(Response::EVENT_AFTER_SEND, [$this, 'delete']);
|
||||
|
||||
return $response->sendFile($this->getTempFileName(), $this->getResultFileName(), $options);
|
||||
}
|
||||
|
||||
}
|
373
protected/humhub/components/export/SpreadsheetExport.php
Normal file
373
protected/humhub/components/export/SpreadsheetExport.php
Normal file
@ -0,0 +1,373 @@
|
||||
<?php
|
||||
/**
|
||||
* @link https://www.humhub.org/
|
||||
* @copyright Copyright (c) 2018 HumHub GmbH & Co. KG
|
||||
* @license https://www.humhub.com/licences
|
||||
*/
|
||||
|
||||
namespace humhub\components\export;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use Yii;
|
||||
use yii\base\Component;
|
||||
use yii\base\InvalidConfigException;
|
||||
use yii\data\ActiveDataProvider;
|
||||
use yii\di\Instance;
|
||||
use yii\i18n\Formatter;
|
||||
|
||||
/**
|
||||
* SpreadsheetExport allows export of data into PhpSpreadsheet
|
||||
* It supports exporting of the [[\yii\data\DataProviderInterface]] and [[\yii\db\QueryInterface]] instances.
|
||||
*
|
||||
* This class was originally developed by Paul Klimov <klimov.paul@gmail.com> and his
|
||||
* project csv-grid (https://github.com/yii2tech/csv-grid).
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* ```php
|
||||
* use humhub\components\export\SpreadsheetExport;
|
||||
* use yii\data\ArrayDataProvider;
|
||||
*
|
||||
* $exporter = new SpreadsheetExport([
|
||||
* 'dataProvider' => new ArrayDataProvider([
|
||||
* 'allModels' => [
|
||||
* [
|
||||
* 'name' => 'some name',
|
||||
* 'price' => '9879',
|
||||
* ],
|
||||
* [
|
||||
* 'name' => 'name 2',
|
||||
* 'price' => '79',
|
||||
* ],
|
||||
* ],
|
||||
* ]),
|
||||
* 'columns' => [
|
||||
* [
|
||||
* 'attribute' => 'name',
|
||||
* ],
|
||||
* [
|
||||
* 'attribute' => 'price',
|
||||
* 'format' => 'decimal',
|
||||
* ],
|
||||
* ],
|
||||
* ]);
|
||||
* $exporter->export()->saveAs('/path/to/file.csv');
|
||||
* ```
|
||||
*/
|
||||
class SpreadsheetExport extends Component
|
||||
{
|
||||
|
||||
/**
|
||||
* @var \yii\data\DataProviderInterface the data provider for the view.
|
||||
* This property can be omitted in case [[query]] is set.
|
||||
*/
|
||||
public $dataProvider;
|
||||
/**
|
||||
* @var \yii\db\QueryInterface the data source query.
|
||||
* Note: this field will be ignored in case [[dataProvider]] is set.
|
||||
*/
|
||||
public $query;
|
||||
/**
|
||||
* @var array|Column[]
|
||||
*/
|
||||
public $columns = [];
|
||||
/**
|
||||
* @var boolean whether to show the header section of the sheet.
|
||||
*/
|
||||
public $showHeader = true;
|
||||
/**
|
||||
* @var boolean whether to show the footer section of the sheet.
|
||||
*/
|
||||
public $showFooter = false;
|
||||
/**
|
||||
* @var boolean enable autosize for xlsx/xls export.
|
||||
*/
|
||||
public $autoSize = true;
|
||||
/**
|
||||
* @var string the HTML display when the content of a cell is empty.
|
||||
* This property is used to render cells that have no defined content,
|
||||
* e.g. empty footer or filter cells.
|
||||
*
|
||||
* Note that this is not used by the [[DataColumn]] if a data item is `null`. In that case
|
||||
* the [[nullDisplay]] property will be used to indicate an empty data value.
|
||||
*/
|
||||
public $emptyCell = '';
|
||||
/**
|
||||
* @var string the text to be displayed when formatting a `null` data value.
|
||||
*/
|
||||
public $nullDisplay = '';
|
||||
/**
|
||||
* @var array configuration for [[ExportResult]] instance created in process result.
|
||||
*
|
||||
* For example:
|
||||
*
|
||||
* ```php
|
||||
* [
|
||||
* 'forceArchive' => true
|
||||
* ]
|
||||
* ```
|
||||
*
|
||||
* @see ExportResult
|
||||
*/
|
||||
public $resultConfig = [];
|
||||
/**
|
||||
* @var array|Formatter the formatter used to format model attribute values into displayable texts.
|
||||
* This can be either an instance of [[Formatter]] or an configuration array for creating the [[Formatter]]
|
||||
* instance. If this property is not set, the "formatter" application component will be used.
|
||||
*/
|
||||
private $formatter;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
private $row = 1;
|
||||
|
||||
/**
|
||||
* Initializes the grid.
|
||||
* This method will initialize required property values and instantiate [[columns]] objects.
|
||||
*/
|
||||
public function init()
|
||||
{
|
||||
parent::init();
|
||||
|
||||
if ($this->dataProvider === null && $this->query !== null) {
|
||||
$this->dataProvider = new ActiveDataProvider([
|
||||
'query' => $this->query,
|
||||
'pagination' => false,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Formatter formatter instance
|
||||
* @throws \yii\base\InvalidConfigException
|
||||
*/
|
||||
public function getFormatter()
|
||||
{
|
||||
if (!is_object($this->formatter)) {
|
||||
if ($this->formatter === null) {
|
||||
$this->formatter = Yii::$app->getFormatter();
|
||||
} else {
|
||||
$this->formatter = Instance::ensure($this->formatter, Formatter::className());
|
||||
}
|
||||
}
|
||||
return $this->formatter;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array|Formatter $formatter
|
||||
*/
|
||||
public function setFormatter($formatter)
|
||||
{
|
||||
$this->formatter = $formatter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates column objects and initializes them.
|
||||
* @param array $model list of single row model
|
||||
* @throws \yii\base\InvalidConfigException
|
||||
*/
|
||||
protected function initColumns($model)
|
||||
{
|
||||
if (empty($this->columns)) {
|
||||
$this->guessColumns($model);
|
||||
}
|
||||
foreach ($this->columns as $i => $column) {
|
||||
if (is_string($column)) {
|
||||
$column = $this->createDataColumn($column);
|
||||
} else {
|
||||
$column = Yii::createObject(array_merge([
|
||||
'class' => DataColumn::className(),
|
||||
'grid' => $this,
|
||||
], $column));
|
||||
}
|
||||
if (!$column->visible) {
|
||||
unset($this->columns[$i]);
|
||||
continue;
|
||||
}
|
||||
$this->columns[$i] = $column;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This function tries to guess the columns to show from the given data
|
||||
* if [[columns]] are not explicitly specified.
|
||||
* @param array $model list of model
|
||||
*/
|
||||
protected function guessColumns($model)
|
||||
{
|
||||
if (is_array($model) || is_object($model)) {
|
||||
foreach ($model as $name => $value) {
|
||||
$this->columns[] = (string)$name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a [[DataColumn]] object based on a string in the format of "attribute:format:label".
|
||||
* @param string $text the column specification string
|
||||
* @return DataColumn the column instance
|
||||
* @throws InvalidConfigException if the column specification is invalid
|
||||
*/
|
||||
protected function createDataColumn($text)
|
||||
{
|
||||
if (!preg_match('/^([^:]+)(:(\w*))?(:(.*))?$/', $text, $matches)) {
|
||||
throw new InvalidConfigException(
|
||||
'The column must be specified in the format of "attribute", '
|
||||
. '"attribute:format" or "attribute:format:label"'
|
||||
);
|
||||
}
|
||||
|
||||
/** @var DataColumn $column */
|
||||
$column = Yii::createObject([
|
||||
'class' => DataColumn::className(),
|
||||
'grid' => $this,
|
||||
'attribute' => $matches[1],
|
||||
'format' => isset($matches[3]) ? $matches[3] : 'text',
|
||||
'label' => isset($matches[5]) ? $matches[5] : null,
|
||||
]);
|
||||
|
||||
return $column;
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs data export.
|
||||
* @return ExportResult export result.
|
||||
* @throws \yii\base\InvalidConfigException
|
||||
* @throws \PhpOffice\PhpSpreadsheet\Exception
|
||||
*/
|
||||
public function export()
|
||||
{
|
||||
/** @var ExportResult $result */
|
||||
$result = Yii::createObject(array_merge([
|
||||
'class' => ExportResult::className(),
|
||||
], $this->resultConfig));
|
||||
|
||||
$spreadsheet = $result->newSpreadsheet();
|
||||
|
||||
$models = $this->dataProvider->getModels();
|
||||
$keys = $this->dataProvider->getKeys();
|
||||
|
||||
$this->initColumns(reset($models));
|
||||
|
||||
if ($this->showHeader) {
|
||||
$this->composeHeaderRow($spreadsheet);
|
||||
}
|
||||
|
||||
foreach ($models as $index => $model) {
|
||||
$key = isset($keys[$index]) ? $keys[$index] : $index;
|
||||
$this->composeBodyRow($spreadsheet, $model, $key, $index);
|
||||
}
|
||||
|
||||
if ($this->showFooter) {
|
||||
$this->composeFooterRow($spreadsheet);
|
||||
}
|
||||
|
||||
if ($this->autoSize) {
|
||||
$this->applyAutoSize($spreadsheet);
|
||||
}
|
||||
|
||||
$this->gc();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Composes header row contents.
|
||||
* @param Spreadsheet $spreadsheet
|
||||
* @throws \PhpOffice\PhpSpreadsheet\Exception
|
||||
*/
|
||||
protected function composeHeaderRow($spreadsheet)
|
||||
{
|
||||
$worksheet = $spreadsheet->getActiveSheet();
|
||||
$row = $this->nextRow();
|
||||
|
||||
foreach ($this->columns as $columnIndex => $column) {
|
||||
$worksheet->setCellValueByColumnAndRow(
|
||||
$columnIndex + 1,
|
||||
$row,
|
||||
$column->renderHeaderCellContent()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Composes header row contents.
|
||||
* @param Spreadsheet $spreadsheet
|
||||
* @throws \PhpOffice\PhpSpreadsheet\Exception
|
||||
*/
|
||||
protected function composeFooterRow($spreadsheet)
|
||||
{
|
||||
$worksheet = $spreadsheet->getActiveSheet();
|
||||
$row = $this->nextRow();
|
||||
|
||||
foreach ($this->columns as $columnIndex => $column) {
|
||||
$worksheet->setCellValueByColumnAndRow(
|
||||
$columnIndex + 1,
|
||||
$row,
|
||||
$column->renderFooterCellContent()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Composes body row contents.
|
||||
* @param Spreadsheet $spreadsheet
|
||||
* @param mixed $model the data model
|
||||
* @param mixed $key the key associated with the data model
|
||||
* @param int $index zero-based index of data model among the models array returned by [[GridView::dataProvider]].
|
||||
* @throws \PhpOffice\PhpSpreadsheet\Exception
|
||||
*/
|
||||
protected function composeBodyRow($spreadsheet, $model, $key, $index)
|
||||
{
|
||||
$worksheet = $spreadsheet->getActiveSheet();
|
||||
$row = $this->nextRow();
|
||||
|
||||
foreach ($this->columns as $columnIndex => $column) {
|
||||
$cell = $worksheet->getCellByColumnAndRow($columnIndex + 1, $row);
|
||||
$value = $column->renderDataCellContent($model, $key, $index);
|
||||
|
||||
if ($column->dataType !== null) {
|
||||
$cell->setValueExplicit($value, $column->dataType);
|
||||
} else {
|
||||
$cell->setValue($value);
|
||||
}
|
||||
|
||||
if ($column->styles !== []) {
|
||||
$cell->getStyle()->applyFromArray($column->styles);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable AutoSize for Export
|
||||
* @param Spreadsheet $spreadsheet
|
||||
* @throws \PhpOffice\PhpSpreadsheet\Exception
|
||||
*/
|
||||
protected function applyAutoSize($spreadsheet)
|
||||
{
|
||||
$worksheet = $spreadsheet->getActiveSheet();
|
||||
foreach ($this->columns as $columnIndex => $column) {
|
||||
$worksheet->getColumnDimensionByColumn($columnIndex + 1)->setAutoSize(true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
protected function nextRow()
|
||||
{
|
||||
return $this->row++;
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs PHP memory garbage collection.
|
||||
*/
|
||||
protected function gc()
|
||||
{
|
||||
if (!gc_enabled()) {
|
||||
gc_enable();
|
||||
}
|
||||
gc_collect_cycles();
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -46,12 +46,13 @@ $config = [
|
||||
[
|
||||
'class' => 'yii\log\FileTarget',
|
||||
'levels' => ['error', 'warning'],
|
||||
'except' => ['yii\web\HttpException:400', 'yii\web\HttpException:401', 'yii\web\HttpException:403', 'yii\web\HttpException:404', 'yii\web\HttpException:405'],
|
||||
'logVars' => ['_GET', '_SERVER'],
|
||||
],
|
||||
[
|
||||
'class' => 'yii\log\DbTarget',
|
||||
'levels' => ['error', 'warning'],
|
||||
'except' => ['yii\web\HttpException:404', 'yii\web\HttpException:403', 'yii\web\HttpException:401'],
|
||||
'except' => ['yii\web\HttpException:400', 'yii\web\HttpException:401', 'yii\web\HttpException:403', 'yii\web\HttpException:404', 'yii\web\HttpException:405'],
|
||||
'logVars' => ['_GET', '_SERVER'],
|
||||
],
|
||||
],
|
||||
|
@ -4,6 +4,9 @@ HumHub Change Log
|
||||
1.2.5 (Not released)
|
||||
---------------------
|
||||
|
||||
When you customized or used the createCVS method of PendingRegistrationsController please
|
||||
migrate your code to SpreadsheetExport. PHPOffice is replaced by PHPSpreadsheet.
|
||||
|
||||
- Enh: Added BaseURL setting protocol scheme validation
|
||||
- Fix #2849: ActiveQueryContent doesn't find public profile content when guest access is enabled
|
||||
- Enh: Fixed username alignment in comments (@githubjeka)
|
||||
@ -17,6 +20,8 @@ HumHub Change Log
|
||||
- Fix #2947: Allow json success result on modalSubmit
|
||||
- Enh: Disabled automatic content following on likes by default
|
||||
- Enh: Improved IntegrityChecker memory usage
|
||||
- Chg: `PendingRegistrationsController->createCVS` removed
|
||||
- Fix: Stream image preview size not changeable
|
||||
|
||||
|
||||
1.2.4 (December 13, 2017)
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
/**
|
||||
* @link https://www.humhub.org/
|
||||
* @copyright Copyright (c) 2017 HumHub GmbH & Co. KG
|
||||
* @copyright Copyright (c) 2018 HumHub GmbH & Co. KG
|
||||
* @license https://www.humhub.com/licences
|
||||
*/
|
||||
|
||||
@ -10,7 +10,6 @@ namespace humhub\libs;
|
||||
|
||||
use Yii;
|
||||
|
||||
|
||||
/**
|
||||
* CURLHelper
|
||||
*
|
||||
@ -26,13 +25,13 @@ class CURLHelper
|
||||
*/
|
||||
public static function getOptions()
|
||||
{
|
||||
$options = array(
|
||||
$options = [
|
||||
CURLOPT_SSL_VERIFYPEER => (Yii::$app->params['curl']['validateSsl']) ? true : false,
|
||||
CURLOPT_SSL_VERIFYHOST => (Yii::$app->params['curl']['validateSsl']) ? 2 : 0,
|
||||
CURLOPT_REDIR_PROTOCOLS => CURLPROTO_HTTP | CURLPROTO_HTTPS,
|
||||
CURLOPT_PROTOCOLS => CURLPROTO_HTTP | CURLPROTO_HTTPS,
|
||||
CURLOPT_CAINFO => Yii::getAlias('@humhub/config/cacert.pem')
|
||||
);
|
||||
];
|
||||
|
||||
if (Yii::$app->settings->get('proxy.enabled')) {
|
||||
$options[CURLOPT_PROXY] = Yii::$app->settings->get('proxy.server');
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,4 +1,4 @@
|
||||
<?php
|
||||
return array (
|
||||
'Invalid content id given!' => 'id de contenu non valide',
|
||||
'Invalid content id given!' => 'ID de contenu incorrect',
|
||||
);
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,97 +1,80 @@
|
||||
<?php
|
||||
/**
|
||||
* Message translations.
|
||||
*
|
||||
* This file is automatically generated by 'yii message/extract' command.
|
||||
* It contains the localizable messages extracted from source code.
|
||||
* You may modify this file by translating the extracted messages.
|
||||
*
|
||||
* Each array element represents the translation (value) of a message (key).
|
||||
* If the value is empty, the message is considered as not translated.
|
||||
* Messages that no longer need translation will have their translations
|
||||
* enclosed between a pair of '@@' marks.
|
||||
*
|
||||
* Message string can be used with plural forms format. Check i18n section
|
||||
* of the guide for details.
|
||||
*
|
||||
* NOTE: this file must be saved in UTF-8 encoding.
|
||||
*/
|
||||
return [
|
||||
'Text could not be copied to clipboard' => '',
|
||||
'Text has been copied to clipboard' => '',
|
||||
'<strong>Confirm</strong> Action' => '<strong>Confirmer</strong> l\'opération',
|
||||
'<strong>Latest</strong> updates' => '<strong>Dernières</strong> mises à jour',
|
||||
'<strong>Mail</strong> summary' => '<strong>E-mail</strong> résumé',
|
||||
'Account settings' => 'Paramètres du compte',
|
||||
'Administration' => 'Administration',
|
||||
'Allow' => 'Autoriser',
|
||||
'An error occurred while handling your last action. (Handler not found).' => 'Une erreur s\'est produite lors de la manipulation de votre dernière action. (Gestionnaire introuvable)',
|
||||
'An unexpected error occurred while loading the search result.' => 'Une erreur inattendue s\'est produite lors du chargement du résultat de la recherche.',
|
||||
'An unexpected error occurred. If this keeps happening, please contact a site administrator.' => 'Une erreur inattendue s\'est produite. Si cela se reproduit à nouveau, contactez un administrateur du site.',
|
||||
'An unexpected server error occurred. If this keeps happening, please contact a site administrator.' => 'Une erreur de serveur inattendue s\'est produite. Si cela se reproduit à nouveau, contactez un administrateur du site.',
|
||||
'An unknown error occurred while uploading.' => 'Une erreur inconnue s\'est produite pendant l\'envoi de fichier.',
|
||||
'An unknown error occurred while uploading. Hint: check your upload_max_filesize and post_max_size php settings.' => 'Une erreur inconnue s\'est produite lors du chargement de fichier. Vérifiez les paramètres "php upload_max_filesize" et "post_max_size"',
|
||||
'Back' => 'Retour',
|
||||
'Back to dashboard' => 'Retour au fil d\'actualités',
|
||||
'Cancel' => 'Annuler',
|
||||
'Choose language:' => 'Choisir la langue :',
|
||||
'Close' => 'Fermer',
|
||||
'Collapse' => 'Réduire',
|
||||
'Confirm' => 'Confirmer',
|
||||
'Content Addon source must be instance of HActiveRecordContent or HActiveRecordContentAddon!' => 'Le contenu d\'un add-on doit être une instance de HActiveRecordContent ou HActiveRecordContentAddon !',
|
||||
'Copy to clipboard' => 'Copier vers le presse-papier',
|
||||
'Could not determine content container!' => 'Le contenu du conteneur n\'a pas pu être déterminé !',
|
||||
'Could not find content of addon!' => 'Le contenu du add-on n\'a pu être trouvé !',
|
||||
'Default' => 'Défaut',
|
||||
'Deny' => 'Interdire',
|
||||
'Do you really want to perform this action?' => 'Voulez-vous vraiment effectuer cette action ?',
|
||||
'Error' => 'Erreur',
|
||||
'Error while running your last action (Invalid request method).' => 'Erreur lors de l\'exécution de votre dernière action (méthode de demande non valide).',
|
||||
'Error:' => 'Erreur :',
|
||||
'Expand' => 'Agrandir',
|
||||
'Export' => 'Exporter',
|
||||
'Info:' => 'Info :',
|
||||
'Invalid request method!' => 'Méthode de requête invalide.',
|
||||
'It looks like you may have taken the wrong turn.' => 'Il semble que vous n\'êtes pas au bon endroit...',
|
||||
'Language' => 'Langue',
|
||||
'Loading...' => 'Chargement...',
|
||||
'Login' => 'S\'identifier',
|
||||
'Logo of {appName}' => 'Logo de {appName}',
|
||||
'Logout' => 'Se déconnecter',
|
||||
'Menu' => 'Menu',
|
||||
'Module is not enabled on this content container!' => 'Le module n\'est pas activé pour ce conteneur.',
|
||||
'My profile' => 'Mon profil',
|
||||
'My profile image' => 'Mon image de profil',
|
||||
'New profile image' => 'Nouvelle image de profil',
|
||||
'Next' => 'Suivant',
|
||||
'No error information given.' => 'Aucune information d\'erreur fournie.',
|
||||
'Oooops...' => 'Oups...',
|
||||
'Open' => 'Ouvrir',
|
||||
'Please type at least 3 characters' => 'Merci de taper au moins 3 caractères',
|
||||
'Profile dropdown' => 'Liste déroulante de profil',
|
||||
'Profile image of {displayName}' => 'Image de profil de {displayName}',
|
||||
'Profile picture of {displayName}' => 'Photo de profil de {displayName}',
|
||||
'Save' => 'Enregistrer',
|
||||
'Saved' => 'Enregistré',
|
||||
'Search' => 'Rechercher',
|
||||
'Select Me' => 'Me choisir',
|
||||
'Show less' => 'Montrer moins',
|
||||
'Show more' => 'Montrer plus',
|
||||
'Some files could not be uploaded:' => 'Certains fichiers n\'ont pas pu être téléchargés :',
|
||||
'Space not found!' => 'Espace non trouvé.',
|
||||
'The date has to be in the past.' => 'La date doit être révolue.',
|
||||
'The file has been deleted.' => 'Le fichier a été supprimé.',
|
||||
'The requested resource could not be found.' => 'Impossible de trouver la ressource demandée.',
|
||||
'The space has been archived.' => 'L\'espace à été archivé.',
|
||||
'The space has been unarchived.' => 'L\'espace à été désarchivé.',
|
||||
'Time Zone' => 'Fuseau horaire',
|
||||
'Toggle comment menu' => 'Bascule du menu de commentaire',
|
||||
'Toggle panel menu' => 'Bascule du menu du panneau',
|
||||
'Toggle post menu' => 'Bascule du menu de contribution',
|
||||
'Toggle stream entry menu' => 'Bascule du menu du flux d\'activité',
|
||||
'Unsubscribe' => 'Désinscription',
|
||||
'Upload' => 'Ajouter',
|
||||
'Upload file' => 'Envoyer un fichier',
|
||||
'User not found!' => 'Utilisateur non trouvé.',
|
||||
'You are not allowed to run this action.' => 'Vous n\'êtes pas autorisé à exécuter cette action.',
|
||||
];
|
||||
return array (
|
||||
'<strong>Confirm</strong> Action' => '<strong>Confirmer</strong> l\'opération',
|
||||
'<strong>Latest</strong> updates' => '<strong>Dernières</strong> mises à jour',
|
||||
'<strong>Mail</strong> summary' => 'Résumé par <strong>e-mail</strong>',
|
||||
'Account settings' => 'Paramètres du compte',
|
||||
'Administration' => 'Administration',
|
||||
'Allow' => 'Autoriser',
|
||||
'An error occurred while handling your last action. (Handler not found).' => 'Une erreur s\'est produite lors de la manipulation de votre dernière action. (Gestionnaire introuvable)',
|
||||
'An unexpected error occurred while loading the search result.' => 'Une erreur inattendue s\'est produite lors du chargement du résultat de la recherche.',
|
||||
'An unexpected error occurred. If this keeps happening, please contact a site administrator.' => 'Une erreur inattendue s\'est produite. Si cela se reproduit à nouveau, contactez un administrateur du site.',
|
||||
'An unexpected server error occurred. If this keeps happening, please contact a site administrator.' => 'Une erreur de serveur inattendue s\'est produite. Si cela se reproduit à nouveau, contactez un administrateur du site.',
|
||||
'An unknown error occurred while uploading.' => 'Une erreur inconnue s\'est produite pendant l\'envoi de fichier.',
|
||||
'An unknown error occurred while uploading. Hint: check your upload_max_filesize and post_max_size php settings.' => 'Une erreur inconnue s\'est produite lors du chargement de fichier. Vérifiez les paramètres "php upload_max_filesize" et "post_max_size"',
|
||||
'Back' => 'Retour',
|
||||
'Back to dashboard' => 'Retour au fil d\'actualités',
|
||||
'Cancel' => 'Annuler',
|
||||
'Choose language:' => 'Choisir la langue :',
|
||||
'Close' => 'Fermer',
|
||||
'Collapse' => 'Réduire',
|
||||
'Confirm' => 'Confirmer',
|
||||
'Content Addon source must be instance of HActiveRecordContent or HActiveRecordContentAddon!' => 'Le contenu d\'un add-on doit être une instance de HActiveRecordContent ou HActiveRecordContentAddon.',
|
||||
'Copy to clipboard' => 'Copier vers le presse-papier',
|
||||
'Could not determine content container!' => 'Le conteneur du contenu n\'a pas pu être déterminé.',
|
||||
'Could not find content of addon!' => 'Le contenu du add-on n\'a pu être trouvé.',
|
||||
'Default' => 'Défaut',
|
||||
'Deny' => 'Interdire',
|
||||
'Do you really want to perform this action?' => 'Voulez-vous vraiment effectuer cette action ?',
|
||||
'Error' => 'Erreur',
|
||||
'Error while running your last action (Invalid request method).' => 'Erreur lors de l\'exécution de votre dernière action (méthode de demande non valide).',
|
||||
'Error:' => 'Erreur :',
|
||||
'Expand' => 'Agrandir',
|
||||
'Export' => 'Exporter',
|
||||
'Info:' => 'Info :',
|
||||
'Invalid request method!' => 'Méthode de requête invalide.',
|
||||
'It looks like you may have taken the wrong turn.' => 'Il semble que vous n\'êtes pas au bon endroit...',
|
||||
'Language' => 'Langue',
|
||||
'Loading...' => 'Chargement...',
|
||||
'Login' => 'S\'identifier',
|
||||
'Logo of {appName}' => 'Logo de {appName}',
|
||||
'Logout' => 'Se déconnecter',
|
||||
'Menu' => 'Menu',
|
||||
'Module is not enabled on this content container!' => 'Le module n\'est pas activé pour ce conteneur.',
|
||||
'My profile' => 'Mon profil',
|
||||
'My profile image' => 'Mon image de profil',
|
||||
'New profile image' => 'Nouvelle image de profil',
|
||||
'Next' => 'Suivant',
|
||||
'No error information given.' => 'Aucune information d\'erreur fournie.',
|
||||
'Oooops...' => 'Oups...',
|
||||
'Open' => 'Ouvrir',
|
||||
'Please type at least 3 characters' => 'Merci de taper au moins 3 caractères',
|
||||
'Profile dropdown' => 'Liste déroulante de profil',
|
||||
'Profile image of {displayName}' => 'Image de profil de {displayName}',
|
||||
'Profile picture of {displayName}' => 'Photo de profil de {displayName}',
|
||||
'Save' => 'Enregistrer',
|
||||
'Saved' => 'Enregistré',
|
||||
'Search' => 'Rechercher',
|
||||
'Select Me' => 'Me choisir',
|
||||
'Show less' => 'Montrer moins',
|
||||
'Show more' => 'Montrer plus',
|
||||
'Some files could not be uploaded:' => 'Certains fichiers n\'ont pas pu être téléchargés :',
|
||||
'Space not found!' => 'Espace non trouvé.',
|
||||
'Text could not be copied to clipboard' => 'Le texte ne peut être copié dans le presse-papier',
|
||||
'Text has been copied to clipboard' => 'Le texte a été copié dans le presse-papier',
|
||||
'The date has to be in the past.' => 'La date doit être révolue.',
|
||||
'The file has been deleted.' => 'Le fichier a été supprimé.',
|
||||
'The requested resource could not be found.' => 'Impossible de trouver la ressource demandée.',
|
||||
'The space has been archived.' => 'Cet espace à été archivé.',
|
||||
'The space has been unarchived.' => 'Cet espace à été désarchivé.',
|
||||
'Time Zone' => 'Fuseau horaire',
|
||||
'Toggle comment menu' => 'Bascule du menu de commentaire',
|
||||
'Toggle panel menu' => 'Bascule du menu du panneau',
|
||||
'Toggle post menu' => 'Bascule du menu de contribution',
|
||||
'Toggle stream entry menu' => 'Bascule du menu du flux d\'activité',
|
||||
'Unsubscribe' => 'Se désabonner',
|
||||
'Upload' => 'Ajouter',
|
||||
'Upload file' => 'Envoyer un fichier',
|
||||
'User not found!' => 'Utilisateur non trouvé.',
|
||||
'You are not allowed to run this action.' => 'Vous n\'êtes pas autorisé à exécuter cette action.',
|
||||
);
|
||||
|
@ -7,6 +7,6 @@ return array (
|
||||
'You are not allowed to perform this action.' => 'Vous n\'êtes pas autorisé à effectuer cette action.',
|
||||
'You are not permitted to access this section.' => 'Vous n\'avez pas le droit d\'accéder à cette section.',
|
||||
'You need admin permissions to access this section.' => 'Vous avez besoin des droits administrateur pour accéder à cette section.',
|
||||
'Your user account has not been approved yet, please try again later or contact a network administrator.' => 'Votre compte utilisateur n\'a pas encore été approuvé, merci de réessayer ultérieurement ou de contacter un administrateur du réseau.',
|
||||
'Your user account is inactive, please login with an active account or contact a network administrator.' => 'Votre compte d\'utilisateur est inactif, merci de vous connecter avec un autre compte actif ou de contacter un administrateur du réseau.',
|
||||
'Your user account has not been approved yet, please try again later or contact a network administrator.' => 'Votre compte n\'a pas encore été approuvé, veuillez réessayer ultérieurement ou contactez un administrateur du site.',
|
||||
'Your user account is inactive, please login with an active account or contact a network administrator.' => 'Votre compte est inactif, veuillez vous connecter avec un autre compte actif ou contactez un administrateur du site.',
|
||||
);
|
||||
|
@ -1,97 +1,80 @@
|
||||
<?php
|
||||
/**
|
||||
* Message translations.
|
||||
*
|
||||
* This file is automatically generated by 'yii message/extract' command.
|
||||
* It contains the localizable messages extracted from source code.
|
||||
* You may modify this file by translating the extracted messages.
|
||||
*
|
||||
* Each array element represents the translation (value) of a message (key).
|
||||
* If the value is empty, the message is considered as not translated.
|
||||
* Messages that no longer need translation will have their translations
|
||||
* enclosed between a pair of '@@' marks.
|
||||
*
|
||||
* Message string can be used with plural forms format. Check i18n section
|
||||
* of the guide for details.
|
||||
*
|
||||
* NOTE: this file must be saved in UTF-8 encoding.
|
||||
*/
|
||||
return [
|
||||
'Text could not be copied to clipboard' => '',
|
||||
'Text has been copied to clipboard' => '',
|
||||
'<strong>Confirm</strong> Action' => '<strong>Potvrdi</strong> akciju',
|
||||
'<strong>Latest</strong> updates' => '<strong>Zadnje</strong> ažuriranje',
|
||||
'<strong>Mail</strong> summary' => '<strong>Mail</strong> sažetak',
|
||||
'Account settings' => 'Postavke računa',
|
||||
'Administration' => 'Administracija',
|
||||
'Allow' => 'Dopusti',
|
||||
'An error occurred while handling your last action. (Handler not found).' => 'Došlo je do pogreške pri rukovanju vašom posljednjom radnjom. (Handler nije pronađen).',
|
||||
'An unexpected error occurred while loading the search result.' => 'Došlo je do neočekivane pogreške prilikom učitavanja rezultata pretraživanja.',
|
||||
'An unexpected error occurred. If this keeps happening, please contact a site administrator.' => 'Došlo je do neočekivane pogreške. Ako se to nastavi, kontaktirajte administratora web mjesta.',
|
||||
'An unexpected server error occurred. If this keeps happening, please contact a site administrator.' => 'Došlo je do neočekivane pogreške poslužitelja. Ako se to nastavi, kontaktirajte administratora web mjesta.',
|
||||
'An unknown error occurred while uploading.' => 'Došlo je do nepoznate pogreške prilikom prijenosa.',
|
||||
'An unknown error occurred while uploading. Hint: check your upload_max_filesize and post_max_size php settings.' => 'Došlo je do nepoznate pogreške prilikom prijenosa. Savjet: provjerite postavke php postavki upload_max_filesize i post_max_size.',
|
||||
'Back' => 'Povratak',
|
||||
'Back to dashboard' => 'Povratak na upravljačku ploču',
|
||||
'Cancel' => 'Poništi',
|
||||
'Choose language:' => 'Odaberite jezik:',
|
||||
'Close' => 'Zatvori',
|
||||
'Collapse' => 'Spusti',
|
||||
'Confirm' => 'Potvrdi',
|
||||
'Content Addon source must be instance of HActiveRecordContent or HActiveRecordContentAddon!' => 'Izvor sadržaja Addon mora biti primjerak HActiveRecordContent ili HActiveRecordContentAddon!',
|
||||
'Copy to clipboard' => 'Kopirati u međuspremnik',
|
||||
'Could not determine content container!' => 'Nije moguće odrediti spremnik sadržaja!',
|
||||
'Could not find content of addon!' => 'Nije moguće pronaći sadržaj addona!',
|
||||
'Default' => 'Zadano',
|
||||
'Deny' => 'Odbiti',
|
||||
'Do you really want to perform this action?' => 'Želite li zaista uraditi ovu akciju?',
|
||||
'Error' => 'Error',
|
||||
'Error while running your last action (Invalid request method).' => 'Pogreška prilikom izvođenja zadnje radnje (nevažeći način zahtjeva).',
|
||||
'Error:' => 'Error:',
|
||||
'Expand' => 'Proširi',
|
||||
'Export' => 'Izvoz',
|
||||
'Info:' => 'Info:',
|
||||
'Invalid request method!' => 'Nevažeći način zahtjeva!',
|
||||
'It looks like you may have taken the wrong turn.' => 'Izgleda da ste se pogrešno skrenuli.',
|
||||
'Language' => 'Jezik',
|
||||
'Loading...' => 'Učitavam...',
|
||||
'Login' => 'Prijava',
|
||||
'Logo of {appName}' => 'Logo {appName}',
|
||||
'Logout' => 'Odjava',
|
||||
'Menu' => 'Izbornik',
|
||||
'Module is not enabled on this content container!' => 'Modul nije omogućen na ovom spremniku sadržaja!',
|
||||
'My profile' => 'Moj profil',
|
||||
'My profile image' => 'Moja profilna slika',
|
||||
'New profile image' => 'Nova profilna slika',
|
||||
'Next' => 'Dalje',
|
||||
'No error information given.' => 'Nema podataka o pogrešci.',
|
||||
'Oooops...' => 'Oooops...',
|
||||
'Open' => 'Otvori',
|
||||
'Please type at least 3 characters' => 'Upišite najmanje 3 znaka',
|
||||
'Profile dropdown' => 'Padajući izbornik profila',
|
||||
'Profile image of {displayName}' => 'Profilna slika od {displayName}',
|
||||
'Profile picture of {displayName}' => 'Profilna slika od {displayName}',
|
||||
'Save' => 'Spremi',
|
||||
'Saved' => 'Spremljeno',
|
||||
'Search' => 'Pretraži',
|
||||
'Select Me' => 'Izaberi mene',
|
||||
'Show less' => 'Prikaži manje',
|
||||
'Show more' => 'Prikaži više',
|
||||
'Some files could not be uploaded:' => 'Neke datoteke nisu prenesene:',
|
||||
'Space not found!' => 'Prostor nije pronađen!',
|
||||
'The date has to be in the past.' => 'Datum mora biti u prošlosti.',
|
||||
'The file has been deleted.' => 'Datoteka je izbrisana.',
|
||||
'The requested resource could not be found.' => 'Traženi resurs nije moguće pronaći.',
|
||||
'The space has been archived.' => 'Prostor je arhiviran.',
|
||||
'The space has been unarchived.' => 'Prostor je od-arhiviran.',
|
||||
'Time Zone' => 'Vremenska zona',
|
||||
'Toggle comment menu' => 'Prebacivanje izbornika komentara',
|
||||
'Toggle panel menu' => 'Prebacivanje izbornika na ploči',
|
||||
'Toggle post menu' => 'Prelazak na izbornik posta',
|
||||
'Toggle stream entry menu' => 'Prebacivanje izbornika unosa u stream',
|
||||
'Unsubscribe' => 'Otkažite pretplatu',
|
||||
'Upload' => 'Dodaj',
|
||||
'Upload file' => 'Dodaj datoteku',
|
||||
'User not found!' => 'Korisnik nije pronađen!',
|
||||
'You are not allowed to run this action.' => 'Nije vam dozvoljena ova akcija.',
|
||||
];
|
||||
return array (
|
||||
'<strong>Confirm</strong> Action' => '<strong>Potvrdi</strong> akciju',
|
||||
'<strong>Latest</strong> updates' => '<strong>Zadnje</strong> ažuriranje',
|
||||
'<strong>Mail</strong> summary' => '<strong>Mail</strong> sažetak',
|
||||
'Account settings' => 'Postavke računa',
|
||||
'Administration' => 'Administracija',
|
||||
'Allow' => 'Dopusti',
|
||||
'An error occurred while handling your last action. (Handler not found).' => 'Došlo je do pogreške pri rukovanju vašom posljednjom radnjom. (Handler nije pronađen).',
|
||||
'An unexpected error occurred while loading the search result.' => 'Došlo je do neočekivane pogreške prilikom učitavanja rezultata pretraživanja.',
|
||||
'An unexpected error occurred. If this keeps happening, please contact a site administrator.' => 'Došlo je do neočekivane pogreške. Ako se to nastavi, kontaktirajte administratora web mjesta.',
|
||||
'An unexpected server error occurred. If this keeps happening, please contact a site administrator.' => 'Došlo je do neočekivane pogreške poslužitelja. Ako se to nastavi, kontaktirajte administratora web mjesta.',
|
||||
'An unknown error occurred while uploading.' => 'Došlo je do nepoznate pogreške prilikom prijenosa.',
|
||||
'An unknown error occurred while uploading. Hint: check your upload_max_filesize and post_max_size php settings.' => 'Došlo je do nepoznate pogreške prilikom prijenosa. Savjet: provjerite postavke php postavki upload_max_filesize i post_max_size.',
|
||||
'Back' => 'Povratak',
|
||||
'Back to dashboard' => 'Povratak na upravljačku ploču',
|
||||
'Cancel' => 'Poništi',
|
||||
'Choose language:' => 'Odaberite jezik:',
|
||||
'Close' => 'Zatvori',
|
||||
'Collapse' => 'Spusti',
|
||||
'Confirm' => 'Potvrdi',
|
||||
'Content Addon source must be instance of HActiveRecordContent or HActiveRecordContentAddon!' => 'Izvor sadržaja Addon mora biti primjerak HActiveRecordContent ili HActiveRecordContentAddon!',
|
||||
'Copy to clipboard' => 'Kopirati u međuspremnik',
|
||||
'Could not determine content container!' => 'Nije moguće odrediti spremnik sadržaja!',
|
||||
'Could not find content of addon!' => 'Nije moguće pronaći sadržaj addona!',
|
||||
'Default' => 'Zadano',
|
||||
'Deny' => 'Odbiti',
|
||||
'Do you really want to perform this action?' => 'Želite li zaista uraditi ovu akciju?',
|
||||
'Error' => 'Error',
|
||||
'Error while running your last action (Invalid request method).' => 'Pogreška prilikom izvođenja zadnje radnje (nevažeći način zahtjeva).',
|
||||
'Error:' => 'Error:',
|
||||
'Expand' => 'Proširi',
|
||||
'Export' => 'Izvoz',
|
||||
'Info:' => 'Info:',
|
||||
'Invalid request method!' => 'Nevažeći način zahtjeva!',
|
||||
'It looks like you may have taken the wrong turn.' => 'Izgleda da ste se pogrešno skrenuli.',
|
||||
'Language' => 'Jezik',
|
||||
'Loading...' => 'Učitavam...',
|
||||
'Login' => 'Prijava',
|
||||
'Logo of {appName}' => 'Logo {appName}',
|
||||
'Logout' => 'Odjava',
|
||||
'Menu' => 'Izbornik',
|
||||
'Module is not enabled on this content container!' => 'Modul nije omogućen na ovom spremniku sadržaja!',
|
||||
'My profile' => 'Moj profil',
|
||||
'My profile image' => 'Moja profilna slika',
|
||||
'New profile image' => 'Nova profilna slika',
|
||||
'Next' => 'Dalje',
|
||||
'No error information given.' => 'Nema podataka o pogrešci.',
|
||||
'Oooops...' => 'Oooops...',
|
||||
'Open' => 'Otvori',
|
||||
'Please type at least 3 characters' => 'Upišite najmanje 3 znaka',
|
||||
'Profile dropdown' => 'Padajući izbornik profila',
|
||||
'Profile image of {displayName}' => 'Profilna slika od {displayName}',
|
||||
'Profile picture of {displayName}' => 'Profilna slika od {displayName}',
|
||||
'Save' => 'Spremi',
|
||||
'Saved' => 'Spremljeno',
|
||||
'Search' => 'Pretraži',
|
||||
'Select Me' => 'Izaberi mene',
|
||||
'Show less' => 'Prikaži manje',
|
||||
'Show more' => 'Prikaži više',
|
||||
'Some files could not be uploaded:' => 'Neke datoteke nisu prenesene:',
|
||||
'Space not found!' => 'Prostor nije pronađen!',
|
||||
'Text could not be copied to clipboard' => 'Tekst nije mogao biti kopiran u privremenu memoriju',
|
||||
'Text has been copied to clipboard' => 'Tekst je kopiran u privremenu memoriju',
|
||||
'The date has to be in the past.' => 'Datum mora biti u prošlosti.',
|
||||
'The file has been deleted.' => 'Datoteka je izbrisana.',
|
||||
'The requested resource could not be found.' => 'Traženi resurs nije moguće pronaći.',
|
||||
'The space has been archived.' => 'Prostor je arhiviran.',
|
||||
'The space has been unarchived.' => 'Prostor je od-arhiviran.',
|
||||
'Time Zone' => 'Vremenska zona',
|
||||
'Toggle comment menu' => 'Prebacivanje izbornika komentara',
|
||||
'Toggle panel menu' => 'Prebacivanje izbornika na ploči',
|
||||
'Toggle post menu' => 'Prelazak na izbornik posta',
|
||||
'Toggle stream entry menu' => 'Prebacivanje izbornika unosa u stream',
|
||||
'Unsubscribe' => 'Otkažite pretplatu',
|
||||
'Upload' => 'Dodaj',
|
||||
'Upload file' => 'Dodaj datoteku',
|
||||
'User not found!' => 'Korisnik nije pronađen!',
|
||||
'You are not allowed to run this action.' => 'Nije vam dozvoljena ova akcija.',
|
||||
);
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,97 +1,80 @@
|
||||
<?php
|
||||
/**
|
||||
* Message translations.
|
||||
*
|
||||
* This file is automatically generated by 'yii message/extract' command.
|
||||
* It contains the localizable messages extracted from source code.
|
||||
* You may modify this file by translating the extracted messages.
|
||||
*
|
||||
* Each array element represents the translation (value) of a message (key).
|
||||
* If the value is empty, the message is considered as not translated.
|
||||
* Messages that no longer need translation will have their translations
|
||||
* enclosed between a pair of '@@' marks.
|
||||
*
|
||||
* Message string can be used with plural forms format. Check i18n section
|
||||
* of the guide for details.
|
||||
*
|
||||
* NOTE: this file must be saved in UTF-8 encoding.
|
||||
*/
|
||||
return [
|
||||
'Text could not be copied to clipboard' => '',
|
||||
'Text has been copied to clipboard' => '',
|
||||
'<strong>Confirm</strong> Action' => '<strong>Conferma</strong> azione',
|
||||
'<strong>Latest</strong> updates' => '<strong>Ultimi</strong> aggiornamenti',
|
||||
'<strong>Mail</strong> summary' => 'Sommario <strong>email</strong>',
|
||||
'Account settings' => 'Impostazioni account',
|
||||
'Administration' => 'Amministrazione',
|
||||
'Allow' => 'Consenti',
|
||||
'An error occurred while handling your last action. (Handler not found).' => 'Si è verificato un errore durante l\'ultima azione. (Handler non trovato)',
|
||||
'An unexpected error occurred while loading the search result.' => 'Si è verificato un errore caricando i risultati ricerca.',
|
||||
'An unexpected error occurred. If this keeps happening, please contact a site administrator.' => 'Un errore imprevisto si è verificato. Se si ripete contattare l\'amministratore.',
|
||||
'An unexpected server error occurred. If this keeps happening, please contact a site administrator.' => 'Un errore del server imprevisto si è verificato. Se si ripete contattare l\'amministratore.',
|
||||
'An unknown error occurred while uploading.' => 'Si è verificato un errore imprevisto durante il caricamento.',
|
||||
'An unknown error occurred while uploading. Hint: check your upload_max_filesize and post_max_size php settings.' => 'Si è verificato un errore imprevisto durante il caricamento. Suggerimento: verifica le impostazioni di upload_max_filesize e post_max_size php.',
|
||||
'Back' => 'Indietro',
|
||||
'Back to dashboard' => 'Torna al pannello di controllo',
|
||||
'Cancel' => 'Annulla',
|
||||
'Choose language:' => 'Scegli lingua:',
|
||||
'Close' => 'Chiudi',
|
||||
'Collapse' => 'Chiudi',
|
||||
'Confirm' => 'Conferma',
|
||||
'Content Addon source must be instance of HActiveRecordContent or HActiveRecordContentAddon!' => 'Il contenuto sorgente dell\'Addon deve essere un\'istanza di HActiveRecordContent o di HActiveRecordContentAddon!',
|
||||
'Copy to clipboard' => 'Copia negli appunti',
|
||||
'Could not determine content container!' => 'Non posso determinare il contenuto del container!',
|
||||
'Could not find content of addon!' => 'Impossibile trovare l\'addon richiesto!',
|
||||
'Default' => 'Predefinito',
|
||||
'Deny' => 'Rifiuta',
|
||||
'Do you really want to perform this action?' => 'Sei sicuro di voler procedere con questa azione?',
|
||||
'Error' => 'Errore',
|
||||
'Error while running your last action (Invalid request method).' => 'Si è verificato un errore durante l\'ultima azione (Invalid request method).',
|
||||
'Error:' => 'Errore:',
|
||||
'Expand' => 'Espandi',
|
||||
'Export' => 'Esporta',
|
||||
'Info:' => 'Informazioni:',
|
||||
'Invalid request method!' => 'Metodo richiesta non valido!',
|
||||
'It looks like you may have taken the wrong turn.' => 'Sembrerebbe che tu abbia preso una strada sbagliata.',
|
||||
'Language' => 'Lingua',
|
||||
'Loading...' => 'Caricamento...',
|
||||
'Login' => 'Login',
|
||||
'Logo of {appName}' => 'Logo di {appName}',
|
||||
'Logout' => 'Esci',
|
||||
'Menu' => 'Menu',
|
||||
'Module is not enabled on this content container!' => 'Il modulo non è abilitato in questo contenitore!',
|
||||
'My profile' => 'Il mio profilo',
|
||||
'My profile image' => 'Immagine del mio profilo',
|
||||
'New profile image' => 'Nuova immagine profilo',
|
||||
'Next' => 'Avanti',
|
||||
'No error information given.' => 'Informazione errore mancante.',
|
||||
'Oooops...' => 'Oooops...',
|
||||
'Open' => 'Apri',
|
||||
'Please type at least 3 characters' => 'Prova a digitare almeno 3 caratteri',
|
||||
'Profile dropdown' => 'Diminuzione del profilo',
|
||||
'Profile image of {displayName}' => 'Immagine profilo di {displayName}',
|
||||
'Profile picture of {displayName}' => 'Immagine profilo di {displayName}',
|
||||
'Save' => 'Salva',
|
||||
'Saved' => 'Salvato',
|
||||
'Search' => 'Cerca',
|
||||
'Select Me' => 'Selezionami',
|
||||
'Show less' => 'Mostra meno',
|
||||
'Show more' => 'Mostra altro',
|
||||
'Some files could not be uploaded:' => 'Alcuni file non possono essere caricati:',
|
||||
'Space not found!' => 'Space non trovato!',
|
||||
'The date has to be in the past.' => 'La data deve essere nel passato.',
|
||||
'The file has been deleted.' => 'Il file è stato cancellato.',
|
||||
'The requested resource could not be found.' => 'La risorsa richiesta non è stata trovata.',
|
||||
'The space has been archived.' => 'Lo Space è stato archiviato. ',
|
||||
'The space has been unarchived.' => 'Lo Space è stato disarchiviato.',
|
||||
'Time Zone' => 'Fuso orario',
|
||||
'Toggle comment menu' => 'Attiva menu Commento',
|
||||
'Toggle panel menu' => 'Attiva menu Pannello',
|
||||
'Toggle post menu' => 'Attiva menu Post',
|
||||
'Toggle stream entry menu' => 'Attiva menu Stream',
|
||||
'Unsubscribe' => 'Cancella sottoscrizione',
|
||||
'Upload' => 'Carica',
|
||||
'Upload file' => 'Carica file',
|
||||
'User not found!' => 'Utente non trovato!',
|
||||
'You are not allowed to run this action.' => 'Non hai i permessi per questa azione.',
|
||||
];
|
||||
return array (
|
||||
'<strong>Confirm</strong> Action' => '<strong>Conferma</strong> azione',
|
||||
'<strong>Latest</strong> updates' => '<strong>Ultimi</strong> aggiornamenti',
|
||||
'<strong>Mail</strong> summary' => 'Sommario <strong>email</strong>',
|
||||
'Account settings' => 'Impostazioni account',
|
||||
'Administration' => 'Amministrazione',
|
||||
'Allow' => 'Consenti',
|
||||
'An error occurred while handling your last action. (Handler not found).' => 'Si è verificato un errore durante l\'ultima azione. (Handler non trovato)',
|
||||
'An unexpected error occurred while loading the search result.' => 'Si è verificato un errore caricando i risultati ricerca.',
|
||||
'An unexpected error occurred. If this keeps happening, please contact a site administrator.' => 'Un errore imprevisto si è verificato. Se si ripete contattare l\'amministratore.',
|
||||
'An unexpected server error occurred. If this keeps happening, please contact a site administrator.' => 'Un errore del server imprevisto si è verificato. Se si ripete contattare l\'amministratore.',
|
||||
'An unknown error occurred while uploading.' => 'Si è verificato un errore imprevisto durante il caricamento.',
|
||||
'An unknown error occurred while uploading. Hint: check your upload_max_filesize and post_max_size php settings.' => 'Si è verificato un errore imprevisto durante il caricamento. Suggerimento: verifica le impostazioni di upload_max_filesize e post_max_size php.',
|
||||
'Back' => 'Indietro',
|
||||
'Back to dashboard' => 'Torna alla bacheca',
|
||||
'Cancel' => 'Annulla',
|
||||
'Choose language:' => 'Scegli lingua:',
|
||||
'Close' => 'Chiudi',
|
||||
'Collapse' => 'Chiudi',
|
||||
'Confirm' => 'Conferma',
|
||||
'Content Addon source must be instance of HActiveRecordContent or HActiveRecordContentAddon!' => 'Il contenuto sorgente dell\'Addon deve essere un\'istanza di HActiveRecordContent o di HActiveRecordContentAddon!',
|
||||
'Copy to clipboard' => 'Copia negli appunti',
|
||||
'Could not determine content container!' => 'Non posso determinare il contenuto del container!',
|
||||
'Could not find content of addon!' => 'Impossibile trovare l\'addon richiesto!',
|
||||
'Default' => 'Predefinito',
|
||||
'Deny' => 'Rifiuta',
|
||||
'Do you really want to perform this action?' => 'Sei sicuro di voler procedere con questa azione?',
|
||||
'Error' => 'Errore',
|
||||
'Error while running your last action (Invalid request method).' => 'Si è verificato un errore durante l\'ultima azione (Invalid request method).',
|
||||
'Error:' => 'Errore:',
|
||||
'Expand' => 'Espandi',
|
||||
'Export' => 'Esporta',
|
||||
'Info:' => 'Informazioni:',
|
||||
'Invalid request method!' => 'Metodo richiesta non valido!',
|
||||
'It looks like you may have taken the wrong turn.' => 'Sembrerebbe che tu abbia preso una strada sbagliata.',
|
||||
'Language' => 'Lingua',
|
||||
'Loading...' => 'Caricamento...',
|
||||
'Login' => 'Login',
|
||||
'Logo of {appName}' => 'Logo di {appName}',
|
||||
'Logout' => 'Esci',
|
||||
'Menu' => 'Menu',
|
||||
'Module is not enabled on this content container!' => 'Il modulo non è abilitato in questo contenitore!',
|
||||
'My profile' => 'Il mio profilo',
|
||||
'My profile image' => 'Immagine del mio profilo',
|
||||
'New profile image' => 'Nuova immagine profilo',
|
||||
'Next' => 'Avanti',
|
||||
'No error information given.' => 'Informazione errore mancante.',
|
||||
'Oooops...' => 'Oooops...',
|
||||
'Open' => 'Apri',
|
||||
'Please type at least 3 characters' => 'Prova a digitare almeno 3 caratteri',
|
||||
'Profile dropdown' => 'Diminuzione del profilo',
|
||||
'Profile image of {displayName}' => 'Immagine profilo di {displayName}',
|
||||
'Profile picture of {displayName}' => 'Immagine profilo di {displayName}',
|
||||
'Save' => 'Salva',
|
||||
'Saved' => 'Salvato',
|
||||
'Search' => 'Cerca',
|
||||
'Select Me' => 'Selezionami',
|
||||
'Show less' => 'Mostra meno',
|
||||
'Show more' => 'Mostra altro',
|
||||
'Some files could not be uploaded:' => 'Alcuni file non possono essere caricati:',
|
||||
'Space not found!' => 'Space non trovato!',
|
||||
'Text could not be copied to clipboard' => 'Il testo non può essere copiato negli appunti',
|
||||
'Text has been copied to clipboard' => 'Il testo è stato copiato negli appunti',
|
||||
'The date has to be in the past.' => 'La data deve essere nel passato.',
|
||||
'The file has been deleted.' => 'Il file è stato cancellato.',
|
||||
'The requested resource could not be found.' => 'La risorsa richiesta non è stata trovata.',
|
||||
'The space has been archived.' => 'Lo Space è stato archiviato. ',
|
||||
'The space has been unarchived.' => 'Lo Space è stato disarchiviato.',
|
||||
'Time Zone' => 'Fuso orario',
|
||||
'Toggle comment menu' => 'Attiva menu Commento',
|
||||
'Toggle panel menu' => 'Attiva menu Pannello',
|
||||
'Toggle post menu' => 'Attiva menu Post',
|
||||
'Toggle stream entry menu' => 'Attiva menu Stream',
|
||||
'Unsubscribe' => 'Cancella sottoscrizione',
|
||||
'Upload' => 'Carica',
|
||||
'Upload file' => 'Carica file',
|
||||
'User not found!' => 'Utente non trovato!',
|
||||
'You are not allowed to run this action.' => 'Non hai i permessi per questa azione.',
|
||||
);
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,97 +1,80 @@
|
||||
<?php
|
||||
/**
|
||||
* Message translations.
|
||||
*
|
||||
* This file is automatically generated by 'yii message/extract' command.
|
||||
* It contains the localizable messages extracted from source code.
|
||||
* You may modify this file by translating the extracted messages.
|
||||
*
|
||||
* Each array element represents the translation (value) of a message (key).
|
||||
* If the value is empty, the message is considered as not translated.
|
||||
* Messages that no longer need translation will have their translations
|
||||
* enclosed between a pair of '@@' marks.
|
||||
*
|
||||
* Message string can be used with plural forms format. Check i18n section
|
||||
* of the guide for details.
|
||||
*
|
||||
* NOTE: this file must be saved in UTF-8 encoding.
|
||||
*/
|
||||
return [
|
||||
'Text could not be copied to clipboard' => '',
|
||||
'Text has been copied to clipboard' => '',
|
||||
'<strong>Confirm</strong> Action' => '<strong>Zeker</strong> weten?',
|
||||
'<strong>Latest</strong> updates' => '<strong>Laatste</strong> updates',
|
||||
'<strong>Mail</strong> summary' => '<strong>E-mail</strong> samenvatting',
|
||||
'Account settings' => 'Accountinstellingen',
|
||||
'Administration' => 'Administratie',
|
||||
'Allow' => 'Toestaan',
|
||||
'An error occurred while handling your last action. (Handler not found).' => 'Een fout ontstond bij het afhandelen van uw laatste actie. (Handler niet gevonden).',
|
||||
'An unexpected error occurred while loading the search result.' => 'Een onverwachte fout ontstond tijdens het laden van het zoekresultaat.',
|
||||
'An unexpected error occurred. If this keeps happening, please contact a site administrator.' => 'Een onverwachte fout ontstond. Als dit zich herhaalt, neem dan contact op met een beheerder van deze site.',
|
||||
'An unexpected server error occurred. If this keeps happening, please contact a site administrator.' => 'Er is een onbekende fout opgetreden. Als dit zich herhaalt, neem dan contact op met een beheerder van deze site.',
|
||||
'An unknown error occurred while uploading.' => 'Er is een onbekende fout opgetreden tijdens het uploaden.',
|
||||
'An unknown error occurred while uploading. Hint: check your upload_max_filesize and post_max_size php settings.' => 'Er is een onbekende fout opgetreden tijdens het uploaden. Hint: controleer de «upload_max_filesize» en «post_max_size» php-instellingen.',
|
||||
'Back' => 'Terug',
|
||||
'Back to dashboard' => 'Terug naar het dashboard',
|
||||
'Cancel' => 'Annuleren',
|
||||
'Choose language:' => 'Kies een taal:',
|
||||
'Close' => 'Sluiten',
|
||||
'Collapse' => 'Inklappen',
|
||||
'Confirm' => 'Bevestig',
|
||||
'Content Addon source must be instance of HActiveRecordContent or HActiveRecordContentAddon!' => 'Content Addon bron moet een instantie van HActiveRecordContent of HActiveRecordContentAddon zijn!',
|
||||
'Copy to clipboard' => 'Kopieer naar klembord',
|
||||
'Could not determine content container!' => 'Kan de content container niet bepalen!',
|
||||
'Could not find content of addon!' => 'Kan de inhoud van deze addon niet vinden!',
|
||||
'Default' => 'Standaard',
|
||||
'Deny' => 'Weigeren',
|
||||
'Do you really want to perform this action?' => 'Weet u dit zeker?',
|
||||
'Error' => 'Fout',
|
||||
'Error while running your last action (Invalid request method).' => 'Fout bij het uitvoeren van uw laatste actie (Ongeldige request method).',
|
||||
'Error:' => 'Fout:',
|
||||
'Expand' => 'Uitklappen',
|
||||
'Export' => 'Exporteer',
|
||||
'Info:' => 'Informatie:',
|
||||
'Invalid request method!' => 'Ongeldige aanvraagmethode!',
|
||||
'It looks like you may have taken the wrong turn.' => 'U hebt misschien de verkeerde keuze gemaakt.',
|
||||
'Language' => 'Taal',
|
||||
'Loading...' => 'Laden...',
|
||||
'Login' => 'Log in',
|
||||
'Logo of {appName}' => 'Logo van {appName}',
|
||||
'Logout' => 'Uitloggen',
|
||||
'Menu' => 'Menu',
|
||||
'Module is not enabled on this content container!' => 'Module is niet op deze inhoud container ingeschakeld!',
|
||||
'My profile' => 'Mijn profiel',
|
||||
'My profile image' => 'Mijn profielafbeelding',
|
||||
'New profile image' => 'Nieuwe profielfoto',
|
||||
'Next' => 'Volgende',
|
||||
'No error information given.' => 'Geen fout informatie beschikbaar.',
|
||||
'Oooops...' => 'Oeps...',
|
||||
'Open' => 'Open',
|
||||
'Please type at least 3 characters' => 'Typ tenminste 3 tekens',
|
||||
'Profile dropdown' => 'Profiel keuzelijst',
|
||||
'Profile image of {displayName}' => 'Profielafbeelding van {displayName}',
|
||||
'Profile picture of {displayName}' => 'Profielafbeelding van {displayName}',
|
||||
'Save' => 'Opslaan',
|
||||
'Saved' => 'Opgeslagen',
|
||||
'Search' => 'Zoeken',
|
||||
'Select Me' => 'Klik op mij',
|
||||
'Show less' => 'Toon minder',
|
||||
'Show more' => 'Toon meer',
|
||||
'Some files could not be uploaded:' => 'Enkele bestanden zijn niet geüpload.',
|
||||
'Space not found!' => 'Ruimte niet gevonden!',
|
||||
'The date has to be in the past.' => 'De datum moet in het verleden liggen.',
|
||||
'The file has been deleted.' => 'Het bestand is verwijderd.',
|
||||
'The requested resource could not be found.' => 'De gevraagde hulpbron kan niet worden gevonden.',
|
||||
'The space has been archived.' => 'De ruimte is gearchiveerd.',
|
||||
'The space has been unarchived.' => 'De ruimte is uit het archief gehaald.',
|
||||
'Time Zone' => 'Tijdzone',
|
||||
'Toggle comment menu' => 'Aan/uit commentaar menu',
|
||||
'Toggle panel menu' => 'Aan/uit paneelmenu',
|
||||
'Toggle post menu' => 'Aan/uit berichten menu',
|
||||
'Toggle stream entry menu' => 'Aan/uit nieuwsberichten menu',
|
||||
'Unsubscribe' => 'Afmelden',
|
||||
'Upload' => 'Upload',
|
||||
'Upload file' => 'Upload bestand',
|
||||
'User not found!' => 'Gebruiker niet gevonden!',
|
||||
'You are not allowed to run this action.' => 'Het is niet toegestaan om deze actie uit te voeren.',
|
||||
];
|
||||
return array (
|
||||
'<strong>Confirm</strong> Action' => '<strong>Zeker</strong> weten?',
|
||||
'<strong>Latest</strong> updates' => '<strong>Laatste</strong> updates',
|
||||
'<strong>Mail</strong> summary' => '<strong>E-mail</strong> samenvatting',
|
||||
'Account settings' => 'Accountinstellingen',
|
||||
'Administration' => 'Administratie',
|
||||
'Allow' => 'Toestaan',
|
||||
'An error occurred while handling your last action. (Handler not found).' => 'Een fout ontstond bij het afhandelen van uw laatste actie. (Handler niet gevonden).',
|
||||
'An unexpected error occurred while loading the search result.' => 'Een onverwachte fout ontstond tijdens het laden van het zoekresultaat.',
|
||||
'An unexpected error occurred. If this keeps happening, please contact a site administrator.' => 'Een onverwachte fout ontstond. Als dit zich herhaalt, neem dan contact op met een beheerder van deze site.',
|
||||
'An unexpected server error occurred. If this keeps happening, please contact a site administrator.' => 'Er is een onbekende fout opgetreden. Als dit zich herhaalt, neem dan contact op met een beheerder van deze site.',
|
||||
'An unknown error occurred while uploading.' => 'Er is een onbekende fout opgetreden tijdens het uploaden.',
|
||||
'An unknown error occurred while uploading. Hint: check your upload_max_filesize and post_max_size php settings.' => 'Er is een onbekende fout opgetreden tijdens het uploaden. Hint: controleer de «upload_max_filesize» en «post_max_size» php-instellingen.',
|
||||
'Back' => 'Terug',
|
||||
'Back to dashboard' => 'Terug naar het dashboard',
|
||||
'Cancel' => 'Annuleren',
|
||||
'Choose language:' => 'Kies een taal:',
|
||||
'Close' => 'Sluiten',
|
||||
'Collapse' => 'Inklappen',
|
||||
'Confirm' => 'Bevestig',
|
||||
'Content Addon source must be instance of HActiveRecordContent or HActiveRecordContentAddon!' => 'Content Addon bron moet een instantie van HActiveRecordContent of HActiveRecordContentAddon zijn!',
|
||||
'Copy to clipboard' => 'Kopieer naar klembord',
|
||||
'Could not determine content container!' => 'Kan de content container niet bepalen!',
|
||||
'Could not find content of addon!' => 'Kan de inhoud van deze addon niet vinden!',
|
||||
'Default' => 'Standaard',
|
||||
'Deny' => 'Weigeren',
|
||||
'Do you really want to perform this action?' => 'Weet u dit zeker?',
|
||||
'Error' => 'Fout',
|
||||
'Error while running your last action (Invalid request method).' => 'Fout bij het uitvoeren van uw laatste actie (Ongeldige request method).',
|
||||
'Error:' => 'Fout:',
|
||||
'Expand' => 'Uitklappen',
|
||||
'Export' => 'Exporteer',
|
||||
'Info:' => 'Informatie:',
|
||||
'Invalid request method!' => 'Ongeldige aanvraagmethode!',
|
||||
'It looks like you may have taken the wrong turn.' => 'U hebt misschien de verkeerde keuze gemaakt.',
|
||||
'Language' => 'Taal',
|
||||
'Loading...' => 'Laden...',
|
||||
'Login' => 'Log in',
|
||||
'Logo of {appName}' => 'Logo van {appName}',
|
||||
'Logout' => 'Uitloggen',
|
||||
'Menu' => 'Menu',
|
||||
'Module is not enabled on this content container!' => 'Module is niet op deze inhoud container ingeschakeld!',
|
||||
'My profile' => 'Mijn profiel',
|
||||
'My profile image' => 'Mijn profielafbeelding',
|
||||
'New profile image' => 'Nieuwe profielfoto',
|
||||
'Next' => 'Volgende',
|
||||
'No error information given.' => 'Geen fout informatie beschikbaar.',
|
||||
'Oooops...' => 'Oeps...',
|
||||
'Open' => 'Open',
|
||||
'Please type at least 3 characters' => 'Typ tenminste 3 tekens',
|
||||
'Profile dropdown' => 'Profiel keuzelijst',
|
||||
'Profile image of {displayName}' => 'Profielafbeelding van {displayName}',
|
||||
'Profile picture of {displayName}' => 'Profielafbeelding van {displayName}',
|
||||
'Save' => 'Opslaan',
|
||||
'Saved' => 'Opgeslagen',
|
||||
'Search' => 'Zoeken',
|
||||
'Select Me' => 'Klik op mij',
|
||||
'Show less' => 'Toon minder',
|
||||
'Show more' => 'Toon meer',
|
||||
'Some files could not be uploaded:' => 'Enkele bestanden zijn niet geüpload.',
|
||||
'Space not found!' => 'Ruimte niet gevonden!',
|
||||
'Text could not be copied to clipboard' => 'De tekst kon niet worden gekopieerd naar het klembord.',
|
||||
'Text has been copied to clipboard' => 'De tekst is naar het klembord gekopieerd.',
|
||||
'The date has to be in the past.' => 'De datum moet in het verleden liggen.',
|
||||
'The file has been deleted.' => 'Het bestand is verwijderd.',
|
||||
'The requested resource could not be found.' => 'De gevraagde hulpbron kan niet worden gevonden.',
|
||||
'The space has been archived.' => 'De ruimte is gearchiveerd.',
|
||||
'The space has been unarchived.' => 'De ruimte is uit het archief gehaald.',
|
||||
'Time Zone' => 'Tijdzone',
|
||||
'Toggle comment menu' => 'Aan/uit commentaar menu',
|
||||
'Toggle panel menu' => 'Aan/uit paneelmenu',
|
||||
'Toggle post menu' => 'Aan/uit berichten menu',
|
||||
'Toggle stream entry menu' => 'Aan/uit nieuwsberichten menu',
|
||||
'Unsubscribe' => 'Afmelden',
|
||||
'Upload' => 'Upload',
|
||||
'Upload file' => 'Upload bestand',
|
||||
'User not found!' => 'Gebruiker niet gevonden!',
|
||||
'You are not allowed to run this action.' => 'Het is niet toegestaan om deze actie uit te voeren.',
|
||||
);
|
||||
|
@ -2,21 +2,21 @@
|
||||
return array (
|
||||
'<strong>E-Mail</strong> Summaries' => 'Résumés par <strong>e-mail</strong>',
|
||||
'Activities' => 'Activités',
|
||||
'Daily' => 'Quotidien ',
|
||||
'Daily' => 'par jour',
|
||||
'E-Mail Summaries' => 'Résumés par e-mail',
|
||||
'E-Mail summaries are sent to inform you about recent activities in the network.' => 'Des résumés sont envoyés par e-mail pour informer des activités récentes dans votre réseau. ',
|
||||
'E-Mail summaries are sent to users to inform them about recent activities in your network.' => 'Des résumés sont envoyés aux utilisateurs par e-mail pour les informer des activités récentes dans votre réseau.',
|
||||
'Exclude spaces below from the mail summary' => 'Exclure les espaces suivants de la liste des résumés par e-mail',
|
||||
'Hourly' => 'Horaire',
|
||||
'Hourly' => 'par heure',
|
||||
'Interval' => 'Intervalle',
|
||||
'Latest news' => 'Dernières nouvelles',
|
||||
'Never' => 'Jamais',
|
||||
'Never' => 'jamais',
|
||||
'On this page you can configure the contents and the interval of these e-mail updates.' => 'Sur cette page vous pouvez configurer le contenu et l\'intervalle de ces mises à jour par e-mail',
|
||||
'On this page you can define the default behavior for your users. These settings can be overwritten by users in their account settings page.' => 'Sur cette page vous pouvez définir les préférences par défaut des utilisateurs. Ces préférences peuvent êtres modifiées par les utilisateurs sur leur page de paramètres de compte.',
|
||||
'Only include spaces below to the mail summary' => 'Inclure uniquement les espaces suivants aux résumés par e-mail',
|
||||
'Reset to defaults' => 'Paramètres par défaut',
|
||||
'Spaces' => 'Espaces',
|
||||
'Weekly' => 'Hebdomadaire',
|
||||
'Weekly' => 'par semaine',
|
||||
'You will only receive an e-mail if there is something new.' => 'Vous recevrez un e-mail uniquement s\'il y a du nouveau à communiquer.',
|
||||
'Your daily summary' => 'Votre résumé quotidien',
|
||||
'Your weekly summary' => 'Votre résumé hebdomadaire',
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
return array (
|
||||
'<strong>Latest</strong> activities' => '<strong>Activités</strong> récentes',
|
||||
'There are no activities yet.' => 'Il n\'y a aucune activité récente.',
|
||||
'There are no activities yet.' => 'Il n\'y a pas d\'activité.',
|
||||
);
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -10,13 +10,14 @@
|
||||
|
||||
class_name: AcceptanceTester
|
||||
modules:
|
||||
enabled:
|
||||
- WebDriver
|
||||
- tests\codeception\_support\WebHelper
|
||||
- tests\codeception\_support\DynamicFixtureHelper
|
||||
config:
|
||||
WebDriver:
|
||||
url: http://localhost:8080/
|
||||
browser: firefox
|
||||
window_size: 1024x768
|
||||
lang: en
|
||||
enabled:
|
||||
- WebDriver:
|
||||
url: 'http://localhost:8080/'
|
||||
window_size: false # disabled in ChromeDriver
|
||||
port: 9515
|
||||
browser: chrome
|
||||
capabilities:
|
||||
chromeOptions:
|
||||
args: ['--headless', '--disable-gpu', '--no-sandbox']
|
||||
- tests\codeception\_support\WebHelper
|
||||
- tests\codeception\_support\DynamicFixtureHelper
|
@ -8,40 +8,16 @@
|
||||
|
||||
namespace humhub\modules\admin\controllers;
|
||||
|
||||
use humhub\components\export\DateTimeColumn;
|
||||
use humhub\components\export\SpreadsheetExport;
|
||||
use humhub\modules\admin\components\Controller;
|
||||
use humhub\modules\admin\models\PendingRegistrationSearch;
|
||||
use humhub\modules\admin\permissions\ManageGroups;
|
||||
use humhub\modules\admin\permissions\ManageUsers;
|
||||
use humhub\modules\user\models\Invite;
|
||||
use PHPExcel;
|
||||
use PHPExcel_Cell;
|
||||
use PHPExcel_Exception;
|
||||
use PHPExcel_IOFactory;
|
||||
use PHPExcel_Shared_Date;
|
||||
use PHPExcel_Style_NumberFormat;
|
||||
use PHPExcel_Worksheet;
|
||||
use Yii;
|
||||
use yii\helpers\Url;
|
||||
use yii\web\HttpException;
|
||||
|
||||
class PendingRegistrationsController extends Controller
|
||||
{
|
||||
|
||||
const EXPORT_CSV = 'csv';
|
||||
const EXPORT_XLSX = 'xsls';
|
||||
const EXPORT_PREFIX = 'pur_export';
|
||||
|
||||
const EXPORT_COLUMNS = [
|
||||
'email',
|
||||
'originator.username',
|
||||
'language',
|
||||
'source',
|
||||
'created_at',
|
||||
];
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function init()
|
||||
{
|
||||
$this->subLayout = '@admin/views/layouts/user';
|
||||
@ -64,223 +40,72 @@ class PendingRegistrationsController extends Controller
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Render PendingRegistrations
|
||||
*
|
||||
* @param bool $export
|
||||
* @param null $format
|
||||
* @return string
|
||||
*/
|
||||
public function actionIndex($export = false, $format = null)
|
||||
public function actionIndex()
|
||||
{
|
||||
$searchModel = new PendingRegistrationSearch();
|
||||
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
|
||||
|
||||
$urlExportCsv = Url::to([
|
||||
'export',
|
||||
'format' => self::EXPORT_CSV,
|
||||
'PendingRegistrationSearch' => Yii::$app->request->get('PendingRegistrationSearch')
|
||||
]);
|
||||
|
||||
$urlExportXlsx = Url::to([
|
||||
'export',
|
||||
'format' => self::EXPORT_XLSX,
|
||||
'PendingRegistrationSearch' => Yii::$app->request->get('PendingRegistrationSearch')
|
||||
]);
|
||||
|
||||
return $this->render('index', [
|
||||
'dataProvider' => $dataProvider,
|
||||
'searchModel' => $searchModel,
|
||||
'urlExportCsv' => $urlExportCsv,
|
||||
'urlExportXlsx' => $urlExportXlsx,
|
||||
'types' => $this->typeMapping(),
|
||||
'types' => [
|
||||
null => null,
|
||||
PendingRegistrationSearch::SOURCE_INVITE => Yii::t('AdminModule.base', 'Invite'),
|
||||
PendingRegistrationSearch::SOURCE_SELF => Yii::t('AdminModule.base', 'Sign up'),
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Export PendingRegistrations
|
||||
*
|
||||
* @param string $format
|
||||
* @throws PHPExcel_Exception
|
||||
* Export user list as csv or xlsx
|
||||
* @param string $format supported format by phpspreadsheet
|
||||
* @return \yii\web\Response
|
||||
* @throws \PhpOffice\PhpSpreadsheet\Exception
|
||||
* @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
|
||||
* @throws \yii\base\InvalidConfigException
|
||||
*/
|
||||
public function actionExport($format)
|
||||
{
|
||||
$searchModel = new PendingRegistrationSearch();
|
||||
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
|
||||
|
||||
/** @var PHPExcel $file */
|
||||
$file = $this->createCsvFile();
|
||||
$exporter = new SpreadsheetExport([
|
||||
'dataProvider' => $dataProvider,
|
||||
'columns' => $this->collectExportColumns(),
|
||||
'resultConfig' => [
|
||||
'fileBaseName' => 'humhub_user',
|
||||
'writerType' => $format,
|
||||
],
|
||||
]);
|
||||
|
||||
/** @var PHPExcel_Worksheet $worksheet */
|
||||
$worksheet = $file->getActiveSheet();
|
||||
|
||||
// Row counter
|
||||
$rowCount = 1;
|
||||
|
||||
// Build Header
|
||||
$this->buildCsvHeaderRow($worksheet, $rowCount, $searchModel);
|
||||
|
||||
// Set format for Date fields
|
||||
$formatDate = $format === self::EXPORT_CSV
|
||||
? Yii::$app->formatter->getDateTimePattern()
|
||||
: PHPExcel_Style_NumberFormat::FORMAT_DATE_DATETIME;
|
||||
|
||||
// Build Rows
|
||||
foreach ($dataProvider->query->all() as $record) {
|
||||
$rowCount++;
|
||||
$this->buildCsvRow($rowCount, $record, $worksheet, $formatDate);
|
||||
}
|
||||
|
||||
if ($format === self::EXPORT_CSV) {
|
||||
$this->exportAsCsv($file);
|
||||
} else {
|
||||
$this->exportAsXlsx($file);
|
||||
}
|
||||
return $exporter->export()->send();
|
||||
}
|
||||
|
||||
/**
|
||||
* Resend a invite
|
||||
*
|
||||
* @param integer $id
|
||||
* @return string
|
||||
* @throws HttpException
|
||||
*/
|
||||
public function actionResend($id)
|
||||
{
|
||||
$invite = Invite::findOne(['id' => $id]);
|
||||
if ($invite === null) {
|
||||
throw new HttpException(404, Yii::t(
|
||||
'AdminModule.controllers_PendingRegistrationsController',
|
||||
'Invite not found!'
|
||||
));
|
||||
}
|
||||
|
||||
if (Yii::$app->request->isPost) {
|
||||
$invite->sendInviteMail();
|
||||
$invite->save();
|
||||
$invite->refresh();
|
||||
$this->view->success(Yii::t(
|
||||
'AdminModule.controllers_PendingRegistrationsController',
|
||||
'Resend invitation email'
|
||||
));
|
||||
}
|
||||
|
||||
return $this->render('resend', ['model' => $invite]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return type mapping
|
||||
*
|
||||
* Return array with columns for data export
|
||||
* @return array
|
||||
*/
|
||||
private function typeMapping()
|
||||
private function collectExportColumns()
|
||||
{
|
||||
return [
|
||||
PendingRegistrationSearch::SOURCE_INVITE => Yii::t('AdminModule.base', 'Invite'),
|
||||
PendingRegistrationSearch::SOURCE_SELF => Yii::t('AdminModule.base', 'Sign up'),
|
||||
'id',
|
||||
'user_originator_id',
|
||||
'space_invite_id',
|
||||
'email',
|
||||
'source',
|
||||
[
|
||||
'class' => DateTimeColumn::className(),
|
||||
'attribute' => 'created_at',
|
||||
],
|
||||
'created_by',
|
||||
[
|
||||
'class' => DateTimeColumn::className(),
|
||||
'attribute' => 'updated_at',
|
||||
],
|
||||
'updated_by',
|
||||
'language',
|
||||
'firstname',
|
||||
'lastname',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Export the file as Csv
|
||||
*
|
||||
* @param PHPExcel $file
|
||||
* @throws \PHPExcel_Reader_Exception
|
||||
* @throws \PHPExcel_Writer_Exception
|
||||
*/
|
||||
private function exportAsCsv($file)
|
||||
{
|
||||
header('Content-Type: application/csv');
|
||||
header('Content-Disposition: attachment;filename="' . self::EXPORT_PREFIX . '_' . time() . '.csv"');
|
||||
header('Cache-Control: max-age=0');
|
||||
|
||||
/** @var \PHPExcel_Writer_CSV $writer */
|
||||
$writer = PHPExcel_IOFactory::createWriter($file, 'CSV');
|
||||
$writer->setDelimiter(';');
|
||||
$writer->save('php://output');
|
||||
}
|
||||
|
||||
/**
|
||||
* Export the file as Xlsx
|
||||
*
|
||||
* @param PHPExcel $file
|
||||
* @throws \PHPExcel_Reader_Exception
|
||||
* @throws \PHPExcel_Writer_Exception
|
||||
*/
|
||||
private function exportAsXlsx($file)
|
||||
{
|
||||
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
|
||||
header('Content-Disposition: attachment;filename="' . self::EXPORT_PREFIX . '_' . time() . '.xlsx"');
|
||||
header('Cache-Control: max-age=0');
|
||||
|
||||
/** @var \PHPExcel_Writer_Excel2007 $writer */
|
||||
$writer = PHPExcel_IOFactory::createWriter($file, 'Excel2007');
|
||||
$writer->save('php://output');
|
||||
}
|
||||
|
||||
/**
|
||||
* Build a row for csv document
|
||||
*
|
||||
* @param integer $row
|
||||
* @param PendingRegistrationSearch $record
|
||||
* @param PHPExcel_Worksheet $worksheet
|
||||
* @param string $formatDate
|
||||
*/
|
||||
private function buildCsvRow($row, $record, $worksheet, $formatDate)
|
||||
{
|
||||
for ($i = 0; $i < count(self::EXPORT_COLUMNS); $i++) {
|
||||
$name = self::EXPORT_COLUMNS[$i];
|
||||
$value = $record->{$name};
|
||||
|
||||
if ($name === 'source') {
|
||||
$typeMapping = $this->typeMapping();
|
||||
$value = isset($typeMapping[$value]) ? $typeMapping[$value] : $value;
|
||||
}
|
||||
|
||||
if ($name === 'created_at') {
|
||||
$worksheet->getStyleByColumnAndRow($i, $row)->getNumberFormat()->setFormatCode($formatDate);
|
||||
$value = PHPExcel_Shared_Date::PHPToExcel(new \DateTime($value));
|
||||
}
|
||||
|
||||
$worksheet->setCellValueByColumnAndRow($i, $row, $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Build header row for csv document
|
||||
*
|
||||
* @param PHPExcel_Worksheet $worksheet
|
||||
* @param integer $row
|
||||
* @param PendingRegistrationSearch $searchModel
|
||||
*/
|
||||
private function buildCsvHeaderRow($worksheet, $row, $searchModel)
|
||||
{
|
||||
for ($i = 0; $i < count(self::EXPORT_COLUMNS); $i++) {
|
||||
$worksheet->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($i))->setWidth(30);
|
||||
$worksheet->setCellValueByColumnAndRow($i, $row, $searchModel->getAttributeLabel(self::EXPORT_COLUMNS[$i]));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return new PHPExcel file
|
||||
*
|
||||
* @return PHPExcel
|
||||
*/
|
||||
private function createCsvFile()
|
||||
{
|
||||
$title = Yii::t(
|
||||
'AdminModule.base',
|
||||
'Pending user registrations'
|
||||
);
|
||||
|
||||
/** @var PHPExcel $file */
|
||||
$file = new PHPExcel();
|
||||
$file->getProperties()
|
||||
->setCreator('HumHub')
|
||||
->setTitle($title)
|
||||
->setSubject($title)
|
||||
->setDescription($title);
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
@ -8,20 +8,26 @@
|
||||
|
||||
namespace humhub\modules\admin\controllers;
|
||||
|
||||
use Yii;
|
||||
use yii\helpers\Url;
|
||||
use yii\web\HttpException;
|
||||
use humhub\compat\HForm;
|
||||
use humhub\modules\user\models\User;
|
||||
use humhub\modules\user\models\Invite;
|
||||
use humhub\modules\user\models\forms\Registration;
|
||||
use humhub\components\export\DateTimeColumn;
|
||||
use humhub\components\export\SpreadsheetExport;
|
||||
use humhub\modules\admin\components\Controller;
|
||||
use humhub\modules\admin\models\forms\UserEditForm;
|
||||
use humhub\modules\admin\permissions\ManageUsers;
|
||||
use humhub\modules\admin\models\UserSearch;
|
||||
use humhub\modules\admin\permissions\ManageGroups;
|
||||
use humhub\modules\admin\permissions\ManageSettings;
|
||||
use humhub\modules\admin\models\forms\UserDeleteForm;
|
||||
use humhub\modules\admin\models\UserSearch;
|
||||
use humhub\modules\admin\permissions\ManageUsers;
|
||||
use humhub\modules\space\models\Membership;
|
||||
use humhub\modules\user\models\forms\Registration;
|
||||
use humhub\modules\user\models\ProfileField;
|
||||
use humhub\modules\user\models\User;
|
||||
use Yii;
|
||||
use yii\helpers\Url;
|
||||
use yii\web\HttpException;
|
||||
|
||||
/**
|
||||
* User management
|
||||
@ -69,6 +75,7 @@ class UserController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns a List of Users
|
||||
*/
|
||||
@ -177,8 +184,8 @@ class UserController extends Controller
|
||||
}
|
||||
|
||||
return $this->render('edit', [
|
||||
'hForm' => $form,
|
||||
'user' => $user
|
||||
'hForm' => $form,
|
||||
'user' => $user
|
||||
]);
|
||||
}
|
||||
|
||||
@ -196,8 +203,9 @@ class UserController extends Controller
|
||||
|
||||
/**
|
||||
* Deletes a user permanently
|
||||
* @throws HttpException
|
||||
*/
|
||||
public function actionDelete($id)
|
||||
public function actionDelete($id)
|
||||
{
|
||||
$user = User::findOne(['id' => $id]);
|
||||
if ($user == null) {
|
||||
@ -205,15 +213,14 @@ class UserController extends Controller
|
||||
} elseif (Yii::$app->user->id == $id) {
|
||||
throw new HttpException(400, Yii::t('AdminModule.user', 'You cannot delete yourself!'));
|
||||
}
|
||||
|
||||
$model = new UserDeleteForm(['user' => $user]);
|
||||
if ($model->load(Yii::$app->request->post()) && $model->performDelete()) {
|
||||
$this->view->info(Yii::t('AdminModule.user', 'User deletion process queued.'));
|
||||
return $this->redirect(['list']);
|
||||
}
|
||||
|
||||
return $this->render('delete', ['model' => $model]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Redirect to user profile
|
||||
@ -302,4 +309,72 @@ class UserController extends Controller
|
||||
return Yii::$app->user->isAdmin() && $user->id != Yii::$app->user->getIdentity()->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Export user list as csv or xlsx
|
||||
* @param string $format supported format by phpspreadsheet
|
||||
* @return \yii\web\Response
|
||||
* @throws \PhpOffice\PhpSpreadsheet\Exception
|
||||
* @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
|
||||
* @throws \yii\base\InvalidConfigException
|
||||
*/
|
||||
public function actionExport($format)
|
||||
{
|
||||
$searchModel = new UserSearch();
|
||||
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
|
||||
$dataProvider->pagination = false;
|
||||
|
||||
$exporter = new SpreadsheetExport([
|
||||
'dataProvider' => $dataProvider,
|
||||
'columns' => $this->collectExportColumns(),
|
||||
'resultConfig' => [
|
||||
'fileBaseName' => 'humhub_user',
|
||||
'writerType' => $format,
|
||||
],
|
||||
]);
|
||||
|
||||
return $exporter->export()->send();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return array with columns for data export
|
||||
* @return array
|
||||
*/
|
||||
private function collectExportColumns()
|
||||
{
|
||||
$userColumns = [
|
||||
'id',
|
||||
'guid',
|
||||
'status',
|
||||
'username',
|
||||
'email',
|
||||
'auth_mode',
|
||||
'tags',
|
||||
'language',
|
||||
'time_zone',
|
||||
[
|
||||
'class' => DateTimeColumn::className(),
|
||||
'attribute' => 'created_at',
|
||||
],
|
||||
'created_by',
|
||||
[
|
||||
'class' => DateTimeColumn::className(),
|
||||
'attribute' => 'updated_at',
|
||||
],
|
||||
'updated_by',
|
||||
[
|
||||
'class' => DateTimeColumn::className(),
|
||||
'attribute' => 'last_login',
|
||||
],
|
||||
'authclient_id',
|
||||
'visibility',
|
||||
];
|
||||
|
||||
$profileColumns = (new \yii\db\Query())
|
||||
->select(['CONCAT(\'profile.\', internal_name)'])
|
||||
->from(ProfileField::tableName())
|
||||
->orderBy(['profile_field_category_id' => SORT_ASC, 'sort_order' => SORT_ASC])
|
||||
->column();
|
||||
|
||||
return array_merge($userColumns, $profileColumns);
|
||||
}
|
||||
}
|
||||
|
@ -1,51 +1,34 @@
|
||||
<?php
|
||||
/**
|
||||
* Message translations.
|
||||
*
|
||||
* This file is automatically generated by 'yii message/extract' command.
|
||||
* It contains the localizable messages extracted from source code.
|
||||
* You may modify this file by translating the extracted messages.
|
||||
*
|
||||
* Each array element represents the translation (value) of a message (key).
|
||||
* If the value is empty, the message is considered as not translated.
|
||||
* Messages that no longer need translation will have their translations
|
||||
* enclosed between a pair of '@@' marks.
|
||||
*
|
||||
* Message string can be used with plural forms format. Check i18n section
|
||||
* of the guide for details.
|
||||
*
|
||||
* NOTE: this file must be saved in UTF-8 encoding.
|
||||
*/
|
||||
return [
|
||||
'Base URL needs to begin with http:// or https://' => '',
|
||||
'About' => 'À propos',
|
||||
'Add purchased module by licence key' => 'Ajouter un module acheté par sa clé de licence',
|
||||
'Admin' => 'Admin',
|
||||
'Administration' => 'Administration',
|
||||
'Approval' => 'Approbation',
|
||||
'Authentication' => 'Authentification',
|
||||
'Back to overview' => 'Retour à l\'aperçu',
|
||||
'Back to user overview' => 'Retour ',
|
||||
'Basic' => 'Général',
|
||||
'Caching' => 'Cache',
|
||||
'Cronjobs' => 'Tâches planifiées',
|
||||
'Design' => 'Design',
|
||||
'Files' => 'Fichiers',
|
||||
'Groups' => 'Groupes',
|
||||
'Invite' => 'Invitation',
|
||||
'Invited by' => 'Invité par',
|
||||
'Logging' => 'Journaux',
|
||||
'Mailing' => 'Envoi d\'e-mail',
|
||||
'Modules' => 'Modules',
|
||||
'OEmbed providers' => 'Fournisseurs OEmbed',
|
||||
'Pending user registrations' => 'Utilisateur(s) en attente d\'enregistrement',
|
||||
'Proxy' => 'Serveur Proxy',
|
||||
'Security' => 'Sécurité',
|
||||
'Self test' => 'Tests automatiques',
|
||||
'Sign up' => 'S\'inscrire',
|
||||
'Spaces' => 'Espaces',
|
||||
'Statistics' => 'Statistiques',
|
||||
'User posts' => 'Contenu de l\'utilisateur',
|
||||
'Userprofiles' => 'Profils utilisateurs',
|
||||
'Users' => 'Utilisateurs',
|
||||
];
|
||||
return array (
|
||||
'About' => 'À propos',
|
||||
'Add purchased module by licence key' => 'Ajouter un module acheté par sa clé de licence',
|
||||
'Admin' => 'Admin',
|
||||
'Administration' => 'Administration',
|
||||
'Approval' => 'Approbation',
|
||||
'Authentication' => 'Authentification',
|
||||
'Back to overview' => 'Retour à l\'aperçu',
|
||||
'Back to user overview' => 'Retour ',
|
||||
'Base URL needs to begin with http:// or https://' => 'L\'URL doit commencer par http:// ou https://',
|
||||
'Basic' => 'Général',
|
||||
'Caching' => 'Mise en cache',
|
||||
'Cronjobs' => 'Tâches planifiées',
|
||||
'Design' => 'Design',
|
||||
'Files' => 'Fichiers',
|
||||
'Groups' => 'Groupes',
|
||||
'Invite' => 'Invitation',
|
||||
'Invited by' => 'Invité par',
|
||||
'Logging' => 'Journal',
|
||||
'Mailing' => 'Envoi d\'e-mail',
|
||||
'Modules' => 'Modules',
|
||||
'OEmbed providers' => 'Fournisseurs OEmbed',
|
||||
'Pending user registrations' => 'Utilisateur(s) en attente d\'enregistrement',
|
||||
'Proxy' => 'Serveur Proxy',
|
||||
'Security' => 'Sécurité',
|
||||
'Self test' => 'Tests automatiques',
|
||||
'Sign up' => 'S\'inscrire',
|
||||
'Spaces' => 'Espaces',
|
||||
'Statistics' => 'Statistiques',
|
||||
'User posts' => 'Contenu de l\'utilisateur',
|
||||
'Userprofiles' => 'Profils utilisateurs',
|
||||
'Users' => 'Utilisateurs',
|
||||
);
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
return array (
|
||||
'None - shows dropdown in user registration.' => 'Aucun - Liste déroulante lors de l\'enregistrement.',
|
||||
'None - shows dropdown in user registration.' => 'Aucun (afficher une liste déroulante lors de l\'inscription)',
|
||||
'Saved' => 'Enregistré',
|
||||
'Saved and flushed cache' => 'Enregistré et cache purgé',
|
||||
);
|
||||
|
@ -1,13 +1,13 @@
|
||||
<?php
|
||||
return array (
|
||||
'Add Groups...' => 'Ajouter un Groupe',
|
||||
'Add Groups...' => 'Ajouter un groupe',
|
||||
'Become this user' => 'Devenir cet utilisateur',
|
||||
'Delete' => 'Supprimer',
|
||||
'Disabled' => 'Désactivé',
|
||||
'Enabled' => 'Activé',
|
||||
'Save' => 'Enregistrer',
|
||||
'Select Groups' => 'Sélectionner un Groupe',
|
||||
'Unapproved' => 'Non Approuvé',
|
||||
'Select Groups' => 'Sélectionner un groupe',
|
||||
'Unapproved' => 'Non approuvé',
|
||||
'User not found!' => 'Utilisateur introuvable.',
|
||||
'You cannot delete yourself!' => 'Vous ne pouvez pas vous supprimer vous-même.',
|
||||
);
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
return array (
|
||||
'Message' => 'Message',
|
||||
'Subject' => 'Objet',
|
||||
'Subject' => 'Sujet',
|
||||
);
|
||||
|
@ -12,6 +12,6 @@ return array (
|
||||
'Password' => 'Mot de passe',
|
||||
'Port' => 'Port',
|
||||
'User Filer' => 'Filtre utilisateur',
|
||||
'Username' => 'Nom d\'utilisateur',
|
||||
'Username' => 'Identifiant',
|
||||
'Username Attribute' => 'Attribut utilisateur',
|
||||
);
|
||||
|
@ -1,12 +1,12 @@
|
||||
<?php
|
||||
return array (
|
||||
'Allow limited access for non-authenticated users (guests)' => 'Autoriser un accès limité pour les utilisateurs non authentifiés (invités)',
|
||||
'Anonymous users can register' => 'Les utilisateurs anonymes peuvent s\'enregistrer',
|
||||
'Default content of the registration approval email' => 'Contenu par défaut de l\'e-mail d\'approbation d\'inscription',
|
||||
'Default content of the registration denial email' => 'Contenu par défaut de l\'e-mail de refus lors de l\'inscription',
|
||||
'Allow limited access for non-authenticated users (guests)' => 'Autoriser un accès limité pour les utilisateurs non identifiés (visiteurs)',
|
||||
'Anonymous users can register' => 'Les utilisateurs non identifiés (visiteurs) peuvent s\'inscrire',
|
||||
'Default content of the registration approval email' => 'Contenu du message d\'approbation d\'inscription envoyé par e-mail',
|
||||
'Default content of the registration denial email' => 'Contenu du message de refus d\'inscription envoyée par e-mail',
|
||||
'Default user group for new users' => 'Groupe par défaut pour les nouveaux utilisateurs',
|
||||
'Default user idle timeout, auto-logout (in seconds, optional)' => 'Temporisation d\'inactivité par défaut, déconnexion automatique (en secondes, optionnel)',
|
||||
'Default user profile visibility' => 'Visibilité par défaut des profils utilisateurs',
|
||||
'Members can invite external users by email' => 'Les membres peuvent inviter des utilisateurs externes par e-mail',
|
||||
'Require group admin approval after registration' => 'L\'approbation de l\'administrateur du groupe est requis après l\'enregistrement',
|
||||
'Members can invite external users by email' => 'Les membres peuvent inviter des nouvelles personnes par e-mail',
|
||||
'Require group admin approval after registration' => 'L\'approbation d\'un administrateur du groupe est requis après l\'enregistrement',
|
||||
);
|
||||
|
@ -4,15 +4,15 @@ return array (
|
||||
'Date input format' => 'Format de saisie de date',
|
||||
'Default language' => 'Langue par défaut',
|
||||
'Default space' => 'Espace par défaut',
|
||||
'Default stream content order' => 'Ordre du contenu par défaut dans le flux',
|
||||
'Enable user friendship system' => 'Activer le système d\'amitié entre les utilisateurs',
|
||||
'Default stream content order' => 'Ordre du contenu par défaut dans le fil d\'actualités',
|
||||
'Enable user friendship system' => 'Activer le système d\'amitié',
|
||||
'Horizontal scrolling images on a mobile device' => 'Défilement horizontal des images pour les mobiles',
|
||||
'Invalid space' => 'Espace invalide',
|
||||
'Logo upload' => 'Charger un logo',
|
||||
'Name of the application' => 'Nom de l\'application',
|
||||
'Server Timezone' => 'Fuseau horaire du serveur',
|
||||
'Show introduction tour for new users' => 'Afficher les "premiers pas" pour les nouveaux utilisateurs',
|
||||
'Show user profile post form on dashboard' => 'Montrer les contenus du profil utilisateur sur le fil d\'actualité',
|
||||
'Sort by creation date' => 'Trier par date de création',
|
||||
'Sort by update date' => 'Trier par date de mise à jour',
|
||||
'Show user profile post form on dashboard' => 'Afficher le contenu du profil utilisateur sur le fil d\'actualités',
|
||||
'Sort by creation date' => 'par date de création',
|
||||
'Sort by update date' => 'par date de mise à jour',
|
||||
);
|
||||
|
@ -1,29 +1,12 @@
|
||||
<?php
|
||||
/**
|
||||
* Message translations.
|
||||
*
|
||||
* This file is automatically generated by 'yii message/extract' command.
|
||||
* It contains the localizable messages extracted from source code.
|
||||
* You may modify this file by translating the extracted messages.
|
||||
*
|
||||
* Each array element represents the translation (value) of a message (key).
|
||||
* If the value is empty, the message is considered as not translated.
|
||||
* Messages that no longer need translation will have their translations
|
||||
* enclosed between a pair of '@@' marks.
|
||||
*
|
||||
* Message string can be used with plural forms format. Check i18n section
|
||||
* of the guide for details.
|
||||
*
|
||||
* NOTE: this file must be saved in UTF-8 encoding.
|
||||
*/
|
||||
return [
|
||||
'Allowed file extensions' => 'Extensions autorisées',
|
||||
'Convert command not found!' => 'Commande de conversion non trouvée !',
|
||||
'Got invalid image magick response! - Correct command?' => 'Réponse de "Image Magick" incorrecte - Votre commande est-elle juste ?',
|
||||
'Hide file info (name, size) for images on wall' => 'Cacher les informations de fichier (nom, taille) pour les images sur le flux',
|
||||
'Image Magick convert command (optional)' => 'Commande de conversion "Image Magick" (optionnel)',
|
||||
'Maximum preview image height (in pixels, optional)' => 'Hauteur maximum de l\'aperçu d\'image (en pixels, optionnel)',
|
||||
'Maximum preview image width (in pixels, optional)' => 'Largeur maximum de l\'aperçu d\'image (en pixels, optionnel)',
|
||||
'Maximum upload file size (in MB)' => 'Taille de fichier en Upload maximum (en Mo)',
|
||||
'Use X-Sendfile for File Downloads' => 'Utiliser X-Sendfile pour les téléchargements',
|
||||
];
|
||||
return array (
|
||||
'Allowed file extensions' => 'Extensions autorisées',
|
||||
'Convert command not found!' => 'Commande de conversion non trouvée.',
|
||||
'Got invalid image magick response! - Correct command?' => 'Réponse de "Image Magick" incorrecte - Votre commande est-elle juste ?',
|
||||
'Hide file info (name, size) for images on wall' => 'Cacher les informations de fichier (nom, taille) pour les images sur le flux',
|
||||
'Image Magick convert command (optional)' => 'Commande de conversion "Image Magick" (optionnel)',
|
||||
'Maximum preview image height (in pixels, optional)' => 'Hauteur maximum de l\'aperçu d\'image (en pixels, optionnel)',
|
||||
'Maximum preview image width (in pixels, optional)' => 'Largeur maximum de l\'aperçu d\'image (en pixels, optionnel)',
|
||||
'Maximum upload file size (in MB)' => 'Taille maximale autorisée pour le transfert de fichiers (en Mo)',
|
||||
'Use X-Sendfile for File Downloads' => 'Utiliser X-Sendfile pour les téléchargements',
|
||||
);
|
||||
|
@ -7,5 +7,5 @@ return array (
|
||||
'Mail Transport Type' => 'Type de transport des e-mails',
|
||||
'Password' => 'Mot de passe',
|
||||
'Port number' => 'Port (p.ex. 25)',
|
||||
'Username' => 'Nom d\'utilisateur',
|
||||
'Username' => 'Identifiant',
|
||||
);
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
return array (
|
||||
'Endpoint Url' => 'URL de point de terminaison',
|
||||
'Url Prefix' => 'Préfixe d\'URL',
|
||||
'Url Prefix' => 'Préfixe de l\'URL',
|
||||
);
|
||||
|
@ -5,5 +5,5 @@ return array (
|
||||
'Password' => 'Mot de passe',
|
||||
'Port' => 'Port',
|
||||
'Server' => 'Serveur',
|
||||
'User' => 'Nom d\'utilisateur',
|
||||
'User' => 'Identifiant',
|
||||
);
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
return array (
|
||||
'Default Content Visiblity' => 'Visibilité par défaut des contenus',
|
||||
'Default Content Visiblity' => 'Visibilité des contenus par défaut',
|
||||
'Default Join Policy' => 'Politique d\'adhésion par défaut',
|
||||
'Default Visibility' => 'Visibilité par défaut',
|
||||
);
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
return array (
|
||||
'HTML tracking code' => 'Code HTML de suivi de statistiques',
|
||||
'Maximum allowed age for logs.' => 'Âge maximum pour les journaux.',
|
||||
'Maximum allowed age for logs.' => 'Âge maximum pour les journaux',
|
||||
);
|
||||
|
@ -1,8 +1,8 @@
|
||||
<?php
|
||||
return array (
|
||||
'About HumHub' => 'A propos de HumHub',
|
||||
'About HumHub' => 'À propos de HumHub',
|
||||
'CronJobs' => 'Tâches planifiées',
|
||||
'Database' => 'Base de données',
|
||||
'Logging' => 'Journal',
|
||||
'Prerequisites' => 'Prérequis',
|
||||
'Prerequisites' => 'Pré-requis',
|
||||
);
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
return array (
|
||||
'Administrative' => 'Administratif',
|
||||
'Receive Notifications for administrative events like available updates.' => 'Recevoir des notifications pour des événements administratifs comme les mises à jour disponibles.',
|
||||
'Receive Notifications for administrative events like available updates.' => 'Recevoir des notifications système (p.ex. une mise à jour disponible)',
|
||||
);
|
||||
|
@ -2,7 +2,7 @@
|
||||
return array (
|
||||
'<strong>Information</strong>' => '<strong>Information</strong>',
|
||||
'<strong>Settings</strong> and Configuration' => '<strong>Paramètres</strong> et configuration',
|
||||
'<strong>User</strong> administration' => 'Administration <strong>des utilisateurs</strong>',
|
||||
'<strong>User</strong> administration' => 'Gestion des <strong>utilisateurs</strong>',
|
||||
'Add new group' => 'Ajouter un groupe',
|
||||
'Groups' => 'Groupes',
|
||||
'Manage group: {groupName}' => 'Gérer le groupe : {groupName}',
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
return array (
|
||||
'Create new group' => 'Créer un groupe',
|
||||
'Create new group' => 'Ajouter un groupe',
|
||||
'Members' => 'Membres',
|
||||
'Permissions' => 'Permissions',
|
||||
'Users can be assigned to different groups (e.g. teams, departments etc.) with specific standard spaces, group managers and permissions.' => 'Les utilisateurs peuvent être affectés à différents groupes (par exemple équipes, départements, etc.) avec des espaces standards, des gestionnaires de groupe et des permissions spécifiques.',
|
||||
'Users can be assigned to different groups (e.g. teams, departments etc.) with specific standard spaces, group managers and permissions.' => 'Les utilisateurs peuvent être affectés à différents groupes (p.ex. : équipes, départements, etc.) avec des espaces standards, des gestionnaires de groupe et des permissions spécifiques.',
|
||||
);
|
||||
|
@ -1,23 +1,6 @@
|
||||
<?php
|
||||
/**
|
||||
* Message translations.
|
||||
*
|
||||
* This file is automatically generated by 'yii message/extract' command.
|
||||
* It contains the localizable messages extracted from source code.
|
||||
* You may modify this file by translating the extracted messages.
|
||||
*
|
||||
* Each array element represents the translation (value) of a message (key).
|
||||
* If the value is empty, the message is considered as not translated.
|
||||
* Messages that no longer need translation will have their translations
|
||||
* enclosed between a pair of '@@' marks.
|
||||
*
|
||||
* Message string can be used with plural forms format. Check i18n section
|
||||
* of the guide for details.
|
||||
*
|
||||
* NOTE: this file must be saved in UTF-8 encoding.
|
||||
*/
|
||||
return [
|
||||
'Displaying {count} entries per page.' => 'Afficher {count} entrées par page.',
|
||||
'Flush entries' => 'Vider le journal',
|
||||
'Total {count} entries found.' => '{count} entrées ont été trouvées au total.',
|
||||
];
|
||||
return array (
|
||||
'Displaying {count} entries per page.' => 'Afficher {count} entrées par page.',
|
||||
'Flush entries' => 'Vider le journal',
|
||||
'Total {count} entries found.' => '{count} entrées trouvées au total.',
|
||||
);
|
||||
|
@ -1,8 +1,8 @@
|
||||
<?php
|
||||
return array (
|
||||
'Available updates' => 'Mises à jour disponibles',
|
||||
'Available updates' => 'Mise à jour',
|
||||
'Browse online' => 'Voir en ligne',
|
||||
'Installed' => 'Installés',
|
||||
'Modules extend the functionality of HumHub. Here you can install and manage modules from the HumHub Marketplace.' => 'Les modules étendent les fonctionnalités de HumHub. C\'est ici que vous pouvez installer et gérer les modules de la place de marché de HumHub.',
|
||||
'Modules extend the functionality of HumHub. Here you can install and manage modules from the HumHub Marketplace.' => 'Les modules étendent les fonctionnalités de HumHub. C\'est ici que vous pouvez installer et gérer les modules disponibles sur HumHub Marketplace.',
|
||||
'Purchases' => 'Achats',
|
||||
);
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
return array (
|
||||
'<strong>Module</strong> details' => 'Détails du <strong>Module</strong>',
|
||||
'This module doesn\'t provide further informations.' => 'Ce module ne fournit pas d\'autres informations.',
|
||||
'<strong>Module</strong> details' => 'Détails du <strong>module</strong>',
|
||||
'This module doesn\'t provide further informations.' => 'Ce module ne fournit aucune information complémentaire.',
|
||||
);
|
||||
|
@ -1,13 +1,13 @@
|
||||
<?php
|
||||
return array (
|
||||
'<strong>Modules</strong> directory' => 'Liste des <strong>modules</strong>',
|
||||
'Are you sure? *ALL* module data will be lost!' => 'Êtes-vous sûr ? <strong>*TOUTES*</strong> les données du module seront perdues !',
|
||||
'Are you sure? *ALL* module related data and files will be lost!' => 'Êtes-vous sûr ? <strong>*TOUTES*</strong> les données et <strong>*TOUS*</strong> les fichiers du module seront perdus !',
|
||||
'<strong>Modules</strong> directory' => 'Gestion des <strong>modules</strong>',
|
||||
'Are you sure? *ALL* module data will be lost!' => 'Êtes-vous sûr ? <strong>*TOUTES*</strong> les données du module seront définitivement perdues !',
|
||||
'Are you sure? *ALL* module related data and files will be lost!' => 'Êtes-vous sûr ? <strong>*TOUTES*</strong> les données et <strong>*TOUS*</strong> les fichiers du module seront définitivement perdus !',
|
||||
'Configure' => 'Configurer',
|
||||
'Disable' => 'Désactiver',
|
||||
'Enable' => 'Activer',
|
||||
'Enable module...' => 'Activer le module...',
|
||||
'More info' => 'Plus d\'informations',
|
||||
'More info' => 'Plus d\'infos',
|
||||
'Set as default' => 'Définir par défaut',
|
||||
'Uninstall' => 'Désinstaller',
|
||||
);
|
||||
|
@ -1,13 +1,13 @@
|
||||
<?php
|
||||
return array (
|
||||
'<strong>Modules</strong> directory' => 'Liste des <strong>modules</strong>',
|
||||
'<strong>Modules</strong> directory' => 'Gestion des <strong>modules</strong>',
|
||||
'Buy (%price%)' => 'Acheter (%price%)',
|
||||
'Disclaimer' => 'Avertissement',
|
||||
'Install' => 'Installer',
|
||||
'Installing module...' => 'Installation du module en cours...',
|
||||
'Installing module...' => 'Installation du module...',
|
||||
'Latest compatible version:' => 'Dernière version compatible :',
|
||||
'Latest version:' => 'Dernière version : ',
|
||||
'Licence Key:' => 'Clé de licence :',
|
||||
'More info' => 'Plus d\'informations',
|
||||
'More info' => 'Plus d\'infos',
|
||||
'No compatible module version found!' => 'Aucun module compatible n\'a été trouvé.',
|
||||
);
|
||||
|
@ -1,8 +1,8 @@
|
||||
<?php
|
||||
return array (
|
||||
'<strong>Modules</strong> directory' => 'Répertoire des <strong>modules</strong>',
|
||||
'<strong>Modules</strong> directory' => 'Gestion des <strong>modules</strong>',
|
||||
'Installed version:' => 'Version installée :',
|
||||
'Latest compatible Version:' => 'Dernière version compatible :',
|
||||
'Update' => 'Mettre à jour',
|
||||
'Updating module...' => 'Mise à jour du module en cours...',
|
||||
'Updating module...' => 'Mise à jour du module...',
|
||||
);
|
||||
|
@ -6,6 +6,6 @@ return array (
|
||||
'Min value is 20 seconds. If not set, session will timeout after 1400 seconds (24 minutes) regardless of activity (default session timeout)' => 'La valeur minimum est de 20 secondes. Si non définie, la session expirera après 1400 secondes (24 minutes), quelle que soit l\'activité (expiration de session par défaut)',
|
||||
'Only applicable when limited access for non-authenticated users is enabled. Only affects new users.' => 'Applicable uniquement quand l\'accès limité pour les utilisateurs non authentifiés est activé. N\'affecte que les nouveaux utilisateurs.',
|
||||
'Save' => 'Enregistrer',
|
||||
'Visible for members only' => 'Visible seulement par les membres',
|
||||
'Visible for members+guests' => 'Visible par les membres+invités',
|
||||
'Visible for members only' => 'Visible par les membres uniquement',
|
||||
'Visible for members+guests' => 'Visible par les membres et visiteurs',
|
||||
);
|
||||
|
@ -1,21 +1,4 @@
|
||||
<?php
|
||||
/**
|
||||
* Message translations.
|
||||
*
|
||||
* This file is automatically generated by 'yii message/extract' command.
|
||||
* It contains the localizable messages extracted from source code.
|
||||
* You may modify this file by translating the extracted messages.
|
||||
*
|
||||
* Each array element represents the translation (value) of a message (key).
|
||||
* If the value is empty, the message is considered as not translated.
|
||||
* Messages that no longer need translation will have their translations
|
||||
* enclosed between a pair of '@@' marks.
|
||||
*
|
||||
* Message string can be used with plural forms format. Check i18n section
|
||||
* of the guide for details.
|
||||
*
|
||||
* NOTE: this file must be saved in UTF-8 encoding.
|
||||
*/
|
||||
return [
|
||||
'Save & Flush Caches' => 'Enregistrer & Purger le cache',
|
||||
];
|
||||
return array (
|
||||
'Save & Flush Caches' => 'Enregistrer et purger le cache',
|
||||
);
|
||||
|
@ -1,26 +1,9 @@
|
||||
<?php
|
||||
/**
|
||||
* Message translations.
|
||||
*
|
||||
* This file is automatically generated by 'yii message/extract' command.
|
||||
* It contains the localizable messages extracted from source code.
|
||||
* You may modify this file by translating the extracted messages.
|
||||
*
|
||||
* Each array element represents the translation (value) of a message (key).
|
||||
* If the value is empty, the message is considered as not translated.
|
||||
* Messages that no longer need translation will have their translations
|
||||
* enclosed between a pair of '@@' marks.
|
||||
*
|
||||
* Message string can be used with plural forms format. Check i18n section
|
||||
* of the guide for details.
|
||||
*
|
||||
* NOTE: this file must be saved in UTF-8 encoding.
|
||||
*/
|
||||
return [
|
||||
'Crontab of user: {user}' => 'Tâche planifiée de l\'utilisateur : {user}',
|
||||
'Last run (daily):' => 'Dernière exécution (journalière) :',
|
||||
'Last run (hourly):' => 'Dernière exécution (horaires) :',
|
||||
'Never' => 'Jamais',
|
||||
'Or Crontab of root user' => 'Ou tâche du SuperUtilisateur (root)',
|
||||
'Please make sure following cronjobs are installed:' => 'Merci de bien vouloir vérifier que les tâches planifiées suivantes sont installées :',
|
||||
];
|
||||
return array (
|
||||
'Crontab of user: {user}' => 'Tâche planifiée de l\'utilisateur : {user}',
|
||||
'Last run (daily):' => 'Dernière exécution (journalière) :',
|
||||
'Last run (hourly):' => 'Dernière exécution (horaire) :',
|
||||
'Never' => 'Jamais',
|
||||
'Or Crontab of root user' => 'Ou tâche de l\'utilisateur root',
|
||||
'Please make sure following cronjobs are installed:' => 'Veuillez vérifier que les tâches planifiées suivantes sont installées :',
|
||||
);
|
||||
|
@ -1,27 +1,10 @@
|
||||
<?php
|
||||
/**
|
||||
* Message translations.
|
||||
*
|
||||
* This file is automatically generated by 'yii message/extract' command.
|
||||
* It contains the localizable messages extracted from source code.
|
||||
* You may modify this file by translating the extracted messages.
|
||||
*
|
||||
* Each array element represents the translation (value) of a message (key).
|
||||
* If the value is empty, the message is considered as not translated.
|
||||
* Messages that no longer need translation will have their translations
|
||||
* enclosed between a pair of '@@' marks.
|
||||
*
|
||||
* Message string can be used with plural forms format. Check i18n section
|
||||
* of the guide for details.
|
||||
*
|
||||
* NOTE: this file must be saved in UTF-8 encoding.
|
||||
*/
|
||||
return [
|
||||
'Alphabetical' => 'Alphabétique',
|
||||
'Auto format based on user language - Example: {example}' => 'Format automatique basé sur la langue de l\'utilisateur - Exemple : {example}',
|
||||
'Firstname Lastname (e.g. John Doe)' => 'Prénom Nom (ex. : Pierre Dupont)',
|
||||
'Fixed format (mm/dd/yyyy) - Example: {example}' => 'Format fixe (jj/mm/aaaa) - Exemple : {example}',
|
||||
'Last visit' => 'Dernière visite',
|
||||
'Save' => 'Enregistrer',
|
||||
'Username (e.g. john)' => 'Nom d\'utilisateur (ex. : pierre)',
|
||||
];
|
||||
return array (
|
||||
'Alphabetical' => 'Alphabétique',
|
||||
'Auto format based on user language - Example: {example}' => 'Format automatique basé sur la langue de l\'utilisateur - Exemple : {example}',
|
||||
'Firstname Lastname (e.g. John Doe)' => 'Prénom Nom (p.ex. : Pierre Dupont)',
|
||||
'Fixed format (mm/dd/yyyy) - Example: {example}' => 'Format fixe (jj/mm/aaaa) (p.ex. : {example})',
|
||||
'Last visit' => 'Dernière visite',
|
||||
'Save' => 'Enregistrer',
|
||||
'Username (e.g. john)' => 'Identifiant (p.ex. : pierre)',
|
||||
);
|
||||
|
@ -1,26 +1,9 @@
|
||||
<?php
|
||||
/**
|
||||
* Message translations.
|
||||
*
|
||||
* This file is automatically generated by 'yii message/extract-module' command.
|
||||
* It contains the localizable messages extracted from source code.
|
||||
* You may modify this file by translating the extracted messages.
|
||||
*
|
||||
* Each array element represents the translation (value) of a message (key).
|
||||
* If the value is empty, the message is considered as not translated.
|
||||
* Messages that no longer need translation will have their translations
|
||||
* enclosed between a pair of '@@' marks.
|
||||
*
|
||||
* Message string can be used with plural forms format. Check i18n section
|
||||
* of the guide for details.
|
||||
*
|
||||
* NOTE: this file must be saved in UTF-8 encoding.
|
||||
*/
|
||||
return [
|
||||
'Comma separated list. Leave empty to allow all.' => 'Liste séparée par des virgules. Laissez vide pour tout autoriser.',
|
||||
'Current Image Library: {currentImageLibrary}' => 'Librairie d\'image courante : {currentImageLibrary}',
|
||||
'If not set, height will default to 200px.' => 'Si non définie, la hauteur sera par défaut de 200px.',
|
||||
'If not set, width will default to 200px.' => 'Si non définie, la largeur sera par défaut de 200px.',
|
||||
'PHP reported a maximum of {maxUploadSize} MB' => 'PHP informe un maximum d\'Upload de {maxUploadSize} Mo',
|
||||
'Save' => 'Enregistrer',
|
||||
];
|
||||
return array (
|
||||
'Comma separated list. Leave empty to allow all.' => 'Liste séparée par des virgules (laisser vide pour tout autoriser)',
|
||||
'Current Image Library: {currentImageLibrary}' => 'Librairie d\'image courante : {currentImageLibrary}',
|
||||
'If not set, height will default to 200px.' => 'Si non défini = hauteur par défaut (200px)',
|
||||
'If not set, width will default to 200px.' => 'Si non défini = largeur par défaut (200px)',
|
||||
'PHP reported a maximum of {maxUploadSize} MB' => 'Valeur maximale configurée actuellement dans PHP {maxUploadSize}Mo',
|
||||
'Save' => 'Enregistrer',
|
||||
);
|
||||
|
@ -1,12 +1,12 @@
|
||||
<?php
|
||||
return array (
|
||||
'<strong>Confirm</strong> image deletion' => '<strong>Confirmer</strong> la suppression de l\'image ',
|
||||
'Dashboard' => 'Fil d\'actualité',
|
||||
'Dashboard' => 'Fil d\'actualités',
|
||||
'Delete' => 'Supprimer',
|
||||
'E.g. http://example.com/humhub' => 'Ex. http://exemple.com/humhub',
|
||||
'E.g. http://example.com/humhub' => 'p.ex. : http://exemple.com/humhub',
|
||||
'Friendship' => 'Amitié',
|
||||
'New users will automatically be added to these space(s).' => 'Les nouveaux utilisateurs seront ajoutés automatiquement à ces espaces.',
|
||||
'Save' => 'Enregistrer',
|
||||
'Wall entry layout' => 'Plan d\'accès au mur',
|
||||
'Wall entry layout' => 'Disposition du fil d\'actualités',
|
||||
'You\'re using no logo at the moment. Upload your logo now.' => 'Vous n\'utilisez pas de logo pour le moment. Chargez votre logo maintenant.',
|
||||
);
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
return array (
|
||||
'Currently there are {count} records in the database dating from {dating}.' => 'Actuellement, il existe {count} enregistrements dans la base de données datant de {dating}.',
|
||||
'Old logs can significantly increase the size of your database while providing little information.' => 'Les anciens journaux peuvent considérablement augmenter la taille de votre base de données tout en fournissant peu d\'informations.',
|
||||
'Currently there are {count} records in the database dating from {dating}.' => 'Il y a actuellement {count} enregistrements dans la base de données datant de {dating}.',
|
||||
'Old logs can significantly increase the size of your database while providing little information.' => 'Les anciens journaux peuvent considérablement augmenter la taille de votre base de données tout en fournissant peu d\'information pertinente.',
|
||||
'Save' => 'Enregistrer',
|
||||
);
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?php
|
||||
return array (
|
||||
'E-Mail' => 'E-mail',
|
||||
'E-Mail' => 'e-mail',
|
||||
);
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
return array (
|
||||
'Add new provider' => 'Ajouter un nouveau fournisseur',
|
||||
'Currently no provider active!' => 'Aucun fournisseur actif actuellement !',
|
||||
'Currently no provider active!' => 'Aucun fournisseur actif actuellement.',
|
||||
'Enabled OEmbed providers' => 'Activer les fournisseurs OEmbed',
|
||||
);
|
||||
|
@ -5,6 +5,6 @@ return array (
|
||||
'Delete' => 'Supprimer',
|
||||
'Edit OEmbed provider' => 'Modifier le fournisseur OEmbed',
|
||||
'Save' => 'Enregistrer',
|
||||
'Url Prefix without http:// or https:// (e.g. youtube.com)' => 'Préfixe d\'URL sans http:// ou https:// (par exemple : youtube.com)',
|
||||
'Use %url% as placeholder for URL. Format needs to be JSON. (e.g. http://www.youtube.com/oembed?url=%url%&format=json)' => 'Utiliser %url% comme espace réservé pour l\'URL. Le format doit être JSON. (Par exemple : http://www.youtube.com/oembed?url=%url%&format=json)',
|
||||
'Url Prefix without http:// or https:// (e.g. youtube.com)' => 'URL sans http:// ou https:// (p.ex. : youtube.com)',
|
||||
'Use %url% as placeholder for URL. Format needs to be JSON. (e.g. http://www.youtube.com/oembed?url=%url%&format=json)' => 'Utiliser %url% comme espace réservé pour l\'URL. Le format doit être JSON. (p.ex. : http://www.youtube.com/oembed?url=%url%&format=json)',
|
||||
);
|
||||
|
@ -1,22 +1,5 @@
|
||||
<?php
|
||||
/**
|
||||
* Message translations.
|
||||
*
|
||||
* This file is automatically generated by 'yii message/extract' command.
|
||||
* It contains the localizable messages extracted from source code.
|
||||
* You may modify this file by translating the extracted messages.
|
||||
*
|
||||
* Each array element represents the translation (value) of a message (key).
|
||||
* If the value is empty, the message is considered as not translated.
|
||||
* Messages that no longer need translation will have their translations
|
||||
* enclosed between a pair of '@@' marks.
|
||||
*
|
||||
* Message string can be used with plural forms format. Check i18n section
|
||||
* of the guide for details.
|
||||
*
|
||||
* NOTE: this file must be saved in UTF-8 encoding.
|
||||
*/
|
||||
return [
|
||||
'Checking HumHub software prerequisites.' => 'Vérifier les pré-requis logiciels de HumHub',
|
||||
'Re-Run tests' => 'Re-éxecuter la vérification',
|
||||
];
|
||||
return array (
|
||||
'Checking HumHub software prerequisites.' => 'Vérification des pré-requis logiciels de HumHub',
|
||||
'Re-Run tests' => 'Exécuter une nouvelle vérification',
|
||||
);
|
||||
|
@ -1,10 +1,10 @@
|
||||
<?php
|
||||
return array (
|
||||
'<strong>Manage</strong> spaces' => '<strong>Gérer</strong> les espaces',
|
||||
'<strong>Manage</strong> spaces' => 'Gestion des <strong>espaces</strong>',
|
||||
'Actions' => 'Actions',
|
||||
'Here you can define your default settings for new spaces. These settings can be overwritten for each individual space.' => 'Ici vous pouvez définir vos paramètres par défaut pour les nouveaux espaces. Ces paramètres peuvent être remplacés pour chaque espace individuellement.',
|
||||
'Overview' => 'Vue d\'ensemble',
|
||||
'Settings' => 'Réglages',
|
||||
'Settings' => 'Paramètres',
|
||||
'Spaces' => 'Espaces',
|
||||
'This overview contains a list of each space with actions to view, edit and delete spaces.' => 'Cette vue d\'ensemble contient une liste de chaque espace avec des actions pour afficher, modifier et supprimer des espaces.',
|
||||
);
|
||||
|
@ -6,7 +6,7 @@ return array (
|
||||
'Last login' => 'Dernière connexion',
|
||||
'Overview' => 'Aperçu',
|
||||
'Send invite' => 'Envoyer une invitation',
|
||||
'Settings' => 'Réglages',
|
||||
'Settings' => 'Paramètres',
|
||||
'This overview contains a list of each registered user with actions to view, edit and delete users.' => 'Cet écran affiche la liste de tous les utilisateurs enregistrés et les commandes pour voir, modifier et supprimer des utilisateurs.',
|
||||
'Users' => 'Utilisateurs',
|
||||
'never' => 'jamais',
|
||||
|
@ -1,10 +1,10 @@
|
||||
<?php
|
||||
return array (
|
||||
'<strong>Administration</strong> menu' => 'Menu d\'<strong>Administration</strong>',
|
||||
'<strong>Administration</strong> menu' => 'Menu <strong>administration</strong>',
|
||||
'Advanced' => 'Avancé',
|
||||
'Appearance' => 'Apparence',
|
||||
'Caching' => 'Cache',
|
||||
'E-Mail summaries' => 'Résumés par E-mail',
|
||||
'E-Mail summaries' => 'Résumés par e-mail',
|
||||
'Files' => 'Fichiers',
|
||||
'General' => 'Général',
|
||||
'Information' => 'Information',
|
||||
@ -12,7 +12,7 @@ return array (
|
||||
'Modules' => 'Modules',
|
||||
'Notifications' => 'Notifications',
|
||||
'OEmbed' => 'OEmbed',
|
||||
'Proxy' => 'Serveur Proxy',
|
||||
'Proxy' => 'Proxy',
|
||||
'Settings' => 'Paramètres',
|
||||
'Spaces' => 'Espaces',
|
||||
'Statistics' => 'Statistiques',
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
return array (
|
||||
'Click here to review' => 'Cliquez ici pour réviser',
|
||||
'New approval requests' => 'Nouvelles requêtes d\'approbation',
|
||||
'New approval requests' => 'Nouvelles demandes d\'approbation',
|
||||
'One or more user needs your approval as group admin.' => 'Un utilisateur ou plus nécessite l\'approbation en tant qu\'administrateur de groupe.',
|
||||
);
|
||||
|
@ -1,51 +1,34 @@
|
||||
<?php
|
||||
/**
|
||||
* Message translations.
|
||||
*
|
||||
* This file is automatically generated by 'yii message/extract' command.
|
||||
* It contains the localizable messages extracted from source code.
|
||||
* You may modify this file by translating the extracted messages.
|
||||
*
|
||||
* Each array element represents the translation (value) of a message (key).
|
||||
* If the value is empty, the message is considered as not translated.
|
||||
* Messages that no longer need translation will have their translations
|
||||
* enclosed between a pair of '@@' marks.
|
||||
*
|
||||
* Message string can be used with plural forms format. Check i18n section
|
||||
* of the guide for details.
|
||||
*
|
||||
* NOTE: this file must be saved in UTF-8 encoding.
|
||||
*/
|
||||
return [
|
||||
'Base URL needs to begin with http:// or https://' => '',
|
||||
'About' => 'U vezi',
|
||||
'Add purchased module by licence key' => 'Dodajte kupljeni modul licenčnim ključem',
|
||||
'Admin' => 'Admin',
|
||||
'Administration' => 'Administracija',
|
||||
'Approval' => 'Odobrenje',
|
||||
'Authentication' => 'Ovjera autentičnosti',
|
||||
'Back to overview' => 'Povratak na pregled',
|
||||
'Back to user overview' => 'Povratak na pregled korisnika',
|
||||
'Basic' => 'Osnovno',
|
||||
'Caching' => 'Caching',
|
||||
'Cronjobs' => 'Cronjobs',
|
||||
'Design' => 'Dizajn',
|
||||
'Files' => 'Datoteke',
|
||||
'Groups' => 'Grupe',
|
||||
'Invite' => 'Poziv',
|
||||
'Invited by' => 'Poziv od',
|
||||
'Logging' => 'Logging',
|
||||
'Mailing' => 'Slanje poštom',
|
||||
'Modules' => 'Moduli',
|
||||
'OEmbed providers' => 'OEmbed pružatelji usluga',
|
||||
'Pending user registrations' => 'Prijava na čekanju korisnika',
|
||||
'Proxy' => 'Proxy',
|
||||
'Security' => 'Sigurnost',
|
||||
'Self test' => 'Samoprovjera',
|
||||
'Sign up' => 'Upiši se',
|
||||
'Spaces' => 'Prostori',
|
||||
'Statistics' => 'Statistika',
|
||||
'User posts' => 'Postovi korisnika',
|
||||
'Userprofiles' => 'Korisnički profili',
|
||||
'Users' => 'Korisnici',
|
||||
];
|
||||
return array (
|
||||
'About' => 'U vezi',
|
||||
'Add purchased module by licence key' => 'Dodajte kupljeni modul licenčnim ključem',
|
||||
'Admin' => 'Admin',
|
||||
'Administration' => 'Administracija',
|
||||
'Approval' => 'Odobrenje',
|
||||
'Authentication' => 'Ovjera autentičnosti',
|
||||
'Back to overview' => 'Povratak na pregled',
|
||||
'Back to user overview' => 'Povratak na pregled korisnika',
|
||||
'Base URL needs to begin with http:// or https://' => 'Bazni URL mora početi s http:// ili https://',
|
||||
'Basic' => 'Osnovno',
|
||||
'Caching' => 'Caching',
|
||||
'Cronjobs' => 'Cronjobs',
|
||||
'Design' => 'Dizajn',
|
||||
'Files' => 'Datoteke',
|
||||
'Groups' => 'Grupe',
|
||||
'Invite' => 'Poziv',
|
||||
'Invited by' => 'Poziv od',
|
||||
'Logging' => 'Logging',
|
||||
'Mailing' => 'Slanje poštom',
|
||||
'Modules' => 'Moduli',
|
||||
'OEmbed providers' => 'OEmbed pružatelji usluga',
|
||||
'Pending user registrations' => 'Prijava na čekanju korisnika',
|
||||
'Proxy' => 'Proxy',
|
||||
'Security' => 'Sigurnost',
|
||||
'Self test' => 'Samoprovjera',
|
||||
'Sign up' => 'Upiši se',
|
||||
'Spaces' => 'Prostori',
|
||||
'Statistics' => 'Statistika',
|
||||
'User posts' => 'Postovi korisnika',
|
||||
'Userprofiles' => 'Korisnički profili',
|
||||
'Users' => 'Korisnici',
|
||||
);
|
||||
|
@ -1,51 +1,34 @@
|
||||
<?php
|
||||
/**
|
||||
* Message translations.
|
||||
*
|
||||
* This file is automatically generated by 'yii message/extract' command.
|
||||
* It contains the localizable messages extracted from source code.
|
||||
* You may modify this file by translating the extracted messages.
|
||||
*
|
||||
* Each array element represents the translation (value) of a message (key).
|
||||
* If the value is empty, the message is considered as not translated.
|
||||
* Messages that no longer need translation will have their translations
|
||||
* enclosed between a pair of '@@' marks.
|
||||
*
|
||||
* Message string can be used with plural forms format. Check i18n section
|
||||
* of the guide for details.
|
||||
*
|
||||
* NOTE: this file must be saved in UTF-8 encoding.
|
||||
*/
|
||||
return [
|
||||
'Base URL needs to begin with http:// or https://' => '',
|
||||
'About' => 'Informazioni',
|
||||
'Add purchased module by licence key' => 'Aggiungi modulo acquistato tramite chiave licenza',
|
||||
'Admin' => 'Amministrazione',
|
||||
'Administration' => 'Amministrazione',
|
||||
'Approval' => 'Approvazione',
|
||||
'Authentication' => 'Autenticazione',
|
||||
'Back to overview' => 'Indietro alla panoramica',
|
||||
'Back to user overview' => 'Indietro alla panoramica utente',
|
||||
'Basic' => 'Di base',
|
||||
'Caching' => 'Caching',
|
||||
'Cronjobs' => 'Cronjobs',
|
||||
'Design' => 'Design',
|
||||
'Files' => 'File',
|
||||
'Groups' => 'Gruppi',
|
||||
'Invite' => 'Invita',
|
||||
'Invited by' => 'Invitato da',
|
||||
'Logging' => 'Logging',
|
||||
'Mailing' => 'Mail',
|
||||
'Modules' => 'Moduli',
|
||||
'OEmbed providers' => 'Fornitori OEmbed',
|
||||
'Pending user registrations' => 'Registrazioni utenti pendenti',
|
||||
'Proxy' => 'Proxy',
|
||||
'Security' => 'Sicurezza',
|
||||
'Self test' => 'Auto test',
|
||||
'Sign up' => 'Iscriviti',
|
||||
'Spaces' => 'Space',
|
||||
'Statistics' => 'Statistiche',
|
||||
'User posts' => 'Post degli utenti',
|
||||
'Userprofiles' => 'Profili utente',
|
||||
'Users' => 'Utenti',
|
||||
];
|
||||
return array (
|
||||
'About' => 'Informazioni',
|
||||
'Add purchased module by licence key' => 'Aggiungi modulo acquistato tramite chiave licenza',
|
||||
'Admin' => 'Amministrazione',
|
||||
'Administration' => 'Amministrazione',
|
||||
'Approval' => 'Approvazione',
|
||||
'Authentication' => 'Autenticazione',
|
||||
'Back to overview' => 'Indietro alla panoramica',
|
||||
'Back to user overview' => 'Indietro alla panoramica utente',
|
||||
'Base URL needs to begin with http:// or https://' => 'Gli url base devono iniziare con http:// o https://',
|
||||
'Basic' => 'Di base',
|
||||
'Caching' => 'Caching',
|
||||
'Cronjobs' => 'Cronjobs',
|
||||
'Design' => 'Design',
|
||||
'Files' => 'File',
|
||||
'Groups' => 'Gruppi',
|
||||
'Invite' => 'Invita',
|
||||
'Invited by' => 'Invitato da',
|
||||
'Logging' => 'Logging',
|
||||
'Mailing' => 'Mail',
|
||||
'Modules' => 'Moduli',
|
||||
'OEmbed providers' => 'Fornitori OEmbed',
|
||||
'Pending user registrations' => 'Registrazioni utenti pendenti',
|
||||
'Proxy' => 'Proxy',
|
||||
'Security' => 'Sicurezza',
|
||||
'Self test' => 'Auto test',
|
||||
'Sign up' => 'Iscriviti',
|
||||
'Spaces' => 'Space',
|
||||
'Statistics' => 'Statistiche',
|
||||
'User posts' => 'Post degli utenti',
|
||||
'Userprofiles' => 'Profili utente',
|
||||
'Users' => 'Utenti',
|
||||
);
|
||||
|
@ -1,51 +1,34 @@
|
||||
<?php
|
||||
/**
|
||||
* Message translations.
|
||||
*
|
||||
* This file is automatically generated by 'yii message/extract' command.
|
||||
* It contains the localizable messages extracted from source code.
|
||||
* You may modify this file by translating the extracted messages.
|
||||
*
|
||||
* Each array element represents the translation (value) of a message (key).
|
||||
* If the value is empty, the message is considered as not translated.
|
||||
* Messages that no longer need translation will have their translations
|
||||
* enclosed between a pair of '@@' marks.
|
||||
*
|
||||
* Message string can be used with plural forms format. Check i18n section
|
||||
* of the guide for details.
|
||||
*
|
||||
* NOTE: this file must be saved in UTF-8 encoding.
|
||||
*/
|
||||
return [
|
||||
'Base URL needs to begin with http:// or https://' => '',
|
||||
'About' => 'Over',
|
||||
'Add purchased module by licence key' => 'Aangeschafte module toevoegen met de licentie code',
|
||||
'Admin' => 'Beheerder',
|
||||
'Administration' => 'Beheer',
|
||||
'Approval' => 'Goedkeuring',
|
||||
'Authentication' => 'Authenticatie',
|
||||
'Back to overview' => 'Terug naar het overzicht',
|
||||
'Back to user overview' => 'Terug naar het gebruikersoverzicht',
|
||||
'Basic' => 'Basis',
|
||||
'Caching' => 'Caching',
|
||||
'Cronjobs' => 'Cronjobs',
|
||||
'Design' => 'Ontwerp',
|
||||
'Files' => 'Bestanden',
|
||||
'Groups' => 'Groepen',
|
||||
'Invite' => 'Uitnodiging',
|
||||
'Invited by' => 'Uitgenodigd door',
|
||||
'Logging' => 'Logging',
|
||||
'Mailing' => 'Mailen',
|
||||
'Modules' => 'Modules',
|
||||
'OEmbed providers' => 'OEmbed providers',
|
||||
'Pending user registrations' => 'Wachtende gebruikersregistraties',
|
||||
'Proxy' => 'Proxy',
|
||||
'Security' => 'Beveiliging',
|
||||
'Self test' => 'Zelf-test',
|
||||
'Sign up' => 'Registreer',
|
||||
'Spaces' => 'Ruimtes',
|
||||
'Statistics' => 'Statistieken',
|
||||
'User posts' => 'Gebruiker posts',
|
||||
'Userprofiles' => 'Gebruikerprofielen',
|
||||
'Users' => 'Gebruikers',
|
||||
];
|
||||
return array (
|
||||
'About' => 'Over',
|
||||
'Add purchased module by licence key' => 'Aangeschafte module toevoegen met de licentie code',
|
||||
'Admin' => 'Beheerder',
|
||||
'Administration' => 'Beheer',
|
||||
'Approval' => 'Goedkeuring',
|
||||
'Authentication' => 'Authenticatie',
|
||||
'Back to overview' => 'Terug naar het overzicht',
|
||||
'Back to user overview' => 'Terug naar het gebruikersoverzicht',
|
||||
'Base URL needs to begin with http:// or https://' => 'De URL moet beginnen met http:// of https://',
|
||||
'Basic' => 'Basis',
|
||||
'Caching' => 'Caching',
|
||||
'Cronjobs' => 'Cronjobs',
|
||||
'Design' => 'Ontwerp',
|
||||
'Files' => 'Bestanden',
|
||||
'Groups' => 'Groepen',
|
||||
'Invite' => 'Uitnodiging',
|
||||
'Invited by' => 'Uitgenodigd door',
|
||||
'Logging' => 'Logging',
|
||||
'Mailing' => 'Mailen',
|
||||
'Modules' => 'Modules',
|
||||
'OEmbed providers' => 'OEmbed providers',
|
||||
'Pending user registrations' => 'Wachtende gebruikersregistraties',
|
||||
'Proxy' => 'Proxy',
|
||||
'Security' => 'Beveiliging',
|
||||
'Self test' => 'Zelf-test',
|
||||
'Sign up' => 'Registreer',
|
||||
'Spaces' => 'Ruimtes',
|
||||
'Statistics' => 'Statistieken',
|
||||
'User posts' => 'Gebruiker posts',
|
||||
'Userprofiles' => 'Gebruikerprofielen',
|
||||
'Users' => 'Gebruikers',
|
||||
);
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?php
|
||||
return array (
|
||||
'There is a new HumHub Version ({version}) available.' => 'Er is een nieuwe versie beschikbaar! ({version})',
|
||||
'There is a new HumHub Version ({version}) available.' => 'De nieuwe versie ({version}) is beschikbaar!',
|
||||
);
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -10,13 +10,14 @@
|
||||
|
||||
class_name: AcceptanceTester
|
||||
modules:
|
||||
enabled:
|
||||
- WebDriver
|
||||
- tests\codeception\_support\WebHelper
|
||||
- tests\codeception\_support\DynamicFixtureHelper
|
||||
config:
|
||||
WebDriver:
|
||||
url: http://localhost:8080/
|
||||
browser: firefox
|
||||
window_size: 1024x768
|
||||
lang: en
|
||||
enabled:
|
||||
- WebDriver:
|
||||
url: 'http://localhost:8080/'
|
||||
window_size: false # disabled in ChromeDriver
|
||||
port: 9515
|
||||
browser: chrome
|
||||
capabilities:
|
||||
chromeOptions:
|
||||
args: ['--headless', '--disable-gpu', '--no-sandbox']
|
||||
- tests\codeception\_support\WebHelper
|
||||
- tests\codeception\_support\DynamicFixtureHelper
|
@ -1,71 +1,48 @@
|
||||
<?php
|
||||
|
||||
use humhub\widgets\Button;
|
||||
use humhub\modules\admin\widgets\ExportButton;
|
||||
use humhub\widgets\GridView;
|
||||
use yii\helpers\Html;
|
||||
use yii\helpers\Url;
|
||||
|
||||
?>
|
||||
|
||||
<div class="panel-body">
|
||||
<?= humhub\libs\Html::backButton(
|
||||
['/admin/user/index'],
|
||||
['label' => Yii::t('AdminModule.base', 'Back to user overview'), 'class' => 'pull-right']
|
||||
); ?>
|
||||
<h4><?= Yii::t('AdminModule.base', 'Pending user registrations'); ?></h4>
|
||||
|
||||
<h4><?= Yii::t('AdminModule.base', 'Pending user registrations') ?></h4>
|
||||
|
||||
<div class="help-block">
|
||||
<?= Yii::t(
|
||||
'AdminModule.views_approval_index',
|
||||
'The following list contains all pending sign-ups and invites.'
|
||||
); ?>
|
||||
) ?>
|
||||
</div>
|
||||
|
||||
<div class="dropdown pull-right">
|
||||
<button class="btn btn-primary btn-sm " type="button" data-toggle="dropdown">
|
||||
<i class="fa fa-download"></i> <?= Yii::t('base', 'Export')?> <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><?= Button::asLink('csv', $urlExportCsv)->pjax(false)
|
||||
->icon('fa-file-code-o')->sm() ?></li>
|
||||
<li><?= Button::asLink('xlsx', $urlExportXlsx)->pjax(false)
|
||||
->icon('fa-file-excel-o')->sm() ?></li>
|
||||
</ul>
|
||||
<div class="pull-right">
|
||||
<?= humhub\libs\Html::backButton(
|
||||
['/admin/user/index'],
|
||||
['label' => Yii::t('AdminModule.base', 'Back to user overview')]
|
||||
) ?>
|
||||
<?= ExportButton::widget(['filter' => 'PendingRegistrationSearch']) ?>
|
||||
</div>
|
||||
|
||||
<?= GridView::widget([
|
||||
'dataProvider' => $dataProvider,
|
||||
'filterModel' => $searchModel,
|
||||
'columns' =>
|
||||
'columns' => [
|
||||
'email',
|
||||
'originator.username',
|
||||
'language',
|
||||
'created_at',
|
||||
[
|
||||
'email',
|
||||
'originator.username',
|
||||
'language',
|
||||
'created_at',
|
||||
[
|
||||
'attribute' => 'source',
|
||||
'filter' => Html::activeDropDownList($searchModel, 'source', array_merge(['' => ''], $types)),
|
||||
'options' => ['width' => '40px'],
|
||||
'format' => 'raw',
|
||||
'value' => function ($data) use ($types) {
|
||||
return isset($types[$data->source]) ? $types[$data->source] : Html::encode($data->source);
|
||||
},
|
||||
],
|
||||
[
|
||||
'header' => Yii::t('AdminModule.views_user_index', 'Actions'),
|
||||
'class' => 'yii\grid\ActionColumn',
|
||||
'template' => '{resend}',
|
||||
'options' => ['style' => 'width:80px; min-width:80px;'],
|
||||
'buttons' => [
|
||||
'resend' => function ($url, $model, $key) {
|
||||
return Html::a(
|
||||
'<i class="fa fa-envelope"></i>',
|
||||
Url::to(['resend', 'id' => $model->id]),
|
||||
['class' => 'btn btn-primary btn-xs tt']
|
||||
);
|
||||
},
|
||||
],
|
||||
],
|
||||
]
|
||||
]); ?>
|
||||
'attribute' => 'source',
|
||||
'filter' => \yii\helpers\Html::activeDropDownList($searchModel, 'source', $types),
|
||||
'options' => ['width' => '40px'],
|
||||
'format' => 'raw',
|
||||
'value' => function ($data) use ($types) {
|
||||
return isset($types[$data->source]) ?: Html::encode($data->source);
|
||||
},
|
||||
],
|
||||
]
|
||||
]) ?>
|
||||
|
||||
</div>
|
81
protected/humhub/modules/admin/widgets/ExportButton.php
Normal file
81
protected/humhub/modules/admin/widgets/ExportButton.php
Normal file
@ -0,0 +1,81 @@
|
||||
<?php
|
||||
/**
|
||||
* @link https://www.humhub.org/
|
||||
* @copyright Copyright (c) 2018 HumHub GmbH & Co. KG
|
||||
* @license https://www.humhub.com/licences
|
||||
*/
|
||||
|
||||
namespace humhub\modules\admin\widgets;
|
||||
|
||||
use humhub\components\Widget;
|
||||
use Yii;
|
||||
use yii\helpers\Url;
|
||||
|
||||
/**
|
||||
* Class ExportButton
|
||||
*/
|
||||
class ExportButton extends Widget
|
||||
{
|
||||
/** @var string|null */
|
||||
public $filter = null;
|
||||
|
||||
/**
|
||||
* This method is invoked right before the widget is executed.
|
||||
*
|
||||
* The method will trigger the [[EVENT_BEFORE_RUN]] event. The return value of the method
|
||||
* will determine whether the widget should continue to run.
|
||||
*
|
||||
* When overriding this method, make sure you call the parent implementation like the following:
|
||||
*
|
||||
* ```php
|
||||
* public function beforeRun()
|
||||
* {
|
||||
* if (!parent::beforeRun()) {
|
||||
* return false;
|
||||
* }
|
||||
*
|
||||
* // your custom code here
|
||||
*
|
||||
* return true; // or false to not run the widget
|
||||
* }
|
||||
* ```
|
||||
*
|
||||
* @return bool whether the widget should continue to be executed.
|
||||
* @since 2.0.11
|
||||
*/
|
||||
public function beforeRun()
|
||||
{
|
||||
if (!parent::beforeRun()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($this->filter === null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Executes the widget.
|
||||
* @return string the result of widget execution to be outputted.
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
$params = [
|
||||
'csv' => Url::toRoute([
|
||||
'export',
|
||||
'format' => 'csv',
|
||||
$this->filter => Yii::$app->request->get($this->filter),
|
||||
]),
|
||||
'xlsx' => Url::toRoute([
|
||||
'export',
|
||||
'format' => 'xlsx',
|
||||
$this->filter => Yii::$app->request->get($this->filter),
|
||||
]),
|
||||
];
|
||||
|
||||
echo $this->render('exportButton', $params);
|
||||
}
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @var string $csv
|
||||
* @var string $xlsx
|
||||
*/
|
||||
|
||||
use humhub\widgets\Button;
|
||||
|
||||
?>
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-info">
|
||||
<i class="fa fa-download"></i> <?= Yii::t('base', 'Export') ?>
|
||||
</button>
|
||||
<button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown">
|
||||
<span class="caret"></span>
|
||||
<span class="sr-only">Toggle Dropdown</span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><?= Button::asLink('csv', $csv)->pjax(false)
|
||||
->icon('fa-file-code-o')->sm() ?></li>
|
||||
<li><?= Button::asLink('xlsx', $xlsx)->pjax(false)
|
||||
->icon('fa-file-excel-o')->sm() ?></li>
|
||||
</ul>
|
||||
</div>
|
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
return array (
|
||||
'Comments' => 'Commentaires',
|
||||
'Whenever a new comment was written.' => 'Chaque fois qu\'un nouveau commentaire était écrit.',
|
||||
'Whenever a new comment was written.' => 'Chaque fois qu\'un nouveau commentaire a été écrit.',
|
||||
);
|
||||
|
@ -1,31 +1,14 @@
|
||||
<?php
|
||||
/**
|
||||
* Message translations.
|
||||
*
|
||||
* This file is automatically generated by 'yii message/extract' command.
|
||||
* It contains the localizable messages extracted from source code.
|
||||
* You may modify this file by translating the extracted messages.
|
||||
*
|
||||
* Each array element represents the translation (value) of a message (key).
|
||||
* If the value is empty, the message is considered as not translated.
|
||||
* Messages that no longer need translation will have their translations
|
||||
* enclosed between a pair of '@@' marks.
|
||||
*
|
||||
* Message string can be used with plural forms format. Check i18n section
|
||||
* of the guide for details.
|
||||
*
|
||||
* NOTE: this file must be saved in UTF-8 encoding.
|
||||
*/
|
||||
return [
|
||||
'[Deleted]' => '',
|
||||
'{displayNames} commented {contentTitle}' => '{displayNames} a commenté {contentTitle}',
|
||||
'{displayNames} commented {contentTitle} in space {space}' => '{displayNames} a commenté {contentTitle} dans l\'espace {espace}',
|
||||
'{displayNames} commented {contentTitle}.' => '{displayNames} ont commenté {contentTitle}.',
|
||||
'{displayNames} just commented your {contentTitle}' => '{displayNames} vient de commenter votre {contentTitle}',
|
||||
'{displayNames} just commented your {contentTitle} in space {space}' => '{displayNames} vient de commenter votre {contentTitle} dans l\'espace {space}',
|
||||
'{displayName} commented {contentTitle}' => '{displayName} a commenté {contentTitle}',
|
||||
'{displayName} commented {contentTitle} in space {space}' => '{displayName} a commenté {contentTitle} dans l\'espace {espace}',
|
||||
'{displayName} commented {contentTitle}.' => '{displayName} a commenté {contentTitle}.',
|
||||
'{displayName} just commented your {contentTitle}' => '{displayName} vient de commenter votre {contentTitle}',
|
||||
'{displayName} just commented your {contentTitle} in space {space}' => '{displayName} vient de commenter votre {contentTitle} dans l\'espace {space}',
|
||||
];
|
||||
return array (
|
||||
'[Deleted]' => '[Supprimé]',
|
||||
'{displayNames} commented {contentTitle}' => '{displayNames} a commenté {contentTitle}',
|
||||
'{displayNames} commented {contentTitle} in space {space}' => '{displayNames} a commenté {contentTitle} dans l\'espace {espace}',
|
||||
'{displayNames} commented {contentTitle}.' => '{displayNames} ont commenté {contentTitle}.',
|
||||
'{displayNames} just commented your {contentTitle}' => '{displayNames} vient de commenter votre {contentTitle}',
|
||||
'{displayNames} just commented your {contentTitle} in space {space}' => '{displayNames} vient de commenter votre {contentTitle} dans l\'espace {space}',
|
||||
'{displayName} commented {contentTitle}' => '{displayName} a commenté {contentTitle}',
|
||||
'{displayName} commented {contentTitle} in space {space}' => '{displayName} a commenté {contentTitle} dans l\'espace {espace}',
|
||||
'{displayName} commented {contentTitle}.' => '{displayName} a commenté {contentTitle}.',
|
||||
'{displayName} just commented your {contentTitle}' => '{displayName} vient de commenter votre {contentTitle}',
|
||||
'{displayName} just commented your {contentTitle} in space {space}' => '{displayName} vient de commenter votre {contentTitle} dans l\'espace {space}',
|
||||
);
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
return array (
|
||||
'Comments' => 'Commentaires',
|
||||
'Receive Notifications when someone comments on my own or a following post.' => 'Recevoir des notifications lorsque quelqu\'un commente en mon nom ou un post suivi.',
|
||||
'Receive Notifications when someone comments on my own or a following post.' => 'Recevoir une notification lorsqu\'on commente mes publications ou une publication que je suis',
|
||||
);
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
return array (
|
||||
'Allows the user to add comments' => 'Autoriser les utilisateurs à ajouter des commentaires',
|
||||
'Allows the user to add comments' => 'Autoriser les utilisateurs à commenter',
|
||||
'Can manage (e.g. archive, stick or delete) arbitrary content' => 'Peut gérer arbitrairement un contenu (p.ex. archiver, mettre en avant ou supprimer)',
|
||||
'Create comment' => 'Créer un commentaire',
|
||||
'Manage content' => 'Gérer le contenu',
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
return array (
|
||||
'Edit your comment...' => 'Éditer le commentaire...',
|
||||
'Edit your comment...' => 'Modifier le commentaire...',
|
||||
'Save' => 'Enregistrer',
|
||||
);
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?php
|
||||
return array (
|
||||
'Show all {total} comments.' => 'Voir les {total} commentaires.',
|
||||
'Show all {total} comments.' => 'Afficher les commentaires précédents',
|
||||
);
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?php
|
||||
return array (
|
||||
'Comment' => 'Commenter',
|
||||
'Comment' => 'Commentaire',
|
||||
);
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?php
|
||||
return array (
|
||||
'Show %count% more comments' => 'Afficher %count% autres commentaires',
|
||||
'Show %count% more comments' => 'Afficher {count,plural,=1{le commentaire restant} other{# autres commentaires}}',
|
||||
);
|
||||
|
@ -1,31 +1,14 @@
|
||||
<?php
|
||||
/**
|
||||
* Message translations.
|
||||
*
|
||||
* This file is automatically generated by 'yii message/extract' command.
|
||||
* It contains the localizable messages extracted from source code.
|
||||
* You may modify this file by translating the extracted messages.
|
||||
*
|
||||
* Each array element represents the translation (value) of a message (key).
|
||||
* If the value is empty, the message is considered as not translated.
|
||||
* Messages that no longer need translation will have their translations
|
||||
* enclosed between a pair of '@@' marks.
|
||||
*
|
||||
* Message string can be used with plural forms format. Check i18n section
|
||||
* of the guide for details.
|
||||
*
|
||||
* NOTE: this file must be saved in UTF-8 encoding.
|
||||
*/
|
||||
return [
|
||||
'[Deleted]' => '',
|
||||
'{displayNames} commented {contentTitle}' => '{displayNames} komentirao je {contentTitle}',
|
||||
'{displayNames} commented {contentTitle} in space {space}' => '{displayNames} komentirao je {contentTitle} u prostoru {space}',
|
||||
'{displayNames} commented {contentTitle}.' => '{displayNames} komentirao je {contentTitle}.',
|
||||
'{displayNames} just commented your {contentTitle}' => '{displayNames} upravo je komentirao vaš {contentTitle}',
|
||||
'{displayNames} just commented your {contentTitle} in space {space}' => '{displayNames} upravo je komentirao vaš {contentTitle} u prostoru {space}',
|
||||
'{displayName} commented {contentTitle}' => '{displayName} komentirao je {contentTitle}',
|
||||
'{displayName} commented {contentTitle} in space {space}' => '{displayName} komentirao je {contentTitle} u prostoru {space}',
|
||||
'{displayName} commented {contentTitle}.' => '{displayName} komentirao je {contentTitle}.',
|
||||
'{displayName} just commented your {contentTitle}' => '{displayName} komentirao je vaš {contentTitle}',
|
||||
'{displayName} just commented your {contentTitle} in space {space}' => '{displayName} kometnirao je vaš {contentTitle} u prostoru {space}',
|
||||
];
|
||||
return array (
|
||||
'[Deleted]' => '[Obrisano]',
|
||||
'{displayNames} commented {contentTitle}' => '{displayNames} komentirao je {contentTitle}',
|
||||
'{displayNames} commented {contentTitle} in space {space}' => '{displayNames} komentirao je {contentTitle} u prostoru {space}',
|
||||
'{displayNames} commented {contentTitle}.' => '{displayNames} komentirao je {contentTitle}.',
|
||||
'{displayNames} just commented your {contentTitle}' => '{displayNames} upravo je komentirao vaš {contentTitle}',
|
||||
'{displayNames} just commented your {contentTitle} in space {space}' => '{displayNames} upravo je komentirao vaš {contentTitle} u prostoru {space}',
|
||||
'{displayName} commented {contentTitle}' => '{displayName} komentirao je {contentTitle}',
|
||||
'{displayName} commented {contentTitle} in space {space}' => '{displayName} komentirao je {contentTitle} u prostoru {space}',
|
||||
'{displayName} commented {contentTitle}.' => '{displayName} komentirao je {contentTitle}.',
|
||||
'{displayName} just commented your {contentTitle}' => '{displayName} komentirao je vaš {contentTitle}',
|
||||
'{displayName} just commented your {contentTitle} in space {space}' => '{displayName} kometnirao je vaš {contentTitle} u prostoru {space}',
|
||||
);
|
||||
|
@ -1,31 +1,14 @@
|
||||
<?php
|
||||
/**
|
||||
* Message translations.
|
||||
*
|
||||
* This file is automatically generated by 'yii message/extract' command.
|
||||
* It contains the localizable messages extracted from source code.
|
||||
* You may modify this file by translating the extracted messages.
|
||||
*
|
||||
* Each array element represents the translation (value) of a message (key).
|
||||
* If the value is empty, the message is considered as not translated.
|
||||
* Messages that no longer need translation will have their translations
|
||||
* enclosed between a pair of '@@' marks.
|
||||
*
|
||||
* Message string can be used with plural forms format. Check i18n section
|
||||
* of the guide for details.
|
||||
*
|
||||
* NOTE: this file must be saved in UTF-8 encoding.
|
||||
*/
|
||||
return [
|
||||
'[Deleted]' => '',
|
||||
'{displayNames} commented {contentTitle}' => '{displayNames} reageerde op {contentTitle}',
|
||||
'{displayNames} commented {contentTitle} in space {space}' => '{displayNames} reageerde op {contentTitle} in ruimte {space}',
|
||||
'{displayNames} commented {contentTitle}.' => '{displayNames} heeft gereageerd: {contentTitle}.',
|
||||
'{displayNames} just commented your {contentTitle}' => '{displayNames} reageerde zojuist op uw {contentTitle}',
|
||||
'{displayNames} just commented your {contentTitle} in space {space}' => '{displayNames} reageerde zojuist op uw {contentTitle} in ruimte {space}',
|
||||
'{displayName} commented {contentTitle}' => '{displayName} reageerde op {contentTitle}',
|
||||
'{displayName} commented {contentTitle} in space {space}' => '{displayName} reageerde op {contentTitle} in ruimte {space}',
|
||||
'{displayName} commented {contentTitle}.' => '{displayName} heeft gereageerd: {contentTitle}.',
|
||||
'{displayName} just commented your {contentTitle}' => '{displayName} reageerde zojuist op uw {contentTitle}',
|
||||
'{displayName} just commented your {contentTitle} in space {space}' => '{displayName} reageerde zojuist op uw {contentTitle} in ruimte {space}',
|
||||
];
|
||||
return array (
|
||||
'[Deleted]' => '[Verwijderd]',
|
||||
'{displayNames} commented {contentTitle}' => '{displayNames} reageerde op {contentTitle}',
|
||||
'{displayNames} commented {contentTitle} in space {space}' => '{displayNames} reageerde op {contentTitle} in ruimte {space}',
|
||||
'{displayNames} commented {contentTitle}.' => '{displayNames} heeft gereageerd: {contentTitle}.',
|
||||
'{displayNames} just commented your {contentTitle}' => '{displayNames} reageerde zojuist op uw {contentTitle}',
|
||||
'{displayNames} just commented your {contentTitle} in space {space}' => '{displayNames} reageerde zojuist op uw {contentTitle} in ruimte {space}',
|
||||
'{displayName} commented {contentTitle}' => '{displayName} reageerde op {contentTitle}',
|
||||
'{displayName} commented {contentTitle} in space {space}' => '{displayName} reageerde op {contentTitle} in ruimte {space}',
|
||||
'{displayName} commented {contentTitle}.' => '{displayName} heeft gereageerd: {contentTitle}.',
|
||||
'{displayName} just commented your {contentTitle}' => '{displayName} reageerde zojuist op uw {contentTitle}',
|
||||
'{displayName} just commented your {contentTitle} in space {space}' => '{displayName} reageerde zojuist op uw {contentTitle} in ruimte {space}',
|
||||
);
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -10,13 +10,14 @@
|
||||
|
||||
class_name: AcceptanceTester
|
||||
modules:
|
||||
enabled:
|
||||
- WebDriver
|
||||
- tests\codeception\_support\WebHelper
|
||||
- tests\codeception\_support\DynamicFixtureHelper
|
||||
config:
|
||||
WebDriver:
|
||||
url: http://localhost:8080/
|
||||
browser: firefox
|
||||
window_size: 1024x768
|
||||
lang: en
|
||||
enabled:
|
||||
- WebDriver:
|
||||
url: 'http://localhost:8080/'
|
||||
window_size: false # disabled in ChromeDriver
|
||||
port: 9515
|
||||
browser: chrome
|
||||
capabilities:
|
||||
chromeOptions:
|
||||
args: ['--headless', '--disable-gpu', '--no-sandbox']
|
||||
- tests\codeception\_support\WebHelper
|
||||
- tests\codeception\_support\DynamicFixtureHelper
|
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
return array (
|
||||
'Contents' => 'Contenus',
|
||||
'Whenever a new content (e.g. post) has been created.' => 'Chaque fois qu\'un nouveau contenu (p.ex. une publication) a été créé.',
|
||||
'Whenever a new content (e.g. post) has been created.' => 'Chaque fois qu\'un nouveau contenu a été créé (p.ex. : une publication)',
|
||||
);
|
||||
|
@ -3,5 +3,5 @@ return array (
|
||||
'{originator} just wrote {contentInfo}' => '{originator} vient d\'écrire {contentInfo}',
|
||||
'{originator} just wrote {contentInfo} in space {space}' => '{originator} vient d\'écrire {contentInfo} dans l\'espace {space}',
|
||||
'{originator} notifies you about {contentInfo}' => '{originator} vous informe sur {contentInfo}',
|
||||
'{originator} notifies you about {contentInfo} in {space}' => '{originator} vous informe de {contentInfo} dans l\'espace {space}',
|
||||
'{originator} notifies you about {contentInfo} in {space}' => '{originator} vous informe sur {contentInfo} dans l\'espace {space}',
|
||||
);
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
return array (
|
||||
'New Content' => 'Nouveau commentaire',
|
||||
'Receive Notifications for new content you follow.' => 'Recevoir des notifications pour les nouveaux contenus que vous suivez.',
|
||||
'New Content' => 'Contenus',
|
||||
'Receive Notifications for new content you follow.' => 'Recevoir une notification pour les nouveaux contenus suivis.',
|
||||
);
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
return array (
|
||||
'{displayName} created {contentTitle}.' => '{displayName} a créé {contentTitle}.',
|
||||
'{displayName} posted on your profile {contentTitle}.' => '{displayName} a publié sur votre profil le contenu {contentTitle}.',
|
||||
'{displayName} posted on your profile {contentTitle}.' => '{displayName} a publié sur votre profil {contentTitle}.',
|
||||
);
|
||||
|
@ -1,10 +1,10 @@
|
||||
<?php
|
||||
return array (
|
||||
'Add a member to notify' => 'Indiquez le nom du membre à avertir',
|
||||
'Add a member to notify' => 'Ajouter les utilisateurs à avertir',
|
||||
'Content visibility' => 'Visibilité du contenu',
|
||||
'Make private' => 'Rendre privé',
|
||||
'Make public' => 'Rendre public',
|
||||
'Notify members' => 'Avertir les membres',
|
||||
'Notify members' => 'Avertir des utilisateurs',
|
||||
'Public' => 'Public',
|
||||
'This space is archived.' => 'Cet espace est archivé.',
|
||||
'This space is archived.' => 'Cet espace est archivé',
|
||||
);
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
return array (
|
||||
'Cancel Edit' => 'Annuler les modifications',
|
||||
'Cancel Edit' => 'Annuler la modification',
|
||||
'Edit' => 'Modifier',
|
||||
);
|
||||
|
@ -1,22 +1,5 @@
|
||||
<?php
|
||||
/**
|
||||
* Message translations.
|
||||
*
|
||||
* This file is automatically generated by 'yii message/extract' command.
|
||||
* It contains the localizable messages extracted from source code.
|
||||
* You may modify this file by translating the extracted messages.
|
||||
*
|
||||
* Each array element represents the translation (value) of a message (key).
|
||||
* If the value is empty, the message is considered as not translated.
|
||||
* Messages that no longer need translation will have their translations
|
||||
* enclosed between a pair of '@@' marks.
|
||||
*
|
||||
* Message string can be used with plural forms format. Check i18n section
|
||||
* of the guide for details.
|
||||
*
|
||||
* NOTE: this file must be saved in UTF-8 encoding.
|
||||
*/
|
||||
return [
|
||||
'<strong>Permalink</strong> to this post' => '<strong>Lien permanent</strong> vers cette publication',
|
||||
'Permalink' => 'Lien permanent',
|
||||
];
|
||||
return array (
|
||||
'<strong>Permalink</strong> to this post' => '<strong>Raccourci</strong> vers cette publication',
|
||||
'Permalink' => 'Raccourci',
|
||||
);
|
||||
|
@ -1,40 +1,23 @@
|
||||
<?php
|
||||
/**
|
||||
* Message translations.
|
||||
*
|
||||
* This file is automatically generated by 'yii message/extract' command.
|
||||
* It contains the localizable messages extracted from source code.
|
||||
* You may modify this file by translating the extracted messages.
|
||||
*
|
||||
* Each array element represents the translation (value) of a message (key).
|
||||
* If the value is empty, the message is considered as not translated.
|
||||
* Messages that no longer need translation will have their translations
|
||||
* enclosed between a pair of '@@' marks.
|
||||
*
|
||||
* Message string can be used with plural forms format. Check i18n section
|
||||
* of the guide for details.
|
||||
*
|
||||
* NOTE: this file must be saved in UTF-8 encoding.
|
||||
*/
|
||||
return [
|
||||
'Back to stream' => 'Retour au fil d\'actualités',
|
||||
'Content with attached files' => 'Contenu avec pièces jointes',
|
||||
'Created by me' => 'Créé par moi',
|
||||
'Creation time' => 'Date de création',
|
||||
'Filter' => 'Filtrer',
|
||||
'Include archived posts' => 'Inclure les archives',
|
||||
'Last update' => 'Dernière mise à jour',
|
||||
'Load more' => 'Afficher plus',
|
||||
'No matches with your selected filters!' => 'Aucun résultat avec les filtres sélectionnés.',
|
||||
'Nothing here yet!' => 'Rien à afficher actuellement.',
|
||||
'Only private posts' => 'Uniquement les publications privées',
|
||||
'Only public posts' => 'Uniquement les publications publiques',
|
||||
'Posts only' => 'Uniquement les publications',
|
||||
'Posts with links' => 'Publications avec liens',
|
||||
'Sorting' => 'Trier',
|
||||
'The content has been archived.' => 'Le contenu a été archivé.',
|
||||
'The content has been deleted.' => 'Le contenu a été supprimé.',
|
||||
'The content has been unarchived.' => 'Le contenu a été désarchivé.',
|
||||
'Where I´m involved' => 'Où je suis impliqué',
|
||||
'Your last edit state has been saved!' => 'Votre dernier état d\'édition a été enregistré.',
|
||||
];
|
||||
return array (
|
||||
'Back to stream' => 'Retour au fil d\'actualités',
|
||||
'Content with attached files' => 'Contenu avec pièces jointes',
|
||||
'Created by me' => 'Créé par moi',
|
||||
'Creation time' => 'Date de création',
|
||||
'Filter' => 'Filtrer',
|
||||
'Include archived posts' => 'Inclure les archives',
|
||||
'Last update' => 'Dernière mise à jour',
|
||||
'Load more' => 'Afficher plus',
|
||||
'No matches with your selected filters!' => 'Aucun résultat avec les filtres sélectionnés.',
|
||||
'Nothing here yet!' => 'Rien à afficher actuellement.',
|
||||
'Only private posts' => 'Uniquement les publications privées',
|
||||
'Only public posts' => 'Uniquement les publications publiques',
|
||||
'Posts only' => 'Publications seules',
|
||||
'Posts with links' => 'Publications avec liens',
|
||||
'Sorting' => 'Trier',
|
||||
'The content has been archived.' => 'Le contenu a été archivé.',
|
||||
'The content has been deleted.' => 'Le contenu a été supprimé.',
|
||||
'The content has been unarchived.' => 'Le contenu a été désarchivé.',
|
||||
'Where I´m involved' => 'Où je suis impliqué',
|
||||
'Your last edit state has been saved!' => 'Votre dernier état d\'édition a été enregistré.',
|
||||
);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user