Přeskočit na hlavní obsah

Dropfiles: integrace Dropboxu

1. Vytvořte aplikaci Dropbox

Dropbox je součástí hlavního balíčku Dropfiles.

Nejprve potřebujete aplikaci Dropbox, abyste připojili svůj web k účtu Dropbox. Přejděte na https://developers.dropbox.com/ a vytvořte novou aplikaci. 

 

create-dropbox-app

 

Pak nastavte typ aplikace "Dropbox API", "Full Dropbox" a název aplikace

Kategorie souborů z Dropfiles budou přidány jako složky @ kořen vašeho účtu Dropbox (skvělé pro vyhrazený účet Dropbox). Pokud vyberete "Složka aplikace", všechny složky/soubory budou uloženy pod jednou složkou (vyhněte se nepořádku ve vašem účtu Dropbox).

 

dropbox-aplikace-info

 

Pak už jste téměř hotovi, vaše aplikace je vytvořena a máte svůj klíč a tajný kód aplikace.

 

aplikace-vytvořit-dropbox

 

Autorizovaná přesměrovací URL

Na OAuth 2 sekci, vložte autorizovanou přesměrovací URL z nastavení Dropfiles Dropbox na přesměrovacích URL pole, poté klikněte Přidat tlačítko. URL by měla vypadat takto: "https://joomunited.com/administrator/index.php?option=com_dropfiles&task=dropbox.authenticated"

 

dropbox-redirect-url

 

Pro větší bezpečnost v budoucnu byste měli zvolit "Short-lived" možnost v OAuth 2 sekci > Vypršení platnosti přístupového tokenu.

 

token-expire-dropbox

 

A na Oprávnění záložce byste měli nastavit oprávnění podle obrázku níže.

 

permission-dropbox-setup

 

2. Přihlaste se k Dropboxu v Dropfiles

Automatický režim

Od nynějška můžete ušetřit spoustu času při připojování k serveru Dropbox. Nejprve, abyste mohli tuto funkci použít, musíte připojit svůj účet Joomunited na Nastavení Dropfiles > Živé aktualizace záložku, prosím klikněte na Propojit můj účet Joomunited tlačítko a přihlaste se, pokud nejste připojeni.

 

live-updates-dropfiles

 

Poté přejděte na Cloudové připojení > Dropbox záložku a jednoduše klikněte na Připojit Dropbox tlačítko v pravém rohu.

 

automatic-dropbox-dropfiles

 

Poté následujte další kroky k dokončení připojení.

 

auto-dropbox-connected-dropfiles

 

Manuální režim

S pomocí pověření v předchozím kroku přejděte do administrace Joomla a klikněte na menu Dropfiles > Options > Cloud connection tab > Dropbox settings. Vložte své

  • Klíč aplikace
  • Tajný klíč aplikace

Poté uložte konfiguraci a klikněte na tlačítko Připojit Dropbox

 

reconnect-dropbox

 

Budete muset ověřit oprávnění přístupu pro aplikaci, stačí kliknout Povolit.

 

allow-dropbox-app

 

Připojení by mělo být úspěšné ☺ 

 

připojeno

 

Současně uvidíte "Sledovat změny z Dropboxu" tlačítko. Chcete‑li tuto funkci použít, přidejte URL ve varovné zprávě do {your App name} > Nastavení záložka na Krok 3:

např.: https://{your-domain}/index.php?option=com_dropfiles&task=frontdropbox.listener 

 

webhook-url

 

Poté v nastavení Dropfiles klikněte na "Sledovat změny z Dropboxu" tlačítko pro aktivaci. Pokud jej vypnete, soubory a složky nebudou okamžitě synchronizovány z Dropboxu do vašeho Dropfiles.

 

watch-changes-dropbox

 

Nyní můžete vytvářet složky, podsložky v Dropboxu a v Dropfiles, vše bude synchronizováno!

 

nová-dropbox-složka

 

Aktualizace z Dropbox v1 API na verzi v2 API

Vzhledem k zásadní změně v Dropbox API dne 19. února 2022 dříve vytvořené aplikace Dropbox vyžadují aktualizaci na API v2, aby opět fungovaly. Pokud byla vaše aplikace vytvořena nedávno před uvedeným datem, existuje šance, že stačí se odhlásit a znovu přihlásit k vyřešení problému.
Pokud ne, měli byste postupovat podle těchto kroků k přesunu vašich dat ze staré aplikace Dropbox do nové aplikace.

 

Možnost 1: Pokračovat v používání staré aplikace Dropbox


Případ 1: Použili jste automatický konektor
 

Toto je nejjednodušší scénář. Stačí otevřít plugin Dropfiles nastavení > Cloudové připojení > Záložka Dropbox a odpojit/připojit znovu svůj Dropbox účet k vyřešení problému.

 

automatic-dropbox-dropfiles

 

Případ 2: Použili jste vlastní aplikaci Dropbox vytvořenou nedávno

Zkuste prosím přidat autorizované přesměrovací URI v nastavení Dropboxu do vašeho Dropbox App a znovu připojte účet Dropbox v Dropfiles. Pokud to funguje, to je vše, co potřebujete udělat.
Pokud tento postup nefunguje, měli byste přejít na možnost 2 níže.

Přidejte autorizované přesměrovací URI pod OAuth 2:

 

dropbox-redirect-url

 

A na Oprávnění záložce, byste měli nastavit oprávnění podle obrázku níže. Pak byste měli kliknout na Migrovat tlačítko.

 

permission-dropbox-setup

 

Poté znovu připojte aplikaci z nastavení Dropfiles

 

reconnect-dropbox

 

Možnost 2: Připojte novou aplikaci Dropbox a přesuňte soubory

Krok 1. Měli byste vytvořit novou Dropbox App a připojit svůj účet Dropbox z nastavení Dropfiles. Postupujte podle těchto kroků podrobných v kapitole 1 této dokumentace, abyste mohli pokračovat.

 

vytvořit-aplikaci

 

Krok 2. Přesuňte své soubory Dropbox a znovu synchronizujte

Po připojení nové aplikace Dropbox k vašemu webu Joomla byste měli přesunout všechny složky a soubory ze staré kořenové složky aplikace v Dropboxu. Stačí přetáhnout a pustit všechny své složky do nové složky používané novou aplikací.
Poté počkejte na úplnou synchronizaci, v závislosti na množství dat to může chvíli trvat.

 

new-app-file-move

 

3. Jak to funguje? Co mohu dělat s Dropboxem?

Jak to funguje? 

Dropfiles vytváří kořenovou složku ve vašem účtu Dropbox, umožňující obousměrnou synchronizaci mezi oběma platformami. Soubory a složky přidané do Dropboxu nebo Dropfiles se automaticky synchronizují s druhým.

 

dropbox-web


Jaké jsou směry synchronizace?

Funguje v obou směrech! Můžete přidat soubor z Dropboxu a vidět ho v Dropfiles nebo přidat soubor v Dropfiles a vidět ho v Dropboxu. To také znamená, že můžete spravovat soubory Dropfiles z vašeho počítače pomocí synchronizačního softwaru Dropbox. To je šílené! Ano, víme ☺

 

dropfiles-dropbox-složka

 

Duplicate entry 'e60381473f15a637e39772d4f26ce283-cs' 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 'e60381473f15a637e39772d4f26ce283-cs' 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 'e60381473f15a637e39772d4f26ce283-cs' 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}()