cU<0dU cU=PdUPAPdU`A cU<0dUp cU`=PdUPPAPdU@`A cU<0dU cU; cU=PdUPAcUP<;fUPP2dU`tdUptdUt cU<0dUP@cU@>h@P([>8@0Y;[>'@н@cp^U@xP@@@hY;[>(H@8@Ps[>hA@B[>p^=[>B[>B[> 9@88@y=[>\@J<[>\@;[>^@B[>N[>=[>F@2[>G[>८@8@8/[>b;[>F@؉=[>I[>८@xU@=[>@b;[>F@1[>e[>८@xU@s[>b;[>F@ ([>=\>८@xU@([>b;[>F@p([>@L[>८@xU@ )[>c;[>F@8([>@K[>८@xU@)[>G;[>^@U@1[> B[>@@८@@Y;[>)[>@c;[>`-U]>@T@]>GGTT(]>8]>@>GT ]>]>]>]>@>@HH]>@>X9]>H@>P1]>J@e]>JJ]>J]>]>J> ]>]>U@>8]>K@> ^>KK]>K]>h]>JU8]>]>UU@>9]>MH]>]>H]>]>@U@SS8]>SU@]>X]> USP]>`]>@>0@TT]>T>@>0@VT]>]>@>@WW]>@Vn@WW@]>W>]>h]>]>V@Vસ@XX]>@V`9]>Y@>n@YY]>@^9]>YY]>]>Y]>]>Y>0]>]>H]>0]>@> G]>Z@^n@ZZ]>@1`#]>ZZ]>]>Z]>x]>@>T3]>[@>I3]>[@>#]>]@>?]>]]>H]>%]>YY]0]>`]>]Y]>]>]>@_@>n@^^]>@> #]>^^]>]>[]>]>[0]>]>@Y -]>`@>`9]>a@an@aa]>@Z <]>aa]>]>a]>x]>actory = $container->get(ServicesAbstract::POST_TYPE_DEFAULT_DATA_MODEL_FACTORY); $defaultDataModel = $defaultDataModelFactory->create($postType); $debug = $container->get(ServicesAbstract::DEBUG); $taxonomyPluralName = ''; if (! empty($postTypeDefaultConfig['taxonomy'])) { $taxonomy = get_taxonomy($postTypeDefaultConfig['taxonomy']); if (! is_wp_error($taxonomy) && ! empty($taxonomy)) { $taxonomyPluralName = $taxonomy->label; } } if (empty($taxonomyPluralName)) { $taxonomyPluralName = __('Taxonomy', 'post-expirator'); } $taxonomyTerms = []; if (! empty($postTypeDefaultConfig['taxonomy'])) { $taxonomyTerms = get_terms([ 'taxonomy' => $postTypeDefaultConfig['taxonomy'], 'hide_empty' => false, ]); } try { $defaultExpirationDate = $defaultDataModel->getActionDateParts(); } catch (Throwable $e) { $now = time(); $gmDate = gmdate('Y-m-d H:i:s', $now); $calculatedDate = $now; $defaultExpirationDate = [ 'year' => date('Y', $now), 'month' => date('m', $now), 'day' => date('d', $now), 'hour' => date('H', $now), 'minute' => date('i', $now), 'ts' => $calculatedDate, 'iso' => $gmDate ]; } $nonce = wp_create_nonce('__future_action'); $metaboxTitle = $settingsFacade->getMetaboxTitle() ?? __('Future Actions', 'post-expirator'); $metaboxCheckboxLabel = $settingsFacade->getMetaboxCheckboxLabel() ?? __('Enable Future Action', 'post-expirator'); wp_localize_script( 'postexpirator-bulk-edit', 'publishpressFutureBulkEditConfig', [ 'postTypeDefaultConfig' => $postTypeDefaultConfig, 'defaultDate' => $defaultExpirationDate['iso'], 'is12Hour' => get_option('time_format') !== 'H:i', 'timeFormat' => $settingsFacade->getTimeFormatForDatePicker(), 'startOfWeek' => get_option('start_of_week', 0), 'actionsSelectOptions' => $actionsModel->getActionsAsOptions($postType), 'statusesSelectOptions' => $actionsModel->getStatusesAsOptionsForPostType($postType), 'isDebugEnabled' => $debug->isEnabled(), 'taxonomyName' => $taxonomyPluralName, 'taxonomyTerms' => $taxonomyTerms, 'postType' => $currentScreen->post_type, 'isNewPost' => false, 'nonce' => $nonce, 'hideCalendarByDefault' => $settingsFacade->getHideCalendarByDefault(), 'strings' => [ 'category' => __('Categories', 'post-expirator'), 'panelTitle' => $metaboxTitle, 'enablePostExpiration' => $metaboxCheckboxLabel, 'action' => __('Action', 'post-expirator'), 'showCalendar' => __('Show Calendar', 'post-expirator'), 'hideCalendar' => __('Hide Calendar', 'post-expirator'), 'loading' => __('Loading', 'post-expirator'), // translators: the text between {{}} is the link to the settings page. 'timezoneSettingsHelp' => __( 'Timezone is controlled by the {WordPress Settings}.', 'post-expirator' ), // translators: %s is the name of the taxonomy in plural form. 'noTermsFound' => sprintf( // translators: %s is the name of the taxonomy in plural form. __('No %s found.', 'post-expirator'), strtolower($taxonomyPluralName) ), 'futureActionUpdate' => __('Future Action Update', 'post-expirator'), 'noTaxonomyFound' => __( 'You must assign a taxonomy to this post type to use this feature.', 'post-expirator' ), 'noChange' => __('— No Change —', 'post-expirator'), 'changeAdd' => __('Add or update action for posts', 'post-expirator'), 'addOnly' => __('Add action if none exists for posts', 'post-expirator'), 'changeOnly' => __('Update the existing actions for posts', 'post-expirator'), 'removeOnly' => __('Remove action from posts', 'post-expirator'), // translators: %s is the name of the taxonomy in plural form. 'newTerms' => __('New %s', 'post-expirator'), // translators: %s is the name of the taxonomy in plural form. 'removeTerms' => __('%s to remove', 'post-expirator'), // translators: %s is the name of the taxonomy in plural form. 'addTerms' => __('%s to add', 'post-expirator'), // translators: %s is the name of the taxonomy in singular form. 'addTermsPlaceholder' => sprintf( __('Search for %s', 'post-expirator'), strtolower($taxonomyPluralName) ), 'errorActionRequired' => __('Select an action', 'post-expirator'), 'errorDateRequired' => __('Select a date', 'post-expirator'), 'errorDateInPast' => __('Date cannot be in the past', 'post-expirator'), 'errorTermsRequired' => sprintf( // translators: %s is the name of the taxonomy in singular form. __('Please select one or more %s', 'post-expirator'), strtolower($taxonomyPluralName) ), 'newStatus' => __('New status', 'post-expirator'), ] ] ); } public function registerBulkEditCustomBox($columnName, $postType) { try { $facade = PostExpirator_Facade::getInstance(); if ( ($columnName !== 'expirationdate') || (! $facade->current_user_can_expire_posts()) ) { return; } // TODO: Use DI here. $container = Container::getInstance(); $settingsFacade = $container->get(ServicesAbstract::SETTINGS); $defaults = $settingsFacade->getPostTypeDefaults($postType); $taxonomy = isset($defaults['taxonomy']) ? $defaults['taxonomy'] : ''; $label = ''; // if settings have not been configured and this is the default post type if (empty($taxonomy) && 'post' === $postType) { $taxonomy = 'category'; } if (! empty($taxonomy)) { $tax_object = get_taxonomy($taxonomy); $label = $tax_object ? $tax_object->label : ''; } PostExpirator_Display::getInstance()->render_template('bulk-edit', array( 'post_type' => $postType, 'taxonomy' => $taxonomy, 'tax_label' => $label )); } catch (Throwable $th) { $this->logger->error('Error registering bulk edit custom box: ' . $th->getMessage()); } } public function processBulkEditUpdate() { try { // phpcs:disable WordPress.Security.NonceVerification.Recommended, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $doAction = isset($_GET['action']) ? $this->sanitization->sanitizeKey($_GET['action']) : ''; if ( ('edit' !== $doAction) || (! isset($_REQUEST['future_action_bulk_view'])) || ($_REQUEST['future_action_bulk_view'] !== 'bulk-edit') || (! isset($_REQUEST['future_action_bulk_change_action'])) || ($this->sanitization->sanitizeKey($_REQUEST['future_action_bulk_change_action']) === 'no-change') ) { return; } if (! $this->currentUserModel->userCanExpirePosts()) { return; } $this->request->checkAdminReferer('bulk-posts'); $this->saveBulkEditData(); // phpcs:enable } catch (Throwable $th) { $this->logger->error('Error processing bulk edit update: ' . $th->getMessage()); } } private function updateScheduleForPostFromBulkEditData(ExpirablePostModel $postModel) { // phpcs:disable WordPress.Security.NonceVerification.Recommended // phpcs:disable WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $expireType = isset($_REQUEST['future_action_bulk_action']) ? $this->sanitization->sanitizeTextField($_REQUEST['future_action_bulk_action']) : ''; $newStatus = isset($_REQUEST['future_action_bulk_new_status']) ? $this->sanitization->sanitizeTextField($_REQUEST['future_action_bulk_new_status']) : 'draft'; if ($expireType === ExpirationActionsAbstract::POST_STATUS_TO_DRAFT) { $expireType = ExpirationActionsAbstract::CHANGE_POST_STATUS; $newStatus = 'draft'; } if ($expireType === ExpirationActionsAbstract::POST_STATUS_TO_PRIVATE) { $expireType = ExpirationActionsAbstract::CHANGE_POST_STATUS; $newStatus = 'private'; } if ($expireType === ExpirationActionsAbstract::POST_STATUS_TO_TRASH) { $expireType = ExpirationActionsAbstract::CHANGE_POST_STATUS; $newStatus = 'trash'; } $opts = [ 'expireType' => $expireType, 'newStatus' => $newStatus, 'category' => isset($_REQUEST['future_action_bulk_terms']) ? $this->sanitization->sanitizeTextField($_REQUEST['future_action_bulk_terms']) : '', 'categoryTaxonomy' => isset($_REQUEST['future_action_bulk_taxonomy']) ? $this->sanitization->sanitizeTextField($_REQUEST['future_action_bulk_taxonomy']) : '', ]; if (! empty($opts['category'])) { // TODO: Use DI here. $taxonomiesModelFactory = Container::getInstance()->get(ServicesAbstract::TAXONOMIES_MODEL_FACTORY); $taxonomiesModel = $taxonomiesModelFactory(); $opts['category'] = $taxonomiesModel->normalizeTermsCreatingIfNecessary( $opts['categoryTaxonomy'], explode(',', $opts['category']) ); } if (empty($opts['categoryTaxonomy'])) { $opts['category'] = []; } $date = isset($_REQUEST['future_action_bulk_date']) ? sanitize_text_field($_REQUEST['future_action_bulk_date']) : '0'; $date = strtotime($date); $this->hooks->doAction( HooksAbstract::ACTION_SCHEDULE_POST_EXPIRATION, $postModel->getPostId(), $date, $opts ); // phpcs:enable } private function changeStrategyChangeOnly(ExpirablePostModel $postModel) { if ($postModel->isExpirationEnabled()) { $this->updateScheduleForPostFromBulkEditData($postModel); } } private function changeStrategyAddOnly(ExpirablePostModel $postModel) { if (! $postModel->isExpirationEnabled()) { $this->updateScheduleForPostFromBulkEditData($postModel); } } private function changeStrategyChangeAdd(ExpirablePostModel $postModel) { $this->updateScheduleForPostFromBulkEditData($postModel); } private function changeStrategyRemoveOnly(ExpirablePostModel $postModel) { if ($postModel->isExpirationEnabled()) { $this->hooks->doAction(HooksAbstract::ACTION_UNSCHEDULE_POST_EXPIRATION, $postModel->getPostId()); } } private function saveBulkEditData() { // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.InputNotValidated $changeStrategy = $this->sanitization->sanitizeKey($_REQUEST['future_action_bulk_change_action']); $validStrategies = ['change-only', 'add-only', 'change-add', 'remove-only']; if (! in_array($changeStrategy, $validStrategies)) { return; } // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotValidated, WordPress.Security.NonceVerification.Recommended $postIds = array_map('intval', (array)$_REQUEST['post']); if (empty($postIds)) { return; } $postModelFactory = $this->expirablePostModelFactory; foreach ($postIds as $postId) { $postId = (int)$postId; $postModel = $postModelFactory($postId); if (empty($postModel)) { continue; } switch ($changeStrategy) { case 'change-only': $this->changeStrategyChangeOnly($postModel); break; case 'add-only': $this->changeStrategyAddOnly($postModel); break; case 'change-add': $this->changeStrategyChangeAdd($postModel); break; case 'remove-only': $this->changeStrategyRemoveOnly($postModel); break; } } } } 1.0Jobcenter Kielhttps://www.jobcenter-kiel.de/en/cisachsenhttps://www.jobcenter-kiel.de/en/author/cisachsen/Fachassistenz-Leistungsgewährung - Jobcenter Kielrich600338<blockquote class="wp-embedded-content" data-secret="3jVJltp1Vw"><a href="https://www.jobcenter-kiel.de/en/karriere-unterseite-fachassistenz-leistungsgewaehrung-2/">Fachassistenz-Leistungsgewährung</a></blockquote><iframe sandbox="allow-scripts" security="restricted" src="https://www.jobcenter-kiel.de/en/karriere-unterseite-fachassistenz-leistungsgewaehrung-2/embed/#?secret=3jVJltp1Vw" width="600" height="338" title="“Fachassistenz-Leistungsgewährung” — Jobcenter Kiel" data-secret="3jVJltp1Vw" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" class="wp-embedded-content"></iframe><script type="text/javascript"> /* <![CDATA[ */ /*! This file is auto-generated */ !function(d,l){"use strict";l.querySelector&&d.addEventListener&&"undefined"!=typeof URL&&(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&&!/[^a-zA-Z0-9]/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret="'+t.secret+'"]'),o=l.querySelectorAll('blockquote[data-secret="'+t.secret+'"]'),c=new RegExp("^https?:$","i"),i=0;i<o.length;i++)o[i].style.display="none";for(i=0;i<a.length;i++)s=a[i],e.source===s.contentWindow&&(s.removeAttribute("style"),"height"===t.message?(1e3<(r=parseInt(t.value,10))?r=1e3:~~r<200&&(r=200),s.height=r):"link"===t.message&&(r=new URL(s.getAttribute("src")),n=new URL(t.value),c.test(n.protocol))&&n.host===r.host&&l.activeElement===s&&(d.top.location.href=t.value))}},d.addEventListener("message",d.wp.receiveEmbedMessage,!1),l.addEventListener("DOMContentLoaded",function(){for(var e,t,s=l.querySelectorAll("iframe.wp-embedded-content"),r=0;r<s.length;r++)(t=(e=s[r]).getAttribute("data-secret"))||(t=Math.random().toString(36).substring(2,12),e.src+="#?secret="+t,e.setAttribute("data-secret",t)),e.contentWindow.postMessage({message:"ready",secret:t},"*")},!1)))}(window,document); /* ]]> */ </script> Das Jobcenter Kiel ist eine gemeinsame Einrichtung der Landeshauptstadt Kiel und der Agentur für Arbeit Kiel. Wir sind eine eigenständige Körperschaft des öffentlichen Rechts sui generis.