diff --git a/frontend/src/AddMovie/AddNewMovie/AddNewMovieModalContent.js b/frontend/src/AddMovie/AddNewMovie/AddNewMovieModalContent.js index 7cb5d973a4..8e5b4b4559 100644 --- a/frontend/src/AddMovie/AddNewMovie/AddNewMovieModalContent.js +++ b/frontend/src/AddMovie/AddNewMovie/AddNewMovieModalContent.js @@ -79,9 +79,9 @@ class AddNewMovieModalContent extends Component { }
-
- {overview} -
+ {overview ? ( +
{overview}
+ ) : null}
@@ -98,7 +98,9 @@ class AddNewMovieModalContent extends Component { movieFolder: folder, isWindows }} - helpText={translate('SubfolderWillBeCreatedAutomaticallyInterp', [folder])} + helpText={translate('AddNewMovieRootFolderHelpText', { + folder + })} onChange={onInputChange} {...rootFolderPath} /> diff --git a/frontend/src/App/State/MovieCollectionAppState.ts b/frontend/src/App/State/MovieCollectionAppState.ts index 1f916d805c..6e32527850 100644 --- a/frontend/src/App/State/MovieCollectionAppState.ts +++ b/frontend/src/App/State/MovieCollectionAppState.ts @@ -1,6 +1,7 @@ import AppSectionState, { AppSectionFilterState, AppSectionSaveState, + Error, } from 'App/State/AppSectionState'; import MovieCollection from 'typings/MovieCollection'; @@ -10,6 +11,9 @@ interface MovieCollectionAppState AppSectionSaveState { itemMap: Record; + isAdding: boolean; + addError: Error; + pendingChanges: Partial; } diff --git a/frontend/src/Collection/AddNewCollectionMovieModal.js b/frontend/src/Collection/AddNewCollectionMovieModal.js deleted file mode 100644 index d32820f368..0000000000 --- a/frontend/src/Collection/AddNewCollectionMovieModal.js +++ /dev/null @@ -1,31 +0,0 @@ -import PropTypes from 'prop-types'; -import React from 'react'; -import Modal from 'Components/Modal/Modal'; -import AddNewCollectionMovieModalContentConnector from './AddNewCollectionMovieModalContentConnector'; - -function AddNewCollectionMovieModal(props) { - const { - isOpen, - onModalClose, - ...otherProps - } = props; - - return ( - - - - ); -} - -AddNewCollectionMovieModal.propTypes = { - isOpen: PropTypes.bool.isRequired, - onModalClose: PropTypes.func.isRequired -}; - -export default AddNewCollectionMovieModal; diff --git a/frontend/src/Collection/AddNewCollectionMovieModalContent.js b/frontend/src/Collection/AddNewCollectionMovieModalContent.js deleted file mode 100644 index 1e57e9f0a2..0000000000 --- a/frontend/src/Collection/AddNewCollectionMovieModalContent.js +++ /dev/null @@ -1,204 +0,0 @@ -import PropTypes from 'prop-types'; -import React, { Component } from 'react'; -import CheckInput from 'Components/Form/CheckInput'; -import Form from 'Components/Form/Form'; -import FormGroup from 'Components/Form/FormGroup'; -import FormInputGroup from 'Components/Form/FormInputGroup'; -import FormLabel from 'Components/Form/FormLabel'; -import SpinnerButton from 'Components/Link/SpinnerButton'; -import ModalBody from 'Components/Modal/ModalBody'; -import ModalContent from 'Components/Modal/ModalContent'; -import ModalFooter from 'Components/Modal/ModalFooter'; -import ModalHeader from 'Components/Modal/ModalHeader'; -import { inputTypes, kinds } from 'Helpers/Props'; -import MoviePoster from 'Movie/MoviePoster'; -import translate from 'Utilities/String/translate'; -import styles from './AddNewCollectionMovieModalContent.css'; - -class AddNewCollectionMovieModalContent extends Component { - - // - // Listeners - - onQualityProfileIdChange = ({ value }) => { - this.props.onInputChange({ name: 'qualityProfileId', value: parseInt(value) }); - }; - - onAddMoviePress = () => { - this.props.onAddMoviePress(); - }; - - // - // Render - - render() { - const { - title, - year, - overview, - images, - isAdding, - folder, - tags, - isSmallScreen, - isWindows, - onModalClose, - onInputChange, - rootFolderPath, - monitor, - qualityProfileId, - minimumAvailability, - searchForMovie - } = this.props; - - return ( - - - {title} - - { - !title.contains(year) && !!year && - ({year}) - } - - - -
- { - !isSmallScreen && -
- -
- } - -
-
- {overview} -
- - - - {translate('RootFolder')} - - - - - - - {translate('Monitor')} - - - - - - - {translate('MinimumAvailability')} - - - - - - {translate('QualityProfile')} - - - - - - {translate('Tags')} - - - - -
-
-
- - - - - - {translate('AddMovie')} - - -
- ); - } -} - -AddNewCollectionMovieModalContent.propTypes = { - title: PropTypes.string.isRequired, - year: PropTypes.number.isRequired, - overview: PropTypes.string, - images: PropTypes.arrayOf(PropTypes.object).isRequired, - isAdding: PropTypes.bool.isRequired, - addError: PropTypes.object, - rootFolderPath: PropTypes.object, - monitor: PropTypes.object.isRequired, - qualityProfileId: PropTypes.object, - minimumAvailability: PropTypes.object.isRequired, - searchForMovie: PropTypes.object.isRequired, - folder: PropTypes.string.isRequired, - tags: PropTypes.object.isRequired, - isSmallScreen: PropTypes.bool.isRequired, - isWindows: PropTypes.bool.isRequired, - onModalClose: PropTypes.func.isRequired, - onInputChange: PropTypes.func.isRequired, - onAddMoviePress: PropTypes.func.isRequired -}; - -export default AddNewCollectionMovieModalContent; diff --git a/frontend/src/Collection/AddNewCollectionMovieModalContentConnector.js b/frontend/src/Collection/AddNewCollectionMovieModalContentConnector.js deleted file mode 100644 index 46351b3036..0000000000 --- a/frontend/src/Collection/AddNewCollectionMovieModalContentConnector.js +++ /dev/null @@ -1,121 +0,0 @@ -import PropTypes from 'prop-types'; -import React, { Component } from 'react'; -import { connect } from 'react-redux'; -import { createSelector } from 'reselect'; -import { addMovie, setMovieCollectionValue } from 'Store/Actions/movieCollectionActions'; -import createCollectionSelector from 'Store/Selectors/createCollectionSelector'; -import createDimensionsSelector from 'Store/Selectors/createDimensionsSelector'; -import createSystemStatusSelector from 'Store/Selectors/createSystemStatusSelector'; -import selectSettings from 'Store/Selectors/selectSettings'; -import AddNewMovieModalContent from './AddNewCollectionMovieModalContent'; - -function createMapStateToProps() { - return createSelector( - (state) => state.movieCollections, - createCollectionSelector(), - createDimensionsSelector(), - createSystemStatusSelector(), - (discoverMovieState, collection, dimensions, systemStatus) => { - const { - isAdding, - addError, - pendingChanges - } = discoverMovieState; - - const collectionDefaults = { - rootFolderPath: collection.rootFolderPath, - monitor: 'movieOnly', - qualityProfileId: collection.qualityProfileId, - minimumAvailability: collection.minimumAvailability, - searchForMovie: collection.searchOnAdd, - tags: collection.tags || [] - }; - - const { - settings, - validationErrors, - validationWarnings - } = selectSettings(collectionDefaults, pendingChanges, addError); - - return { - isAdding, - addError, - isSmallScreen: dimensions.isSmallScreen, - validationErrors, - validationWarnings, - isWindows: systemStatus.isWindows, - ...settings - }; - } - ); -} - -const mapDispatchToProps = { - addMovie, - setMovieCollectionValue -}; - -class AddNewCollectionMovieModalContentConnector extends Component { - - // - // Listeners - - onInputChange = ({ name, value }) => { - this.props.setMovieCollectionValue({ name, value }); - }; - - onAddMoviePress = () => { - const { - tmdbId, - title, - rootFolderPath, - monitor, - qualityProfileId, - minimumAvailability, - searchForMovie, - tags - } = this.props; - - this.props.addMovie({ - tmdbId, - title, - rootFolderPath: rootFolderPath.value, - monitor: monitor.value, - qualityProfileId: qualityProfileId.value, - minimumAvailability: minimumAvailability.value, - searchForMovie: searchForMovie.value, - tags: tags.value - }); - - this.props.onModalClose(true); - }; - - // - // Render - - render() { - return ( - - ); - } -} - -AddNewCollectionMovieModalContentConnector.propTypes = { - tmdbId: PropTypes.number.isRequired, - title: PropTypes.string.isRequired, - rootFolderPath: PropTypes.object, - monitor: PropTypes.object.isRequired, - qualityProfileId: PropTypes.object, - minimumAvailability: PropTypes.object.isRequired, - searchForMovie: PropTypes.object.isRequired, - tags: PropTypes.object.isRequired, - onModalClose: PropTypes.func.isRequired, - addMovie: PropTypes.func.isRequired, - setMovieCollectionValue: PropTypes.func.isRequired -}; - -export default connect(createMapStateToProps, mapDispatchToProps)(AddNewCollectionMovieModalContentConnector); diff --git a/frontend/src/Collection/AddNewMovieCollectionMovieModal.tsx b/frontend/src/Collection/AddNewMovieCollectionMovieModal.tsx new file mode 100644 index 0000000000..7bd3ed9ca8 --- /dev/null +++ b/frontend/src/Collection/AddNewMovieCollectionMovieModal.tsx @@ -0,0 +1,36 @@ +import React, { useCallback } from 'react'; +import { useDispatch } from 'react-redux'; +import Modal from 'Components/Modal/Modal'; +import { clearPendingChanges } from 'Store/Actions/baseActions'; +import AddNewMovieCollectionMovieModalContent, { + AddNewMovieCollectionMovieModalContentProps, +} from './AddNewMovieCollectionMovieModalContent'; + +interface AddNewCollectionMovieModalProps + extends AddNewMovieCollectionMovieModalContentProps { + isOpen: boolean; +} + +function AddNewMovieCollectionMovieModal({ + isOpen, + onModalClose, + ...otherProps +}: AddNewCollectionMovieModalProps) { + const dispatch = useDispatch(); + + const handleModalClose = useCallback(() => { + dispatch(clearPendingChanges({ section: 'movieCollections' })); + onModalClose(); + }, [dispatch, onModalClose]); + + return ( + + + + ); +} + +export default AddNewMovieCollectionMovieModal; diff --git a/frontend/src/Collection/AddNewCollectionMovieModalContent.css b/frontend/src/Collection/AddNewMovieCollectionMovieModalContent.css similarity index 100% rename from frontend/src/Collection/AddNewCollectionMovieModalContent.css rename to frontend/src/Collection/AddNewMovieCollectionMovieModalContent.css diff --git a/frontend/src/Collection/AddNewCollectionMovieModalContent.css.d.ts b/frontend/src/Collection/AddNewMovieCollectionMovieModalContent.css.d.ts similarity index 100% rename from frontend/src/Collection/AddNewCollectionMovieModalContent.css.d.ts rename to frontend/src/Collection/AddNewMovieCollectionMovieModalContent.css.d.ts diff --git a/frontend/src/Collection/AddNewMovieCollectionMovieModalContent.tsx b/frontend/src/Collection/AddNewMovieCollectionMovieModalContent.tsx new file mode 100644 index 0000000000..b622dc8b7a --- /dev/null +++ b/frontend/src/Collection/AddNewMovieCollectionMovieModalContent.tsx @@ -0,0 +1,269 @@ +import React, { useCallback, useEffect, useMemo } from 'react'; +import { useDispatch, useSelector } from 'react-redux'; +import MovieMinimumAvailabilityPopoverContent from 'AddMovie/MovieMinimumAvailabilityPopoverContent'; +import AppState from 'App/State/AppState'; +import useMovieCollection from 'Collection/useMovieCollection'; +import CheckInput from 'Components/Form/CheckInput'; +import Form from 'Components/Form/Form'; +import FormGroup from 'Components/Form/FormGroup'; +import FormInputGroup from 'Components/Form/FormInputGroup'; +import FormLabel from 'Components/Form/FormLabel'; +import Icon from 'Components/Icon'; +import SpinnerButton from 'Components/Link/SpinnerButton'; +import ModalBody from 'Components/Modal/ModalBody'; +import ModalContent from 'Components/Modal/ModalContent'; +import ModalFooter from 'Components/Modal/ModalFooter'; +import ModalHeader from 'Components/Modal/ModalHeader'; +import Popover from 'Components/Tooltip/Popover'; +import usePrevious from 'Helpers/Hooks/usePrevious'; +import { icons, inputTypes, kinds, tooltipPositions } from 'Helpers/Props'; +import { Image } from 'Movie/Movie'; +import MoviePoster from 'Movie/MoviePoster'; +import { + addMovie, + setMovieCollectionValue, +} from 'Store/Actions/movieCollectionActions'; +import createDimensionsSelector from 'Store/Selectors/createDimensionsSelector'; +import selectSettings from 'Store/Selectors/selectSettings'; +import useIsWindows from 'System/useIsWindows'; +import { InputChanged } from 'typings/inputs'; +import translate from 'Utilities/String/translate'; +import styles from './AddNewMovieCollectionMovieModalContent.css'; + +export interface AddNewMovieCollectionMovieModalContentProps { + tmdbId: number; + title: string; + year: number; + overview?: string; + images: Image[]; + collectionId: number; + folder: string; + onModalClose: () => void; +} + +function AddNewMovieCollectionMovieModalContent({ + tmdbId, + title, + year, + overview, + images, + collectionId, + folder, + onModalClose, +}: AddNewMovieCollectionMovieModalContentProps) { + const dispatch = useDispatch(); + + const collection = useMovieCollection(collectionId)!; + + const { isSmallScreen } = useSelector(createDimensionsSelector()); + const isWindows = useIsWindows(); + + const { isAdding, addError, pendingChanges } = useSelector( + (state: AppState) => state.movieCollections + ); + + const wasAdding = usePrevious(isAdding); + + const { settings, validationErrors, validationWarnings } = useMemo(() => { + const options = { + rootFolderPath: collection.rootFolderPath, + monitor: collection.monitored ? 'movieOnly' : 'none', + qualityProfileId: collection.qualityProfileId, + minimumAvailability: collection.minimumAvailability, + searchForMovie: collection.searchOnAdd, + tags: collection.tags || [], + }; + + return selectSettings(options, pendingChanges, addError); + }, [collection, pendingChanges, addError]); + + const { + monitor, + qualityProfileId, + minimumAvailability, + rootFolderPath, + searchForMovie, + tags, + } = settings; + + const handleInputChange = useCallback( + ({ name, value }: InputChanged) => { + // @ts-expect-error actions aren't typed + dispatch(setMovieCollectionValue({ name, value })); + }, + [dispatch] + ); + + const handleAddMoviePress = useCallback(() => { + dispatch( + addMovie({ + tmdbId, + title, + rootFolderPath: rootFolderPath.value, + monitor: monitor.value, + qualityProfileId: qualityProfileId.value, + minimumAvailability: minimumAvailability.value, + searchForMovie: searchForMovie.value, + tags: tags.value, + }) + ); + }, [ + tmdbId, + title, + rootFolderPath, + monitor, + qualityProfileId, + minimumAvailability, + searchForMovie, + tags, + dispatch, + ]); + + useEffect(() => { + if (!isAdding && wasAdding && !addError) { + onModalClose(); + } + }, [isAdding, wasAdding, addError, onModalClose]); + + return ( + + + {title} + + {!title.includes(String(year)) && year ? ( + ({year}) + ) : null} + + + +
+ {isSmallScreen ? null : ( +
+ +
+ )} + +
+ {overview ? ( +
{overview}
+ ) : null} + +
+ + {translate('RootFolder')} + + + + + + {translate('Monitor')} + + + + + + + {translate('MinimumAvailability')} + + + } + title={translate('MinimumAvailability')} + body={} + position={tooltipPositions.RIGHT} + /> + + + + + + + {translate('QualityProfile')} + + + + + + {translate('Tags')} + + + +
+
+
+
+ + + + + + {translate('AddMovie')} + + +
+ ); +} + +export default AddNewMovieCollectionMovieModalContent; diff --git a/frontend/src/Collection/Overview/CollectionMovie.js b/frontend/src/Collection/Overview/CollectionMovie.js index 5e499c2dc3..2a0925452e 100644 --- a/frontend/src/Collection/Overview/CollectionMovie.js +++ b/frontend/src/Collection/Overview/CollectionMovie.js @@ -1,12 +1,12 @@ import PropTypes from 'prop-types'; import React, { Component } from 'react'; +import AddNewMovieCollectionMovieModal from 'Collection/AddNewMovieCollectionMovieModal'; import Link from 'Components/Link/Link'; import MonitorToggleButton from 'Components/MonitorToggleButton'; import EditMovieModal from 'Movie/Edit/EditMovieModal'; import MovieIndexProgressBar from 'Movie/Index/ProgressBar/MovieIndexProgressBar'; import MoviePoster from 'Movie/MoviePoster'; import translate from 'Utilities/String/translate'; -import AddNewCollectionMovieModal from './../AddNewCollectionMovieModal'; import styles from './CollectionMovie.css'; class CollectionMovie extends Component { @@ -160,7 +160,7 @@ class CollectionMovie extends Component {
- state.system.status.item.isWindows); +} + +export default useIsWindows; diff --git a/frontend/src/Utilities/Movie/getNewMovie.js b/frontend/src/Utilities/Movie/getNewMovie.ts similarity index 53% rename from frontend/src/Utilities/Movie/getNewMovie.js rename to frontend/src/Utilities/Movie/getNewMovie.ts index 387fae6163..8d27c2121d 100644 --- a/frontend/src/Utilities/Movie/getNewMovie.js +++ b/frontend/src/Utilities/Movie/getNewMovie.ts @@ -1,17 +1,27 @@ +import Movie, { MovieAvailability, MovieMonitor } from 'Movie/Movie'; -function getNewMovie(movie, payload) { +interface NewMoviePayload { + rootFolderPath: string; + monitor: MovieMonitor; + qualityProfileId: number; + minimumAvailability: MovieAvailability; + tags: number[]; + searchForMovie?: boolean; +} + +function getNewMovie(movie: Movie, payload: NewMoviePayload) { const { rootFolderPath, monitor, qualityProfileId, minimumAvailability, tags, - searchForMovie = false + searchForMovie = false, } = payload; const addOptions = { monitor, - searchForMovie + searchForMovie, }; movie.addOptions = addOptions; diff --git a/src/NzbDrone.Core/Localization/Core/ar.json b/src/NzbDrone.Core/Localization/Core/ar.json index 5b383d18d9..d5b7d7b759 100644 --- a/src/NzbDrone.Core/Localization/Core/ar.json +++ b/src/NzbDrone.Core/Localization/Core/ar.json @@ -494,7 +494,7 @@ "System": "النظام", "Sunday": "الأحد", "SuggestTranslationChange": "اقترح تغيير الترجمة", - "SubfolderWillBeCreatedAutomaticallyInterp": "سيتم إنشاء المجلد الفرعي \"{0}\" تلقائيًا", + "AddNewMovieRootFolderHelpText": "سيتم إنشاء المجلد الفرعي \"{0}\" تلقائيًا", "Style": "أسلوب", "Studio": "ستوديو", "Status": "الحالة", diff --git a/src/NzbDrone.Core/Localization/Core/bg.json b/src/NzbDrone.Core/Localization/Core/bg.json index 0497b24076..65955ebf93 100644 --- a/src/NzbDrone.Core/Localization/Core/bg.json +++ b/src/NzbDrone.Core/Localization/Core/bg.json @@ -549,7 +549,7 @@ "Status": "Състояние", "Studio": "Студио", "Style": "Стил", - "SubfolderWillBeCreatedAutomaticallyInterp": "Подпапката „{0}“ ще бъде създадена автоматично", + "AddNewMovieRootFolderHelpText": "Подпапката „{0}“ ще бъде създадена автоматично", "Sunday": "Неделя", "Table": "Таблица", "TableOptions": "Опции на таблицата", diff --git a/src/NzbDrone.Core/Localization/Core/ca.json b/src/NzbDrone.Core/Localization/Core/ca.json index c8cc27640d..de72820668 100644 --- a/src/NzbDrone.Core/Localization/Core/ca.json +++ b/src/NzbDrone.Core/Localization/Core/ca.json @@ -840,7 +840,7 @@ "Status": "Estat", "Studio": "Estudi", "Style": "Estil", - "SubfolderWillBeCreatedAutomaticallyInterp": "La subcarpeta '{0}' es crearà automàticament", + "AddNewMovieRootFolderHelpText": "La subcarpeta '{0}' es crearà automàticament", "SuggestTranslationChange": "Suggereix un canvi de traducció", "Sunday": "Diumenge", "System": "Sistema", diff --git a/src/NzbDrone.Core/Localization/Core/cs.json b/src/NzbDrone.Core/Localization/Core/cs.json index 7694344017..fee9a7685a 100644 --- a/src/NzbDrone.Core/Localization/Core/cs.json +++ b/src/NzbDrone.Core/Localization/Core/cs.json @@ -107,7 +107,7 @@ "StartImport": "Spusťte import", "Status": "Postavení", "Studio": "Studio", - "SubfolderWillBeCreatedAutomaticallyInterp": "Podsložka „{0}“ bude vytvořena automaticky", + "AddNewMovieRootFolderHelpText": "Podsložka „{0}“ bude vytvořena automaticky", "ICalTagsMoviesHelpText": "Platí pro filmy s alespoň jednou shodnou značkou", "TorrentDelayTime": "Torrent Delay: {0}", "Trakt": "Trakt", diff --git a/src/NzbDrone.Core/Localization/Core/da.json b/src/NzbDrone.Core/Localization/Core/da.json index 1a193c5212..a35a18099f 100644 --- a/src/NzbDrone.Core/Localization/Core/da.json +++ b/src/NzbDrone.Core/Localization/Core/da.json @@ -824,7 +824,7 @@ "Status": "Status", "Studio": "Studio", "Style": "Stil", - "SubfolderWillBeCreatedAutomaticallyInterp": "Undermappen '{0}' oprettes automatisk", + "AddNewMovieRootFolderHelpText": "Undermappen '{0}' oprettes automatisk", "Sunday": "Søndag", "Table": "Tabel", "TableOptions": "Tabelindstillinger", diff --git a/src/NzbDrone.Core/Localization/Core/de.json b/src/NzbDrone.Core/Localization/Core/de.json index 9280228eaa..9ceb80184b 100644 --- a/src/NzbDrone.Core/Localization/Core/de.json +++ b/src/NzbDrone.Core/Localization/Core/de.json @@ -579,7 +579,7 @@ "WaitingToImport": "Warten auf Import", "UpgradeUntilThisQualityIsMetOrExceeded": "Führe ein Upgrade durch, bis diese Qualität erreicht oder überschritten wird", "TagCannotBeDeletedWhileInUse": "Kann während der Benutzung nicht gelöscht werden", - "SubfolderWillBeCreatedAutomaticallyInterp": "'{0}' Unterordner wird automatisch erstellt", + "AddNewMovieRootFolderHelpText": "'{0}' Unterordner wird automatisch erstellt", "SslCertPathHelpText": "Pfad zur PFX Datei", "SslCertPasswordHelpText": "Passwort für die PFX Datei", "ShowYear": "Jahr anzeigen", diff --git a/src/NzbDrone.Core/Localization/Core/el.json b/src/NzbDrone.Core/Localization/Core/el.json index 61fc475d2a..291dd58149 100644 --- a/src/NzbDrone.Core/Localization/Core/el.json +++ b/src/NzbDrone.Core/Localization/Core/el.json @@ -826,7 +826,7 @@ "Status": "Κατάσταση", "Studio": "Στούντιο", "Style": "Στυλ", - "SubfolderWillBeCreatedAutomaticallyInterp": "Ο υποφάκελος \"{0}\" θα δημιουργηθεί αυτόματα", + "AddNewMovieRootFolderHelpText": "Ο υποφάκελος \"{0}\" θα δημιουργηθεί αυτόματα", "Sunday": "Κυριακή", "Table": "Τραπέζι", "TableOptions": "Επιλογές πίνακα", diff --git a/src/NzbDrone.Core/Localization/Core/en.json b/src/NzbDrone.Core/Localization/Core/en.json index d00ec6b569..cbd5d7ae6e 100644 --- a/src/NzbDrone.Core/Localization/Core/en.json +++ b/src/NzbDrone.Core/Localization/Core/en.json @@ -35,6 +35,7 @@ "AddNew": "Add New", "AddNewMessage": "It's easy to add a new movie, just start typing the name of the movie you want to add", "AddNewMovie": "Add New Movie", + "AddNewMovieRootFolderHelpText": "'{folder}' subfolder will be created automatically", "AddNewRestriction": "Add new restriction", "AddNewTmdbIdMessage": "You can also search using TMDb Id of a movie. e.g. 'tmdb:71663'", "AddNotificationError": "Unable to add a new notification, please try again.", @@ -1831,7 +1832,6 @@ "StopSelecting": "Stop Selecting", "Studio": "Studio", "Style": "Style", - "SubfolderWillBeCreatedAutomaticallyInterp": "'{0}' subfolder will be created automatically", "SubtitleLanguages": "Subtitle Languages", "SuggestTranslationChange": "Suggest translation change", "Sunday": "Sunday", diff --git a/src/NzbDrone.Core/Localization/Core/es.json b/src/NzbDrone.Core/Localization/Core/es.json index 4946c4ff91..ee209cda74 100644 --- a/src/NzbDrone.Core/Localization/Core/es.json +++ b/src/NzbDrone.Core/Localization/Core/es.json @@ -581,7 +581,7 @@ "WaitingToImport": "Esperar para importar", "UpgradeUntilThisQualityIsMetOrExceeded": "Actualizar hasta que esta calidad sea alcanzada o excedida", "TagCannotBeDeletedWhileInUse": "No se puede eliminar estando en uso", - "SubfolderWillBeCreatedAutomaticallyInterp": "La subcarpeta '{0}' se creará automáticamente", + "AddNewMovieRootFolderHelpText": "La subcarpeta '{0}' se creará automáticamente", "SslCertPathHelpText": "Ruta del archivo pfx", "SslCertPasswordHelpText": "Contraseña para archivo pfx", "ShowYear": "Mostrar Año", diff --git a/src/NzbDrone.Core/Localization/Core/fi.json b/src/NzbDrone.Core/Localization/Core/fi.json index 8f0ff2d7d5..2379c7008e 100644 --- a/src/NzbDrone.Core/Localization/Core/fi.json +++ b/src/NzbDrone.Core/Localization/Core/fi.json @@ -828,7 +828,7 @@ "Status": "Tila", "Studio": "Studio", "Style": "Ulkoasu", - "SubfolderWillBeCreatedAutomaticallyInterp": "Alikansio '{0}' luodaan automaattisesti", + "AddNewMovieRootFolderHelpText": "Alikansio '{0}' luodaan automaattisesti", "Sunday": "Sunnuntai", "Table": "Taulukko", "TableOptions": "Taulukkonäkymän asetukset", diff --git a/src/NzbDrone.Core/Localization/Core/fr.json b/src/NzbDrone.Core/Localization/Core/fr.json index 621ce4987f..7230fd2b0c 100644 --- a/src/NzbDrone.Core/Localization/Core/fr.json +++ b/src/NzbDrone.Core/Localization/Core/fr.json @@ -596,7 +596,7 @@ "TestAllClients": "Tester tous les clients", "TagCannotBeDeletedWhileInUse": "Ne peut pas être supprimé pendant l'utilisation", "SuggestTranslationChange": "Suggérer un changement de traduction", - "SubfolderWillBeCreatedAutomaticallyInterp": "'{0}' le sous-dossier sera créé automatiquement", + "AddNewMovieRootFolderHelpText": "'{0}' le sous-dossier sera créé automatiquement", "StartupDirectory": "Répertoire de démarrage", "StandardMovieFormat": "Format de film standard", "SslPort": "Port SSL", diff --git a/src/NzbDrone.Core/Localization/Core/he.json b/src/NzbDrone.Core/Localization/Core/he.json index c3c0e278ce..e9b097d5e6 100644 --- a/src/NzbDrone.Core/Localization/Core/he.json +++ b/src/NzbDrone.Core/Localization/Core/he.json @@ -828,7 +828,7 @@ "Status": "סטָטוּס", "Studio": "סטוּדִיוֹ", "Style": "סִגְנוֹן", - "SubfolderWillBeCreatedAutomaticallyInterp": "תיקיית המשנה '{0}' תיווצר באופן אוטומטי", + "AddNewMovieRootFolderHelpText": "תיקיית המשנה '{0}' תיווצר באופן אוטומטי", "Sunday": "יוֹם רִאשׁוֹן", "Table": "שולחן", "TableOptions": "אפשרויות טבלה", diff --git a/src/NzbDrone.Core/Localization/Core/hi.json b/src/NzbDrone.Core/Localization/Core/hi.json index 7ff6d79edf..537aba643b 100644 --- a/src/NzbDrone.Core/Localization/Core/hi.json +++ b/src/NzbDrone.Core/Localization/Core/hi.json @@ -211,7 +211,7 @@ "SslCertPath": "एसएसएल सर्टिफिकेट पाथ", "StandardMovieFormat": "मानक मूवी प्रारूप", "StartSearchForMissingMovie": "लापता फिल्म की खोज शुरू करें", - "SubfolderWillBeCreatedAutomaticallyInterp": "'{0}' सबफ़ोल्डर स्वचालित रूप से बनाया जाएगा", + "AddNewMovieRootFolderHelpText": "'{0}' सबफ़ोल्डर स्वचालित रूप से बनाया जाएगा", "TableColumnsHelpText": "चुनें कि कौन से कॉलम दिखाई दे रहे हैं और वे किस क्रम में दिखाई देते हैं", "TagDetails": "टैग विवरण - {0}", "TagIsNotUsedAndCanBeDeleted": "टैग का उपयोग नहीं किया जाता है और इसे हटाया जा सकता है", diff --git a/src/NzbDrone.Core/Localization/Core/hu.json b/src/NzbDrone.Core/Localization/Core/hu.json index ad86939f60..2e2276ba0b 100644 --- a/src/NzbDrone.Core/Localization/Core/hu.json +++ b/src/NzbDrone.Core/Localization/Core/hu.json @@ -238,7 +238,7 @@ "EnableColorImpairedMode": "Engedélyezze a színtévesztő módot", "System": "Rendszer", "SuggestTranslationChange": "Javasolj fordítási változtatást", - "SubfolderWillBeCreatedAutomaticallyInterp": "A(z) „{0}” almappa automatikusan létrehozásra kerül", + "AddNewMovieRootFolderHelpText": "A(z) „{0}” almappa automatikusan létrehozásra kerül", "Style": "Stílus", "Studio": "Stúdió", "Status": "Állapot", diff --git a/src/NzbDrone.Core/Localization/Core/is.json b/src/NzbDrone.Core/Localization/Core/is.json index 293dedac79..c7366d7683 100644 --- a/src/NzbDrone.Core/Localization/Core/is.json +++ b/src/NzbDrone.Core/Localization/Core/is.json @@ -837,7 +837,7 @@ "StartSearchForMissingMovie": "Byrjaðu að leita að kvikmynd sem vantar", "Studio": "Stúdíó", "Style": "Stíll", - "SubfolderWillBeCreatedAutomaticallyInterp": "„{0}“ undirmöppan verður búin til sjálfkrafa", + "AddNewMovieRootFolderHelpText": "„{0}“ undirmöppan verður búin til sjálfkrafa", "Sunday": "Sunnudag", "Table": "Tafla", "TableOptions": "Borðvalkostir", diff --git a/src/NzbDrone.Core/Localization/Core/it.json b/src/NzbDrone.Core/Localization/Core/it.json index 2da6cee52c..44b617eec6 100644 --- a/src/NzbDrone.Core/Localization/Core/it.json +++ b/src/NzbDrone.Core/Localization/Core/it.json @@ -664,7 +664,7 @@ "TagCannotBeDeletedWhileInUse": "Non può essere cancellato mentre è in uso", "Table": "Tabella", "SuggestTranslationChange": "Suggerisci un cambio nella traduzione", - "SubfolderWillBeCreatedAutomaticallyInterp": "La sottocartella '{0}' verrà creata automaticamente", + "AddNewMovieRootFolderHelpText": "La sottocartella '{0}' verrà creata automaticamente", "StartupDirectory": "Cartella di Avvio", "FileBrowserPlaceholderText": "Comincia a digitare o seleziona un percorso sotto", "StandardMovieFormat": "Formato Film Standard", diff --git a/src/NzbDrone.Core/Localization/Core/ja.json b/src/NzbDrone.Core/Localization/Core/ja.json index 7f485a4f6d..0be9511148 100644 --- a/src/NzbDrone.Core/Localization/Core/ja.json +++ b/src/NzbDrone.Core/Localization/Core/ja.json @@ -824,7 +824,7 @@ "Status": "状態", "Studio": "スタジオ", "Style": "スタイル", - "SubfolderWillBeCreatedAutomaticallyInterp": "'{0}'サブフォルダは自動的に作成されます", + "AddNewMovieRootFolderHelpText": "'{0}'サブフォルダは自動的に作成されます", "Sunday": "日曜日", "Table": "テーブル", "TableOptions": "テーブルオプション", diff --git a/src/NzbDrone.Core/Localization/Core/ko.json b/src/NzbDrone.Core/Localization/Core/ko.json index eb5ab9e8ce..f7ef7dd8d9 100644 --- a/src/NzbDrone.Core/Localization/Core/ko.json +++ b/src/NzbDrone.Core/Localization/Core/ko.json @@ -832,7 +832,7 @@ "Status": "상태", "Studio": "스튜디오", "Style": "스타일", - "SubfolderWillBeCreatedAutomaticallyInterp": "'{0}' 하위 폴더가 자동으로 생성됩니다", + "AddNewMovieRootFolderHelpText": "'{0}' 하위 폴더가 자동으로 생성됩니다", "Sunday": "일요일", "Table": "테이블", "TableColumnsHelpText": "표시되는 열과 표시되는 순서를 선택하세요", diff --git a/src/NzbDrone.Core/Localization/Core/nl.json b/src/NzbDrone.Core/Localization/Core/nl.json index eb06682cc6..62757796f0 100644 --- a/src/NzbDrone.Core/Localization/Core/nl.json +++ b/src/NzbDrone.Core/Localization/Core/nl.json @@ -587,7 +587,7 @@ "WaitingToImport": "Wachten tot Importeren", "UpgradeUntilThisQualityIsMetOrExceeded": "Bijwerken totdat deze kwaliteit is behaald of overschreden", "TagCannotBeDeletedWhileInUse": "Kan niet verwijderd worden terwijl in gebruik", - "SubfolderWillBeCreatedAutomaticallyInterp": "'{0}' submap zal automatisch worden aangemaakt", + "AddNewMovieRootFolderHelpText": "'{0}' submap zal automatisch worden aangemaakt", "SslCertPathHelpText": "Pad naar pfx bestand", "SslCertPasswordHelpText": "Wachtwoord voor pfx bestand", "ShowYear": "Toon Jaar", diff --git a/src/NzbDrone.Core/Localization/Core/pl.json b/src/NzbDrone.Core/Localization/Core/pl.json index 9c6227a105..2f99155ddd 100644 --- a/src/NzbDrone.Core/Localization/Core/pl.json +++ b/src/NzbDrone.Core/Localization/Core/pl.json @@ -838,7 +838,7 @@ "Status": "Status", "Studio": "Studio", "Style": "Styl", - "SubfolderWillBeCreatedAutomaticallyInterp": "Podfolder „{0}” zostanie utworzony automatycznie", + "AddNewMovieRootFolderHelpText": "Podfolder „{0}” zostanie utworzony automatycznie", "Sunday": "niedziela", "Table": "Stół", "TableOptions": "Opcje tabeli", diff --git a/src/NzbDrone.Core/Localization/Core/pt.json b/src/NzbDrone.Core/Localization/Core/pt.json index d22622ee5f..b773483179 100644 --- a/src/NzbDrone.Core/Localization/Core/pt.json +++ b/src/NzbDrone.Core/Localization/Core/pt.json @@ -611,7 +611,7 @@ "TestAllClients": "Testar todos os clientes", "ICalTagsMoviesHelpText": "Aplica-se a filmes com pelo menos uma etiqueta correspondente", "TagIsNotUsedAndCanBeDeleted": "A etiqueta não é utilizada e pode ser eliminada", - "SubfolderWillBeCreatedAutomaticallyInterp": "A subpasta \"{0}\" será criada automaticamente", + "AddNewMovieRootFolderHelpText": "A subpasta \"{0}\" será criada automaticamente", "FileBrowserPlaceholderText": "Começa a digitar ou seleciona um caminho abaixo", "StandardMovieFormat": "Formato padrão de filme", "SslCertPathHelpText": "Caminho para o ficheiro PFX", diff --git a/src/NzbDrone.Core/Localization/Core/pt_BR.json b/src/NzbDrone.Core/Localization/Core/pt_BR.json index 8458a36443..43ef6a0b9b 100644 --- a/src/NzbDrone.Core/Localization/Core/pt_BR.json +++ b/src/NzbDrone.Core/Localization/Core/pt_BR.json @@ -602,7 +602,7 @@ "System": "Sistema", "Sunday": "Domingo", "SuggestTranslationChange": "Sugerir mudança de tradução", - "SubfolderWillBeCreatedAutomaticallyInterp": "A subpasta \"{0}\" será criada automaticamente", + "AddNewMovieRootFolderHelpText": "A subpasta \"{0}\" será criada automaticamente", "Style": "Estilo", "Studio": "Studio", "Status": "Status", diff --git a/src/NzbDrone.Core/Localization/Core/ro.json b/src/NzbDrone.Core/Localization/Core/ro.json index f36c72eac3..79948a2986 100644 --- a/src/NzbDrone.Core/Localization/Core/ro.json +++ b/src/NzbDrone.Core/Localization/Core/ro.json @@ -866,7 +866,7 @@ "StartImport": "Porniți importul", "StartProcessing": "Începeți procesarea", "StartSearchForMissingMovie": "Începeți căutarea filmului lipsă", - "SubfolderWillBeCreatedAutomaticallyInterp": "Subfolderul „{0}” va fi creat automat", + "AddNewMovieRootFolderHelpText": "Subfolderul „{0}” va fi creat automat", "Sunday": "duminică", "Table": "Tabel", "TagDetails": "Detalii etichetă - {0}", diff --git a/src/NzbDrone.Core/Localization/Core/ru.json b/src/NzbDrone.Core/Localization/Core/ru.json index 02ed3c3fbf..de7c4e1382 100644 --- a/src/NzbDrone.Core/Localization/Core/ru.json +++ b/src/NzbDrone.Core/Localization/Core/ru.json @@ -853,7 +853,7 @@ "System": "Система", "Sunday": "Воскресенье", "SuggestTranslationChange": "Предложить изменение перевода", - "SubfolderWillBeCreatedAutomaticallyInterp": "Подпапка \"{0}\" будет создана автоматически", + "AddNewMovieRootFolderHelpText": "Подпапка \"{0}\" будет создана автоматически", "Style": "Стиль", "Studio": "Студия", "Status": "Статус", diff --git a/src/NzbDrone.Core/Localization/Core/sk.json b/src/NzbDrone.Core/Localization/Core/sk.json index f2239b3a68..02f639dc16 100644 --- a/src/NzbDrone.Core/Localization/Core/sk.json +++ b/src/NzbDrone.Core/Localization/Core/sk.json @@ -277,7 +277,7 @@ "DeleteQualityProfileMessageText": "Naozaj chcete zmazať tento profil oneskorenia?", "DeleteReleaseProfileMessageText": "Naozaj chcete zmazať tento profil oneskorenia?", "EditIndexerImplementation": "Pridať Indexer - {implementationName}", - "SubfolderWillBeCreatedAutomaticallyInterp": "'{folder}' podpriečinok sa vytvorí automaticky", + "AddNewMovieRootFolderHelpText": "'{folder}' podpriečinok sa vytvorí automaticky", "DeleteFormatMessageText": "Naozaj chcete zmazať značku formátu {0} ?", "DownloadClientSettingsRecentPriority": "Priorita klienta", "EditReleaseProfile": "Pridať profil vydania", diff --git a/src/NzbDrone.Core/Localization/Core/sv.json b/src/NzbDrone.Core/Localization/Core/sv.json index 9f6ebdb871..34717f52d3 100644 --- a/src/NzbDrone.Core/Localization/Core/sv.json +++ b/src/NzbDrone.Core/Localization/Core/sv.json @@ -888,7 +888,7 @@ "SslCertPath": "SSL-certifierad sökväg", "SslPort": "SSL-port", "StandardMovieFormat": "Standardfilmformat", - "SubfolderWillBeCreatedAutomaticallyInterp": "Undermappen \"{0}\" skapas automatiskt", + "AddNewMovieRootFolderHelpText": "Undermappen \"{0}\" skapas automatiskt", "TagDetails": "Taggdetaljer - {0}", "TagIsNotUsedAndCanBeDeleted": "Taggen används inte och kan raderas", "ICalTagsMoviesHelpText": "Gäller filmer med minst en matchande tagg", diff --git a/src/NzbDrone.Core/Localization/Core/th.json b/src/NzbDrone.Core/Localization/Core/th.json index 1707ea5ad3..04d95a3aac 100644 --- a/src/NzbDrone.Core/Localization/Core/th.json +++ b/src/NzbDrone.Core/Localization/Core/th.json @@ -855,7 +855,7 @@ "Status": "สถานะ", "Studio": "สตูดิโอ", "Style": "สไตล์", - "SubfolderWillBeCreatedAutomaticallyInterp": "โฟลเดอร์ย่อย \"{0}\" จะถูกสร้างขึ้นโดยอัตโนมัติ", + "AddNewMovieRootFolderHelpText": "โฟลเดอร์ย่อย \"{0}\" จะถูกสร้างขึ้นโดยอัตโนมัติ", "Sunday": "วันอาทิตย์", "TableOptions": "ตัวเลือกตาราง", "TagDetails": "รายละเอียดแท็ก - {0}", diff --git a/src/NzbDrone.Core/Localization/Core/tr.json b/src/NzbDrone.Core/Localization/Core/tr.json index 9e8dd95ac0..254391b7a4 100644 --- a/src/NzbDrone.Core/Localization/Core/tr.json +++ b/src/NzbDrone.Core/Localization/Core/tr.json @@ -287,7 +287,7 @@ "StandardMovieFormat": "Standart Film Formatı", "StartImport": "İçe Aktarmayı Başlat", "StartSearchForMissingMovie": "Kayıp filmi aramaya başlayın", - "SubfolderWillBeCreatedAutomaticallyInterp": "'{0}' alt klasörü otomatik olarak oluşturulacak", + "AddNewMovieRootFolderHelpText": "'{0}' alt klasörü otomatik olarak oluşturulacak", "Sunday": "Pazar", "Table": "Tablo", "TableOptions": "Tablo Seçenekleri", diff --git a/src/NzbDrone.Core/Localization/Core/uk.json b/src/NzbDrone.Core/Localization/Core/uk.json index d01cfddf15..3da02cf7b7 100644 --- a/src/NzbDrone.Core/Localization/Core/uk.json +++ b/src/NzbDrone.Core/Localization/Core/uk.json @@ -848,7 +848,7 @@ "Status": "Статус", "Studio": "Студія", "Style": "Стиль", - "SubfolderWillBeCreatedAutomaticallyInterp": "Вкладена папка \"{0}\" буде створена автоматично", + "AddNewMovieRootFolderHelpText": "Вкладена папка \"{0}\" буде створена автоматично", "SuggestTranslationChange": "Запропонуйте зміну перекладу", "SystemTimeHealthCheckMessage": "Системний час вимкнено більш ніж на 1 день. Заплановані завдання можуть не працювати належним чином, доки час не буде виправлено", "Table": "Таблиця", diff --git a/src/NzbDrone.Core/Localization/Core/vi.json b/src/NzbDrone.Core/Localization/Core/vi.json index c397f8cc89..bab1873c4f 100644 --- a/src/NzbDrone.Core/Localization/Core/vi.json +++ b/src/NzbDrone.Core/Localization/Core/vi.json @@ -868,7 +868,7 @@ "StartImport": "Bắt đầu nhập", "Status": "Trạng thái", "Style": "Phong cách", - "SubfolderWillBeCreatedAutomaticallyInterp": "Thư mục con '{0}' sẽ được tạo tự động", + "AddNewMovieRootFolderHelpText": "Thư mục con '{0}' sẽ được tạo tự động", "Sunday": "chủ nhật", "Table": "Bàn", "TableOptions": "Tùy chọn bảng", diff --git a/src/NzbDrone.Core/Localization/Core/zh_CN.json b/src/NzbDrone.Core/Localization/Core/zh_CN.json index faeeb917ec..c53921bc5c 100644 --- a/src/NzbDrone.Core/Localization/Core/zh_CN.json +++ b/src/NzbDrone.Core/Localization/Core/zh_CN.json @@ -726,7 +726,7 @@ "UpdateCheckUINotWritableMessage": "无法安装更新,因为用户 “{userName}” 对 UI 文件夹 “{uiFolder}” 无写入权限。", "ShowMonitoredHelpText": "在海报下显示追踪状态", "PosterSize": "海报大小", - "SubfolderWillBeCreatedAutomaticallyInterp": "“{0}” 子文件夹将自动创建", + "AddNewMovieRootFolderHelpText": "“{0}” 子文件夹将自动创建", "Queued": "队列中", "WhatsNew": "什么是新的?", "ReleaseGroup": "发布组",