Перейти к основному содержанию

Dropfiles: интеграция с Dropbox

1. Создать приложение Dropbox

Dropbox включён в основной пакет Dropfiles.

Сначала вам нужно приложение Dropbox, чтобы подключить ваш сайт к аккаунту Dropbox. Перейдите к https://developers.dropbox.com/ и создайте новое приложение. 

 

create-dropbox-app

 

Затем настройте тип приложения "Dropbox API", "Full Dropbox" и имя приложения

Категории файлов из Dropfiles будут добавлены как папки @ корень вашего аккаунта Dropbox (отлично для отдельного аккаунта Dropbox). Если вы выберете "App folder", все папки/файлы будут храниться в одной папке (избегите беспорядка в вашем аккаунте Dropbox).

 

dropbox-app-info

 

Затем вы почти закончили, ваше приложение создано, и вы получили ключ и секрет приложения.

 

app-create-dropbox

 

Авторизованный URL перенаправления

В раздел OAuth 2, вставьте Авторизованный URL перенаправления из настроек Dropbox Dropfiles на Redirect URls поле, затем нажмите Добавить кнопку. URL должен выглядеть так: "https://joomunited.com/administrator/index.php?option=com_dropfiles&task=dropbox.authenticated"

 

dropbox-redirect-url

 

Для большей безопасности в будущем, вам следует выбрать "Short-lived" вариант в раздел OAuth 2 > Истечение срока доступа.

 

token-expire-dropbox

 

И в Разрешения вкладке, вы должны установить разрешения, как показано на изображении ниже.

 

permission-dropbox-setup

 

2. Войти в Dropbox через Dropfiles

Автоматический режим

С этого момента вы можете сэкономить много времени, подключаясь к серверу Dropbox. Во-первых, чтобы использовать эту функцию, вам нужно подключить ваш аккаунт Joomunited в Настройки Dropfiles > Обновления в реальном времени вкладке, пожалуйста, нажмите на Связать мой аккаунт Joomunited кнопку и войдите, если вы ещё не подключены.

 

live-updates-dropfiles

 

Затем перейдите к Облачное подключение > Dropbox вкладке и просто нажмите на Подключить Dropbox кнопку в правом углу.

 

automatic-dropbox-dropfiles

 

Затем выполните следующие шаги, чтобы завершить подключение.

 

auto-dropbox-connected-dropfiles

 

Ручной режим

С учётными данными из предыдущего шага, пожалуйста, перейдите в админку Joomla и нажмите на меню Dropfiles > Options > Cloud connection tab > Dropbox settings. Вставьте ваш

  • Ключ приложения
  • Секрет приложения

Затем сохраните конфигурацию и нажмите на кнопку «Подключить Dropbox»

 

reconnect-dropbox

 

Вам придётся подтвердить разрешение доступа для приложения, просто нажмите Разрешить.

 

allow-dropbox-app

 

Подключение должно быть успешным ☺ 

 

подключено

 

Одновременно вы увидите "Watch changes from Dropbox" кнопку. Чтобы использовать эту функцию, пожалуйста, добавьте URL из предупреждающего сообщения в {your App name} > Настройки вкладку на Шаг 3:

например: https://{your-domain}/index.php?option=com_dropfiles&task=frontdropbox.listener 

 

URL вебхука

 

Затем в настройках Dropfiles нажмите на "Watch changes from Dropbox" кнопку, чтобы активировать. Если отключить, файлы и папки не будут синхронизированы сразу из Dropbox в ваш Dropfiles.

 

watch-changes-dropbox

 

Теперь вы можете создавать папки, подпапки в Dropbox и в Dropfiles, всё будет синхронизировано!

 

новая-папка-dropbox

 

Обновление с API v1 Dropbox до версии API v2

В связи с крупным изменением API Dropbox 19 февраля 2022 года ранее созданные приложения Dropbox требуют обновления до API v2, чтобы снова работать. Если ваше приложение было создано незадолго до указанной даты, есть вероятность, что вам просто нужно выйти и войти снова, чтобы решить проблему.
Если нет, вам следует выполнить следующие шаги, чтобы перенести данные из старого приложения Dropbox в новое.

 

Вариант 1: продолжать использовать ваше старое приложение Dropbox


Случай 1: Вы использовали автоматический коннектор
 

Это самый простой сценарий. Просто откройте плагин Настройки Dropfiles > Облачное соединение > вкладка Dropbox и отключите/подключите заново ваш аккаунт Dropbox, чтобы решить проблему.

 

automatic-dropbox-dropfiles

 

Случай 2: Вы использовали пользовательское приложение Dropbox, созданное недавно

Пожалуйста, попробуйте добавить авторизованные URI перенаправления в настройках Dropbox к вашему Приложение Dropbox и повторно подключите учетную запись Dropbox в Dropfiles. Если это работает, that’s всё, что вам нужно сделать.
Если эта процедура не работает, вам следует перейти к варианту 2 ниже.

Добавьте авторизованные URI перенаправления под разделом OAuth 2:

 

dropbox-redirect-url

 

А также в Разрешения вкладке, вы должны установить разрешения, как на изображении ниже. Затем вам следует нажать на Мигрировать кнопку.

 

permission-dropbox-setup

 

Затем повторно подключите приложение из настроек Dropfiles

 

reconnect-dropbox

 

Опция 2: Подключить новое приложение Dropbox и переместить файлы

Шаг 1. Вы должны создать новое Приложение Dropbox и подключите ваш аккаунт Dropbox из настроек Dropfiles. Пожалуйста, следуйте этим шагам, подробно описанным в главе 1 этой документации, чтобы продолжить.

 

создать-приложение

 

Шаг 2. Переместите ваши файлы Dropbox и синхронизируйте их заново

После подключения вашего нового приложения Dropbox к вашему сайту Joomla, вам следует переместить все папки и файлы из корневой папки старого приложения в Dropbox. Просто перетащите и бросьте все ваши папки в новую папку, используемую новым приложением.
Затем подождите полной синхронизации; в зависимости от объёма данных это может занять некоторое время.

 

new-app-file-move

 

3. Как это работает? Что я могу сделать с Dropbox?

Как это работает? 

Dropfiles создает корневую папку в вашей учетной записи Dropbox, обеспечивая двустороннюю синхронизацию между обеими платформами. Файлы и папки, добавленные в Dropbox или Dropfiles, будут автоматически синхронизироваться друг с другом.

 

dropbox-web


Какие направления синхронизации?

Это работает в обоих направлениях! Вы можете добавить файл из Dropbox и увидеть его в Dropfiles, или добавить файл в Dropfiles и увидеть его в Dropbox. Это также означает, что вы можете управлять файлами Dropfiles с вашего компьютера, используя программное обеспечение синхронизации Dropbox. Это безумно! Да, мы знаем ☺

 

dropfiles-dropbox-папка

 

Duplicate entry '49263e4176ff53f5ff1efff72d6df4fb-ru' for key 'bk24_linguise_urls.hash_translation' (500 Whoops, looks like something went wrong.)

mysqli_sql_exception

HTTP 500 Whoops, looks like something went wrong.

Duplicate entry '49263e4176ff53f5ff1efff72d6df4fb-ru' for key 'bk24_linguise_urls.hash_translation'

Exception

mysqli_sql_exception

Show exception properties
mysqli_sql_exception {#896
  #sqlstate: "23000"
}
  1. foreach ($urls as $translation => $source) {
  2. $elements[] = '("'.mysqli_real_escape_string($this->_database, Request::getInstance()->getLanguage()).'", "'.mysqli_real_escape_string($this->_database, $source).'", "'.mysqli_real_escape_string($this->_database, $translation).'", "'.md5($source).'", "'.md5($translation).'")';
  3. }
  4. $query .= implode(',', $elements);
  5. $query .= ' ON DUPLICATE KEY UPDATE source=VALUES(source), translation=VALUES(translation), hash_source=VALUES(hash_source), hash_translation=VALUES(hash_translation)';
  6. $this->_database->query($query);
  7. }
  8. public function removeUrls($urls)
  9. {
  10. $query = 'DELETE FROM '.mysqli_real_escape_string($this->_database, $this->_database_table_urls).' WHERE (hash_source) IN ';
  1. foreach ($urls as $translation => $source) {
  2. $elements[] = '("'.mysqli_real_escape_string($this->_database, Request::getInstance()->getLanguage()).'", "'.mysqli_real_escape_string($this->_database, $source).'", "'.mysqli_real_escape_string($this->_database, $translation).'", "'.md5($source).'", "'.md5($translation).'")';
  3. }
  4. $query .= implode(',', $elements);
  5. $query .= ' ON DUPLICATE KEY UPDATE source=VALUES(source), translation=VALUES(translation), hash_source=VALUES(hash_source), hash_translation=VALUES(hash_translation)';
  6. $this->_database->query($query);
  7. }
  8. public function removeUrls($urls)
  9. {
  10. $query = 'DELETE FROM '.mysqli_real_escape_string($this->_database, $this->_database_table_urls).' WHERE (hash_source) IN ';
  1. public function saveUrls($urls) {
  2. if (empty($urls)) {
  3. return;
  4. }
  5. return $this->_database->saveUrls($urls);
  6. }
  7. public function removeUrls($urls) {
  8. if (empty($urls)) {
  9. return;
  1. if (isset($result->url_translations)) {
  2. Defer::getInstance()->defer(function() use ($result) {
  3. $new_urls = $result->url_translations;
  4. $new_urls = get_object_vars($new_urls);
  5. Database::getInstance()->saveUrls((array)$new_urls);
  6. });
  7. }
  8. if (isset($result->urls_untranslated)) {
  9. Defer::getInstance()->defer(function() use ($result) {
Translation->Linguise\Script\Core\{closure}()
  1. }
  2. public function finalize()
  3. {
  4. foreach ($this->_actions as $action) {
  5. call_user_func($action['function'], $action['args']);
  6. }
  7. }
  8. }
  1. Helper::prepareDataDir();
  2. // Finalize defer actions on shutdown
  3. // @codeCoverageIgnoreStart
  4. register_shutdown_function(function() {
  5. Defer::getInstance()->finalize();
  6. Database::getInstance()->close();
  7. });
  8. // @codeCoverageIgnoreEnd
  9. }
Processor->Linguise\Script\Core\{closure}()

Stack Trace

mysqli_sql_exception
mysqli_sql_exception:
Duplicate entry '49263e4176ff53f5ff1efff72d6df4fb-ru' for key 'bk24_linguise_urls.hash_translation'

  at /var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Databases/Mysql.php:170
  at mysqli->query()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Databases/Mysql.php:170)
  at Linguise\Script\Core\Databases\Mysql->saveUrls()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Database.php:232)
  at Linguise\Script\Core\Database->saveUrls()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Translation.php:119)
  at Linguise\Script\Core\Translation->Linguise\Script\Core\{closure}()
  at call_user_func()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Defer.php:42)
  at Linguise\Script\Core\Defer->finalize()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Processor.php:31)
  at Linguise\Script\Core\Processor->Linguise\Script\Core\{closure}()