Update Docker configuration and plugin versions
- Upgrade MariaDB from 10.6 to 11 with auto-upgrade support
- Add WordPress debug environment variable to FPM container
- Update PHP-FPM Dockerfile base image
- Update Include Mastodon Feed plugin with bug fixes and improvements
- Update Portfolio plugin (v2.58) with latest translations and demo data enhancements
- Remove old README.md from Mastodon Feed plugin
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
--- a/docker-compose.yml Fri Sep 05 18:52:52 2025 +0200
+++ b/docker-compose.yml Mon Sep 08 19:44:41 2025 +0200
@@ -2,7 +2,7 @@
services:
db:
# We use a mariadb image which supports both amd64 & arm64 architecture
- image: mariadb:10.6
+ image: mariadb:11
# If you really want to use MySQL, uncomment the following line
#image: mysql:8.0.27
command: '--default-authentication-plugin=mysql_native_password'
@@ -10,6 +10,7 @@
- db_data:/var/lib/mysql
restart: unless-stopped
environment:
+ - MARIADB_AUTO_UPGRADE=1
- MYSQL_ROOT_PASSWORD=iri
- MYSQL_DATABASE=wordpress_ec
- MYSQL_USER=iri
@@ -28,6 +29,7 @@
- WORDPRESS_DB_USER=iri
- WORDPRESS_DB_PASSWORD=iri
- WORDPRESS_DB_NAME=wordpress_ec
+ - WORDPRESS_DEBUG=1
wpcli:
image: wordpress:cli
--- a/fpm.Dockerfile Fri Sep 05 18:52:52 2025 +0200
+++ b/fpm.Dockerfile Mon Sep 08 19:44:41 2025 +0200
@@ -1,4 +1,4 @@
-FROM php:7.4-fpm-alpine
+FROM php:fpm-alpine
RUN mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini"
ADD zz-zdocker.conf /usr/local/etc/php-fpm.d/
--- a/wp/wp-content/plugins/include-mastodon-feed/LICENSE Fri Sep 05 18:52:52 2025 +0200
+++ b/wp/wp-content/plugins/include-mastodon-feed/LICENSE Mon Sep 08 19:44:41 2025 +0200
@@ -7,7 +7,7 @@
https://directory.fsf.org/wiki/License:Expat
-Copyright 2022 wolfgang.lol
+Copyright 2024 wolfgang.lol
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
--- a/wp/wp-content/plugins/include-mastodon-feed/README.md Fri Sep 05 18:52:52 2025 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-# Include Mastodon Feed Wordpress Plugin
-
-Plugin that provides an `[include-mastodon-feed]` shortcode to easily integrate mastodon feeds into wordpress pages. Supports personal and tag feeds.
-
-The plugin is written in PHP and generates native JavaScript to fetch and render the mastodon feed. No special libraries needed.
-
-## Table of contents
-* [Usage](#usage)
- * [Supported shortcode attributes](#supported-shortcode-attributes)
- * [Additional customization](#additional-customizations)
-* [Installation](#installation)
- * [Installation via ZIP file](#installation-via-zip-file)
- * [Installation via git checkout](#installation-via-git-checkout)
-* [Known issues](#known-issues)
- * [Todo](#todo)
-* [FAQ](#faq)
- * [How do I find my account ID?](#how-do-i-find-my-account-id)
- * [Can I modify the plugin?](#can-i-modify-the-plugin)
-
-## Usage
-
-Place the following shortcode right into the page. Either as shortcode block or just copy and paste right within a text block:
-
-```[include-mastodon-feed instance="YOUR-INSTANCE" account="YOUR-ACCOUNT-ID"]```
-
-### Supported shortcode attributes
-
- | Attribute | Default value | Example | Description |
-| ------------------- | ----------------------------- | ------------------------- | ----------------------------------------------------------------- |
-| **account** | | id="012345678910" | (required attribute) Your account ID ([a long number](#how-do-i-find-my-account-id)) |
-| tag | | tag="travel" | use **tag** instead of **account** if you want to embed a tag feed instead of a personal feed |
-| **instance** | | instance="example.org" | (required attribute) Domain name of the instance without https:// |
-| limit | 20 | limit="10" | Maximum number of statuses |
-| excludeBoosts | false | excludeBoosts="true" | Exclude boosted statuses |
-| excludeReplies | false | excludeReplies="true" | Exclude replies to other accounts |
-| excludeConversationStarters | false | excludeConversationStarters="true" | Exclude statuses that start with a user mention |
-| onlyPinned | false | onlyPinned="true" | Show only pinned statuses |
-| onlyMedia | false | onlyMedia="true" | Show only statuses containing media |
-| preserveImageAspectRatio | false | preserveImageAspectRatio="true" | Preserve image aspect ratio |
-| tagged | false | tagged="tagname" | Show only statuses that are tagged with given tag name (no #!) |
-| linkTarget | "_self" | linkTarget="_blank" | Target for all links |
-| showPreviewCards | true | showPreviewCards="false" | Show preview cards |
-| hideStatusMeta | false | hideStatusMeta="true" | Hide status meta information (automatically also hides date and time) |
-| hideDateTime | false | hideDateTime="true" | Hide date and time from status meta information |
-| darkmode | false | darkmode="true" | Enable dark mode |
-| text-loading | "Loading Mastodon feed..." | text-loading="Loading ⏳" | Loading text |
-| text-noStatuses | "No statuses available" | text-noStatuses="💩" | Text if no statuses are available |
-| text-boosted | "boosted 🚀" | text-boosted="🚀" | Boosted status indicator text |
-| text-viewOnInstance | "view on instance" | text-viewOnInstance="🔗" | View status on instance link text |
-| text-showContent | "Show content" | text-showContent="👀" | Text for content warning buttons |
-| text-permalinkPre | "on" | text-showContent="📅" | Text before post permalink (date & time) |
-| text-permalinkPost | "" | text-showContent="📅" | Text after post permalink (date & time) |
-| text-edited | "(edited)" | text-showContent="✏" | Text indicating edited posts |
-| date-locale | "en-US" | date-locale="de-DE" | Locale for date string, used in toLocaleString() |
-| date-options | "{}" | date-options="{dateStyle: 'short', timeStyle: 'long'}" | Format options directly fed into toLocaleString() |
-
-### Additional customizations
-
-You can define several plugin constants to set custom default options that will be applied site-wide.
-
-1. Open your `wp-config.php` file
-2. Search for the line `/* Add any custom values between this line and the "stop editing" line. */`
-3. Define the options you want to override between this line and `/* That's all, stop editing! Happy publishing. */`
-
-See [config-example.php](config-example.php) for a full list of supported settings.
-
-## Installation
-
-The plugin is available through the official Wordpress plugin directory https://wordpress.org/plugins/include-mastodon-feed/
-
-1. Log into your Wordpress installation
-2. Go to "Plugins" and select "Add New"
-3. Search for "Include Mastodon Feed"
-4. Hit the "Install" button
-5. After installation hit the "Activate" button
-
-### Installation via ZIP file
-
-1. Click on the `<>Code` in the top right of this page
-2. Select `Download ZIP`
-3. Create a `include-mastodon-feed` folder in your Wordpress plugins directory
-4. Unpack all the files from the ZIP there (files only, no sub-directory)
-5. Enable plugin in Wordpress
-6. Use shortcode
-
-### Installation via git checkout
-
-If you are familiar with Github you can clone the repository right into your Wordpress plugins folder
-
-1. SSH into your webserver
-2. `cd /path/to/wordpress/wp-content/plugins`
-3. `git clone https://github.com/wolfgang101/include-mastodon-feed.git`
-4. Enable plugin in Wordpress
-5. Use shortcode
-
-## Known issues
-
-### Todo
-
-* improve support for video and audio media attachment types
-* integrate i18n into translate.wordpress.org instead of text constants
-* re-build plugin as custom gutenberg block
-
-## FAQ
-
-### How do I find my account ID?
-As an instance admin you can easily read your user ID in the admin backend. As regular user you can try an API v2 search to find your ID
-
-Use the following URL to get your ID:
-
-```https://example.org/api/v2/search?q=username@example.org&resolve=true&limit=5```
-
-* Change `example.org` to your instance
-* Replace `username` with your handle.
-* Open the URL in your webbrowser
-
-**Note:** You must be logged in to do that
-
-### Can I modify the plugin?
-The plugin is released unter the [Expat License](LICENSE) which is very permissive. Knock youself out!
\ No newline at end of file
--- a/wp/wp-content/plugins/include-mastodon-feed/config-example.php Fri Sep 05 18:52:52 2025 +0200
+++ b/wp/wp-content/plugins/include-mastodon-feed/config-example.php Mon Sep 08 19:44:41 2025 +0200
@@ -19,7 +19,7 @@
// set a default instance
// can still be overriden in shortcode
// plugin will show a warning if no default is set and instance is omitted in shortcode
- //define('INCLUDE_MASTODON_FEED_DEFAULT_INSTANCE', 'example.org');
+ define('INCLUDE_MASTODON_FEED_DEFAULT_INSTANCE', 'example.org');
// Maximum number of statuses
define('INCLUDE_MASTODON_FEED_LIMIT', 20);
@@ -43,6 +43,12 @@
// can be overridden in shortcode
define('INCLUDE_MASTODON_FEED_PRESERVE_IMAGE_ASPECT_RATIO', true);
+ // load small sized preview images or full size high quality images
+ define( 'INCLUDE_MASTODON_FEED_IMAGE_SIZE', 'preview' );
+
+ // link image to status or image
+ define( 'INCLUDE_MASTODON_FEED_IMAGE_LINK', 'status' );
+
// only tagged statuses
// tag name without leading #, case insensitive
define('INCLUDE_MASTODON_FEED_TAGGED', 'tagname');
--- a/wp/wp-content/plugins/include-mastodon-feed/plugin.php Fri Sep 05 18:52:52 2025 +0200
+++ b/wp/wp-content/plugins/include-mastodon-feed/plugin.php Mon Sep 08 19:44:41 2025 +0200
@@ -3,9 +3,11 @@
Plugin Name: Include Mastodon Feed
Plugin URI: https://wolfgang.lol/code/include-mastodon-feed-wordpress-plugin
Description: Plugin providing [include-mastodon-feed] shortcode
- Version: 1.9.4
+ Version: 1.13.1
Author: wolfgang.lol
Author URI: https://wolfgang.lol
+ License: MIT
+ License URI: https://directory.fsf.org/wiki/License:Expat
*/
namespace IncludeMastodonFeedPlugin;
@@ -49,6 +51,14 @@
'value' => false,
],
[
+ 'key' => 'INCLUDE_MASTODON_FEED_IMAGE_SIZE',
+ 'value' => 'preview',
+ ],
+ [
+ 'key' => 'INCLUDE_MASTODON_FEED_IMAGE_LINK',
+ 'value' => 'status',
+ ],
+ [
'key' => 'INCLUDE_MASTODON_FEED_TAGGED',
'value' => false,
],
@@ -76,7 +86,7 @@
],
[
'key' => 'INCLUDE_MASTODON_FEED_STYLE_ACCENT_COLOR',
- 'value' => 'rgb(99, 100, 255)',
+ 'value' => 'rgb(86, 58, 204)',
],
[
'key' => 'INCLUDE_MASTODON_FEED_STYLE_ACCENT_FONT_COLOR',
@@ -101,7 +111,7 @@
],
[
'key' => 'INCLUDE_MASTODON_FEED_TEXT_NO_STATUSES',
- 'value' => 'No statuses availablae',
+ 'value' => 'No statuses available',
],
[
'key' => 'INCLUDE_MASTODON_FEED_TEXT_BOOSTED',
@@ -149,7 +159,6 @@
function init_styles() {
- ob_start();
?>
<style>
:root {
@@ -160,7 +169,12 @@
--include-mastodon-feed-border-radius: <?php echo filter_var( INCLUDE_MASTODON_FEED_STYLE_BORDER_RADIUS, FILTER_UNSAFE_RAW ); ?>;
}
+ .include-mastodon-feed-wrapper .include-mastodon-feed {
+ list-style: none;
+ padding-left: 0;
+ }
.include-mastodon-feed .status {
+ display: block;
margin: 0.5rem 0 1.5rem;
border-radius: var(--include-mastodon-feed-border-radius);
padding: 0.5rem;
@@ -175,6 +189,7 @@
text-decoration: underline;
}
.include-mastodon-feed .avatar {
+ display: inline-block;
height: 1.25rem;
border-radius: var(--include-mastodon-feed-border-radius);
vertical-align: top;
@@ -225,13 +240,16 @@
}
.include-mastodon-feed .media {
display: flex;
+ list-style: none;
+ padding: 0;
justify-content: space-around;
align-items: center;
flex-wrap: wrap;
gap: 0.5rem;
margin: 1rem;
}
- .include-mastodon-feed .media > div {
+ .include-mastodon-feed .media > * {
+ display: block;
flex-basis: calc(50% - 0.5rem);
flex-grow: 1;
}
@@ -303,12 +321,10 @@
}
</style>
<?php
- echo ob_get_clean();
}
add_action('wp_head', __NAMESPACE__ . '\init_styles', 7);
function init_scripts() {
- ob_start();
?>
<script>
@@ -323,9 +339,12 @@
const mastodonFeedCreateElementAccountLink = function(account) {
let accountLinkElem = mastodonFeedCreateElement('a');
accountLinkElem.href = account.url;
+ accountLinkElem.setAttribute('aria-label', 'Link to Mastodon account of ' + account.display_name);
let accountImageElem = mastodonFeedCreateElement('img', 'avatar');
accountImageElem.src = account.avatar_static;
+ accountImageElem.loading = 'lazy';
+ accountImageElem.alt = 'Mastodon avatar image of ' + account.display_name;
accountLinkElem.addEventListener('mouseover', (event) => {
accountLinkElem.querySelector('.avatar').src = account.avatar;
@@ -346,41 +365,46 @@
return accountLinkElem;
}
- const mastodonFeedCreateElementPermalink = function(status, label) {
+ const mastodonFeedCreateElementPermalink = function(status, label, ariaLabel) {
let linkElem = mastodonFeedCreateElement('a');
linkElem.href = status.url;
linkElem.appendChild(document.createTextNode(label));
+ linkElem.setAttribute('aria-label', ariaLabel);
return linkElem;
}
const mastodonFeedCreateElementMediaAttachments = function(status, options) {
let attachments = status.media_attachments;
- let mediaWrapperElem = mastodonFeedCreateElement('div', 'media');
+ let mediaWrapperElem = mastodonFeedCreateElement('ol', 'media');
for(let mediaIndex = 0; mediaIndex < attachments.length; mediaIndex++) {
let media = attachments[mediaIndex];
- let mediaElem = mastodonFeedCreateElement('div', media.type);
+ let mediaElem = mastodonFeedCreateElement('li', media.type);
if('image' == media.type) {
let mediaElemImgLink = mastodonFeedCreateElement('a');
+ let imageUrl = media.url;
+ if('full' !== options.images.size && null !== media.preview_url) {
+ imageUrl = media.preview_url;
+ }
mediaElemImgLink.href = status.url;
- if(null === media.remote_url) {
- mediaElemImgLink.style.backgroundImage = 'url("' + media.preview_url + '")';
+ if('image' === options.images.link) {
+ mediaElemImgLink.href = media.remote_url ?? media.url;
+ }
+ let mediaElemImgImage = mastodonFeedCreateElement('img');
+ mediaElemImgImage.src = imageUrl;
+ mediaElemImgImage.loading = 'lazy';
+ if(null === media.description) {
+ mediaElemImgImage.alt = 'Image attachment of Mastodon post';
}
else {
- mediaElemImgLink.style.backgroundImage = 'url("' + media.remote_url + '")';
- }
- if(null !== media.description) {
- mediaElem.title = media.description;
+ mediaElemImgImage.alt = media.description;
}
- if(options.preserveImageAspectRatio) {
- let mediaElemImgImage = mastodonFeedCreateElement('img');
- if(null === media.remote_url) {
- mediaElemImgImage.src = media.preview_url;
- }
- else {
- mediaElemImgImage.src = media.remote_url;
- }
- mediaElemImgLink.appendChild(mediaElemImgImage);
+ if(!options.images.preserveImageAspectRatio) {
+ mediaElemImgLink.style.backgroundImage = 'url("' + imageUrl + '")';
+ mediaElemImgImage.style.width = '100%';
+ mediaElemImgImage.style.height = '100%';
+ mediaElemImgImage.style.opacity = 0;
}
+ mediaElemImgLink.appendChild(mediaElemImgImage);
mediaElem.appendChild(mediaElemImgLink);
}
else if('gifv' == media.type) {
@@ -395,8 +419,11 @@
}
mediaElemGifv.loop = true;
mediaElemGifv.muted = 'muted';
- if(null !== media.description) {
- mediaElemGifv.title = media.description;
+ if(null === media.description) {
+ mediaElemGifv.alt = 'Video attachment of Mastodon post';
+ }
+ else {
+ mediaElemGifv.alt = media.description;
}
mediaElemGifvLink.appendChild(mediaElemGifv);
mediaElem.appendChild(mediaElemGifvLink);
@@ -414,7 +441,7 @@
// currently only image and gifv support implemented
mediaElem.innerHTML = 'Stripped ' + media.type + ' - only available on instance<br />';
let permalinkElem = mastodonFeedCreateElement('span', 'permalink');
- permalinkElem.appendChild(mastodonFeedCreateElementPermalink(status, options.text.viewOnInstance));
+ permalinkElem.appendChild(mastodonFeedCreateElementPermalink(status, options.text.viewOnInstance, 'Link to Mastodon post'));
mediaElem.appendChild(permalinkElem);
}
mediaWrapperElem.appendChild(mediaElem);
@@ -431,7 +458,14 @@
if(null !== card.image) {
let cardElemImageWrapper = mastodonFeedCreateElement('div', 'image');
let cardElemImage = mastodonFeedCreateElement('img');
+ if(null === card.image_description) {
+ cardElemImage.alt = 'Preview image content card';
+ }
+ else {
+ cardElemImage.alt = card.image_description;
+ }
cardElemImage.src = card.image;
+ cardElemImage.loading = 'lazy';
cardElemImageWrapper.appendChild(cardElemImage);
cardElemMeta.appendChild(cardElemImageWrapper);
}
@@ -450,6 +484,7 @@
else {
let cardElemLink = mastodonFeedCreateElement('a');
cardElemLink.href = card.url;
+ cardElemLink.setAttribute('aria-label', 'Link embedded in Mastodon post');
cardElemLink.appendChild(cardElemMeta);
cardElem.appendChild(cardElemLink);
}
@@ -467,7 +502,7 @@
createdInfo.innerHTML += new Date(status.created_at).toLocaleString(options.localization.date.locale, options.localization.date.options);
}
else {
- createdInfo.appendChild(mastodonFeedCreateElementPermalink(status, new Date(status.created_at).toLocaleString(options.localization.date.locale, options.localization.date.options)));
+ createdInfo.appendChild(mastodonFeedCreateElementPermalink(status, new Date(status.created_at).toLocaleString(options.localization.date.locale, options.localization.date.options), 'Link to Mastodon post'));
}
createdInfo.innerHTML += ' ' + options.text.permalinkPost;
return createdInfo;
@@ -479,7 +514,6 @@
const mastodonFeedRenderStatuses = function(statuses, rootElem, options) {
if(statuses.length < 1) {
- console.log(options);
rootElem.innerHTML = options.text.noStatuses;
}
else {
@@ -488,7 +522,7 @@
let isEdited = (null === status.edited_at ? true : false);
let isReblog = (null === status.reblog ? false : true);
- let statusElem = mastodonFeedCreateElement('div', 'status');
+ let statusElem = mastodonFeedCreateElement('li', 'status');
// add account meta info
if(!options.content.hideStatusMeta) {
@@ -539,6 +573,7 @@
let cwLinkElem = mastodonFeedCreateElement('a');
cwLinkElem.href = '#';
+ cwLinkElem.setAttribute('aria-label', 'Show content despite warning');
cwLinkElem.onclick = function() {
this.parentElement.style = 'display: none;';
this.parentElement.nextSibling.style = 'display: block;';
@@ -578,11 +613,11 @@
rootElem.appendChild(statusElem);
}
}
- if('_self' != options.linkTarget) {
- rootElem.querySelectorAll('a').forEach(function(e) {
+ rootElem.querySelectorAll('a').forEach(function(e) {
+ if('_self' != options.linkTarget) {
e.target = options.linkTarget;
- });
- }
+ }
+ });
}
const mastodonFeedLoad = function(url, elementId, options) {
@@ -594,11 +629,13 @@
const rootElem = document.getElementById(elementId);
rootElem.innerHTML = '';
<?php if(true === INCLUDE_MASTODON_FEED_DEBUG) : ?>
- console.log("<?php echo __NAMESPACE__; ?>", url);
+ console.log("<?php echo __NAMESPACE__; ?>", 'url', url);
+ console.log("<?php echo __NAMESPACE__; ?>", 'elementId', elementId);
+ console.log("<?php echo __NAMESPACE__; ?>", 'options', options);
<?php endif; ?>
if (xhr.status === 200) {
<?php if(true === INCLUDE_MASTODON_FEED_DEBUG) : ?>
- console.log("<?php echo __NAMESPACE__; ?>", xhr.response);
+ console.log("<?php echo __NAMESPACE__; ?>", 'response', xhr.response);
<?php endif; ?>
if(options.excludeConversationStarters && statuses.length > 0) {
const filteredStatuses = [];
@@ -625,7 +662,7 @@
}
else {
<?php if(true === INCLUDE_MASTODON_FEED_DEBUG) : ?>
- console.log("<?php echo __NAMESPACE__; ?>", xhr);
+ console.log("<?php echo __NAMESPACE__; ?>", 'response error', xhr);
<?php endif; ?>
rootElem.appendChild(document.createTextNode(xhr.response.error));
}
@@ -634,7 +671,6 @@
}
</script>
<?php
- echo ob_get_clean();
}
add_action('wp_footer', __NAMESPACE__ . '\init_scripts');
@@ -651,6 +687,8 @@
'onlypinned' => filter_var(esc_html(INCLUDE_MASTODON_FEED_ONLY_PINNED), FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE),
'onlymedia' => filter_var(esc_html(INCLUDE_MASTODON_FEED_ONLY_MEDIA), FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE),
'preserveimageaspectratio' => filter_var(esc_html(INCLUDE_MASTODON_FEED_PRESERVE_IMAGE_ASPECT_RATIO), FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE),
+ 'imagesize' => INCLUDE_MASTODON_FEED_IMAGE_SIZE,
+ 'imagelink' => INCLUDE_MASTODON_FEED_IMAGE_LINK,
'tagged' => INCLUDE_MASTODON_FEED_TAGGED,
'linktarget' => INCLUDE_MASTODON_FEED_LINKTARGET,
'showpreviewcards' => filter_var(esc_html(INCLUDE_MASTODON_FEED_SHOW_PREVIEWCARDS), FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE),
@@ -665,7 +703,6 @@
'text-permalinkpost' => INCLUDE_MASTODON_FEED_TEXT_PERMALINK_POST,
'text-edited' => INCLUDE_MASTODON_FEED_TEXT_EDITED,
'date-locale' => INCLUDE_MASTODON_FEED_DATE_LOCALE,
- 'date-options' => INCLUDE_MASTODON_FEED_DATE_OPTIONS,
'darkmode' => filter_var(esc_html(INCLUDE_MASTODON_FEED_DARKMODE), FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE),
), array_change_key_case($atts, CASE_LOWER)
);
@@ -713,37 +750,41 @@
<script>
window.addEventListener("load", () => {
mastodonFeedLoad(
- "<?php echo sanitize_url( $apiUrl, ['https'] ); ?>",
+ "<?php echo esc_url( $apiUrl, ['https'], 'apicall' ); ?>",
"<?php echo filter_var( $elemId, FILTER_UNSAFE_RAW ); ?>",
{
- linkTarget: "<?php echo filter_var( $atts['linktarget'], FILTER_UNSAFE_RAW ); ?>",
+ linkTarget: "<?php echo esc_js(filter_var( $atts['linktarget'], FILTER_UNSAFE_RAW )); ?>",
showPreviewCards: <?php echo (filter_var( $atts['showpreviewcards'], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) ? "true" : "false"); ?>,
excludeConversationStarters: <?php echo (filter_var( $atts['excludeconversationstarters'], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) ? "true" : "false"); ?>,
- preserveImageAspectRatio: <?php echo (filter_var( $atts['preserveimageaspectratio'], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) ? "true" : "false"); ?>,
content: {
hideStatusMeta: <?php echo (filter_var( $atts['hidestatusmeta'], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) ? "true" : "false"); ?>,
hideDateTime: <?php echo (filter_var( $atts['hidedatetime'], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) ? "true" : "false"); ?>
},
+ images: {
+ preserveImageAspectRatio: <?php echo (filter_var( $atts['preserveimageaspectratio'], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) ? "true" : "false"); ?>,
+ size: "<?php echo ( "full" === $atts['imagesize'] ? "full" : "preview" ); ?>",
+ link: "<?php echo ( "image" === $atts['imagelink'] ? "image" : "status" ); ?>",
+ },
text: {
- boosted: "<?php echo esc_js( $atts['text-boosted'] ); ?>",
+ boosted: "<?php echo esc_html( $atts['text-boosted'] ); ?>",
noStatuses: "<?php echo esc_html( $atts['text-nostatuses'] ); ?>",
viewOnInstance: "<?php echo esc_js( $atts['text-viewoninstance'] ); ?>",
- showContent: "<?php echo esc_js( $atts['text-showcontent'] ); ?>",
- permalinkPre: "<?php echo esc_js( $atts['text-permalinkpre'] ); ?>",
- permalinkPost: "<?php echo esc_js( $atts['text-permalinkpost'] ); ?>",
- edited: "<?php echo esc_js( $atts['text-edited'] ); ?>",
+ showContent: "<?php echo esc_html( $atts['text-showcontent'] ); ?>",
+ permalinkPre: "<?php echo esc_html( $atts['text-permalinkpre'] ); ?>",
+ permalinkPost: "<?php echo esc_html( $atts['text-permalinkpost'] ); ?>",
+ edited: "<?php echo esc_html( $atts['text-edited'] ); ?>",
},
localization: {
date: {
- locale: "<?php echo filter_var( $atts['date-locale'], FILTER_UNSAFE_RAW ); ?>",
- options: <?php echo filter_var( $atts['date-options'], FILTER_UNSAFE_RAW ); ?>,
+ locale: "<?php echo esc_js( filter_var( $atts['date-locale'], FILTER_UNSAFE_RAW ) ); ?>",
+ options: <?php echo filter_var( INCLUDE_MASTODON_FEED_DATE_OPTIONS, FILTER_UNSAFE_RAW ); ?>,
}
}
}
);
});
</script>
- <div class="include-mastodon-feed<?php echo (true == $atts['darkmode'] ? ' dark' : ''); ?>" id="<?php echo esc_attr( $elemId ); ?>"><?php echo esc_html( $atts['text-loading'] ); ?></div>
+ <div class="include-mastodon-feed-wrapper"><ol class="include-mastodon-feed<?php echo (true == $atts['darkmode'] ? ' dark' : ''); ?>" id="<?php echo esc_attr( $elemId ); ?>"><li><?php echo esc_html( $atts['text-loading'] ); ?></li></ol></div>
<?php
return ob_get_clean();
}
--- a/wp/wp-content/plugins/include-mastodon-feed/readme.txt Fri Sep 05 18:52:52 2025 +0200
+++ b/wp/wp-content/plugins/include-mastodon-feed/readme.txt Mon Sep 08 19:44:41 2025 +0200
@@ -3,10 +3,10 @@
Donate link: https://www.buymeacoffee.com/w101
Tags: mastodon, status, feed
Requires at least: 6.0
-Tested up to: 6.5
+Tested up to: 6.8
Requires PHP: 7.4
-Stable tag: 1.9.4
-License: Expat License
+Stable tag: 1.13.1
+License: MIT
License URI: https://directory.fsf.org/wiki/License:Expat
Plugin that provides a shortcode to easily integrate mastodon feeds into wordpress pages.
@@ -14,6 +14,8 @@
== Description ==
Plugin that provides an `[include-mastodon-feed]` shortcode to easily integrate mastodon feeds into wordpress pages. Supports personal and tag feeds.
+Account and post images are lazy loaded if preserveImageAspectRatio is set to true (default: false).
+
The plugin is written in PHP and generates native JavaScript to fetch and render the mastodon feed. No special libraries needed.
== Installation ==
@@ -26,15 +28,15 @@
`[include-mastodon-feed instance="YOUR-INSTANCE" account="YOUR-ACCOUNT-ID"]`
= Shortcode attributes =
+* **instance** (required)
+Domain name of the instance without https:// (e.g. example.org)
+
* **account** (required)
The account ID (a long number - see FAQ on how to get it)
* **tag**
Use **tag** instead of **account** if you want to embed a tag feed instead of a personal feed
-* **instance** (required)
-Domain name of the instance without https:// (e.g. example.org)
-
* **limit**
Maximum number of statuses (Default: 20)
@@ -56,6 +58,12 @@
* **preserveImageAspectRatio**
Preserve image aspect ratio (Default: false)
+* **imageSize**
+Load small sized preview images or full size high quality images (Default: preview, full)
+
+* **imageLink**
+Link image to status or image (Default: status, image)
+
* **tagged**
Show only statuses that are tagged with given tag name (Default: false)
No leading #, case insensitive, e.g.: tagged="tagname"
@@ -102,12 +110,10 @@
* **date-locale**
Locale for date string, used in toLocaleString() (Default: en-US)
-* **date-options**
-Format options directly fed into toLocaleString() (Default: {})
= Additional customizations =
-You can define several plugin constants to set custom default options that will be applied site-wide.
+You can define several plugin constants to set custom default options that will be applied site-wide (e.g. date options can only be set as php constant to mitigate an XSS vulnerability).
1. Open your `wp-config.php` file
2. Search for the line `/* Add any custom values between this line and the "stop editing" line. */`
@@ -148,6 +154,58 @@
== Changelog ==
+= 1.13.1 =
+* fix: removed unnecessary, broken aria-label functionality
+
+= 1.13 =
+Special release for Global Accessibility Awareness Day
+in collaboration with @oldrup@mastodon.green
+
+Happy [Accesssibility Day](https://accessibility.day)
+
+* accessibility (fix): image alt attributes - initial implementation was faulty
+* accessibility: added alt text to image / gifv attachments
+* accessibility: added alt text to avatar images
+* accessibility: added alt text to preview card media
+* accessibility: added descriptive aria-labels
+* accessibility: increased default text / background color contrast
+* accessibility: switched from DIV to semantic OL / LI structure
+
+= 1.12 =
+* accessibility: added image alt attribute (thank you @oldrup@mastodon.green)
+
+= 1.11 =
+* now favoring preview_url (smaler size) instead of remote_url (full size) for image previews (thank you @oldrup@mastodon.green)
+
+= 1.10 =
+* added image lazy loading for account and post images - post image lazy loading only works with preserveImageAspectRatio set to true (thank you @oldrup@mastodon.green)
+
+= 1.9.11 =
+* fixed typo (thank you @hjek)
+* cleaned up code after 1.9.10 release
+
+= 1.9.10 =
+* fixed XSS vulnerability: removed support for date-options as shortcode attribute completely - to mitigate an XSS vulnerability where authenticated attackers with contributor permission could insert malicious JavaScript (still can be set as constant in PHP code)
+
+= 1.9.9 =
+* fixed esc_url context that previously broke the URL for the Mastodon API JS ajax request (thank you @beach@illo.social)
+
+= 1.9.8 =
+* fix broken date-locale and date-options parameters (thank you @crusy@chaos.social)
+* improved string excaping for text parameters and added url escaping
+* removed unnecessary output buffering
+* fix license SPDX Identifier
+
+= 1.9.7 =
+* fix option to either display smaller image media attachment previews (default) or large image versions (thank you @beach@illo.social)
+
+= 1.9.6 =
+* fixed XSS vulnerability where authenticated attackers with contributor permissions could insert malicious JavaScript
+
+= 1.9.5 =
+* added option to either display smaller image media attachment previews (default) or large image versions (thank you @beach@illo.social)
+* added option to point image media attachment links to either status (default) or image
+
= 1.9.4 =
* added option to hide status meta information and date/time (thank you @PaulKingtiger@dice.camp)
* added tag support - you can now embed tag feeds (thank you @martin@openedtech.social)
--- a/wp/wp-content/plugins/portfolio/includes/class-prtfl-settings.php Fri Sep 05 18:52:52 2025 +0200
+++ b/wp/wp-content/plugins/portfolio/includes/class-prtfl-settings.php Mon Sep 08 19:44:41 2025 +0200
@@ -207,7 +207,11 @@
$this->options['slug'] = sanitize_text_field( wp_unslash( $_POST['prtfl_slug'] ) );
if ( is_plugin_active( 'sender-pro/sender-pro.php' ) ) {
- $sndr_options = get_option( 'sndr_options' );
+ if ( is_multisite() ) {
+ $sndr_options = get_site_option( 'sndr_options' );
+ } else {
+ $sndr_options = get_option( 'sndr_options' );
+ }
/* mailout when publishing quote */
if ( ! empty( $_POST['sndr_distribution_select'] ) && ! empty( $_POST['sndr_templates_select'] ) && ! empty( $_POST['sndr_priority'] ) ) {
if ( isset( $_POST['prtfl_sndr_mailout'] ) ) {
@@ -311,7 +315,11 @@
*/
public function tab_settings() {
if ( is_plugin_active( 'sender-pro/sender-pro.php' ) ) {
- $sndr_options = get_option( 'sndr_options' );
+ if ( is_multisite() ) {
+ $sndr_options = get_site_option( 'sndr_options' );
+ } else {
+ $sndr_options = get_option( 'sndr_options' );
+ }
}
?>
<h3 class="bws_tab_label"><?php esc_html_e( 'Portfolio Settings', 'portfolio' ); ?></h3>
--- a/wp/wp-content/plugins/portfolio/includes/demo-data/class-bws-demo-data.php Fri Sep 05 18:52:52 2025 +0200
+++ b/wp/wp-content/plugins/portfolio/includes/demo-data/class-bws-demo-data.php Mon Sep 08 19:44:41 2025 +0200
@@ -1,13 +1,21 @@
<?php
-
/**
* Load demo data
- * @version 1.0.4
+ * @version 1.0.7
*/
if ( ! class_exists( 'Bws_Demo_Data' ) ) {
class Bws_Demo_Data {
- private $bws_plugin_text_domain, $bws_plugin_prefix, $bws_plugin_page, $bws_plugin_name, $bws_plugin_basename, $bws_demo_options, $bws_demo_folder;
+ private $bws_plugin_text_domain;
+ private $bws_plugin_prefix;
+ private $bws_plugin_page;
+ private $bws_plugin_name;
+ private $bws_plugin_basename;
+ private $bws_demo_options;
+ private $bws_plugin_options;
+ private $bws_demo_folder;
+ private $install_callback;
+ private $remove_callback;
public function __construct( $args ) {
$plugin_dir_array = explode( '/', $args['plugin_basename'] );
@@ -16,8 +24,11 @@
$this->bws_plugin_name = $args['plugin_name'];
$this->bws_plugin_page = $args['plugin_page'];
$this->bws_demo_folder = $args['demo_folder'];
+ $this->install_callback = isset( $args['install_callback'] ) ? $args['install_callback'] : false;
+ $this->remove_callback = isset( $args['remove_callback'] ) ? $args['remove_callback'] : false;
$this->bws_plugin_text_domain = $plugin_dir_array[0];
$this->bws_demo_options = get_option( $this->bws_plugin_prefix . 'demo_options' );
+ $this->bws_plugin_options = get_option( $this->bws_plugin_prefix . 'options' );
}
/**
@@ -57,36 +68,30 @@
<p>
<button class="button button-primary" name="bws_<?php echo $_POST['bws_handle_demo']; ?>_demo_confirm" value="true"><?php echo $button_title; ?></button>
<button class="button" name="bws_<?php echo $_POST['bws_handle_demo']; ?>_demo_deny" value="true"><?php _e( 'No, go back to the settings page', $this->bws_plugin_text_domain ) ?></button>
- <?php wp_nonce_field( $this->bws_plugin_basename, 'bws_settings_nonce_name' ); ?>
+ <?php wp_nonce_field( $this->bws_plugin_basename, 'bws_nonce_demo_name' ); ?>
</p>
</form>
</div>
<?php }
/**
- * @param bool $install_callback
- * @param bool $remove_callback
- *
* @return array
*/
- function bws_handle_demo_data( $install_callback = false, $remove_callback = false ) {
- if ( isset( $_POST['bws_install_demo_confirm'] ) && check_admin_referer( $this->bws_plugin_basename, 'bws_settings_nonce_name' ) ) {
- return $this->bws_install_demo_data( $install_callback );
- } elseif ( isset( $_POST['bws_remove_demo_confirm'] ) && check_admin_referer( $this->bws_plugin_basename, 'bws_settings_nonce_name' ) ) {
- return $this->bws_remove_demo_data( $remove_callback );
- } else {
+ function bws_handle_demo_data() {
+ if ( isset( $_POST['bws_install_demo_confirm'] ) )
+ return $this->bws_install_demo_data();
+ elseif ( isset( $_POST['bws_remove_demo_confirm'] ) )
+ return $this->bws_remove_demo_data();
+ else
return false;
- }
}
/**
* Load demo data
*
- * @param bool|string $callback
- *
* @return array $message message about the result of the query
*/
- function bws_install_demo_data( $callback = false ) {
+ function bws_install_demo_data() {
global $wpdb;
/* get demo data*/
$message = array(
@@ -127,19 +132,17 @@
* load demo options
*/
if ( ! empty( $demo_data['options'] ) ) {
- $plugin_options = get_option( $this->bws_plugin_prefix . 'options' );
/* remember old plugin options */
- if ( ! empty( $plugin_options ) ) {
- $this->bws_demo_options['options'] = $plugin_options;
+ if ( ! empty( $this->bws_plugin_options ) ) {
+ $this->bws_demo_options['options'] = $this->bws_plugin_options;
$demo_data['options']['display_demo_notice'] = 0;
- update_option( $this->bws_plugin_prefix . 'options', array_merge( $plugin_options, $demo_data['options'] ) );
+ update_option( $this->bws_plugin_prefix . 'options', array_merge( $this->bws_plugin_options, $demo_data['options'] ) );
}
} else {
/* remove demo notice */
- $plugin_options = get_option( $this->bws_plugin_prefix . 'options' );
- if ( 0 != $plugin_options['display_demo_notice'] ) {
- $plugin_options['display_demo_notice'] = 0;
- update_option( $this->bws_plugin_prefix . 'options', $plugin_options );
+ if ( 0 != $this->bws_plugin_options['display_demo_notice'] ) {
+ $this->bws_plugin_options['display_demo_notice'] = 0;
+ update_option( $this->bws_plugin_prefix . 'options', $this->bws_plugin_options );
}
}
@@ -153,25 +156,25 @@
* load demo terms
*/
if ( ! empty( $demo_data['terms'] ) ) {
- foreach ( $demo_data['terms'] as $taxonomy_name => $terms_values_array ) {
- foreach ( $terms_values_array as $term_key => $term_value_single ) {
- $term_exists = term_exists( $term_key, $taxonomy_name );
+ foreach ( $demo_data['terms'] as $taxonomy_slug => $terms_values_array ) {
+ foreach ( $terms_values_array as $term_slug => $term_name ) {
+ $term_exists = term_exists( $term_slug, $taxonomy_slug );
if ( ! $term_exists ) {
$term_id = wp_insert_term(
- $term_value_single, /* the term. */
- $taxonomy_name, /* the taxonomy. */
+ $term_name, /* the term. */
+ $taxonomy_slug, /* the taxonomy. */
array(
- 'slug' => $term_key
+ 'slug' => $term_slug
)
);
if ( is_wp_error( $term_id ) ) {
$error ++;
} else {
- $term_IDs[ $taxonomy_name ][ $term_key ] = $term_id['term_id'];
- $term_IDs_new[ $taxonomy_name ][ $term_key ] = $term_id['term_id'];
+ $term_IDs[ $taxonomy_slug ][ $term_slug ] = $term_id['term_id'];
+ $term_IDs_new[ $taxonomy_slug ][ $term_slug ] = $term_id['term_id'];
}
} else {
- $term_IDs[ $taxonomy_name ][ $term_key ] = $term_exists['term_id'];
+ $term_IDs[ $taxonomy_slug ][ $term_slug ] = $term_exists['term_id'];
}
}
}
@@ -188,30 +191,27 @@
$post['post_content'] = preg_replace( '/{last_post_id}/', $post_id, $post['post_content'] );
}
if ( preg_match( '/{template_page}/', $post['post_content'] ) ) {
- if ( empty( $page_id ) && ! empty( $page_template ) ) {
+ if ( empty( $page_id ) && ! empty( $page_template ) )
$page_id = intval( $wpdb->get_var( "SELECT `post_id` FROM $wpdb->postmeta WHERE `meta_key` LIKE '_wp_page_template' AND `meta_value` LIKE '" . $page_template . "' LIMIT 1" ) );
- }
- if ( ! empty( $page_id ) ) {
+ if ( ! empty( $page_id ) )
$post['post_content'] = preg_replace( '/{template_page}/', '<a href="' . get_permalink( $page_id ) . '">' . get_the_title( $page_id ) . '</a>', $post['post_content'] );
- }
}
/* insert current post */
$post_id = wp_insert_post( $post );
- if ( 'post' == $post['post_type'] ) {
+ if ( 'post' == $post['post_type'] )
$posttype_post_id = $post_id;
- }
/* add taxonomy for posttype */
if ( 'post' != $post['post_type'] && 'page' != $post['post_type'] && ! empty( $term_IDs ) ) {
- foreach ( $term_IDs as $taxonomy_name => $term_array ) {
- if ( isset( $post['terms'][ $taxonomy_name ] ) ) {
- $selected_terms = $post['terms'][ $taxonomy_name ];
+ foreach ( $term_IDs as $taxonomy_slug => $term_array ) {
+ if ( isset( $post['terms'][ $taxonomy_slug ] ) ) {
+ $selected_terms = $post['terms'][ $taxonomy_slug ];
} else {
$selected_terms = array();
$selected_terms[] = intval( $term_array[ array_rand( $term_array ) ] );
}
- if ( ! wp_set_object_terms( $post_id, $selected_terms, $taxonomy_name, false ) )
+ if ( ! wp_set_object_terms( $post_id, $selected_terms, $taxonomy_slug, false ) )
$error ++;
}
}
@@ -301,7 +301,6 @@
* if there are error unlink the temp file name
*/
if ( is_wp_error( $tmp ) ) {
- @unlink( $file_array[ 'tmp_name' ] );
continue;
}
@@ -344,6 +343,13 @@
$page_id = $post_id;
$page_template = $post['page_template'];
}
+ /* save page_id to options */
+ if ( ! empty( $post['save_to_options'] ) ) {
+ $page_id = $post_id;
+ $this->bws_plugin_options[ $post['save_to_options'] ] = $post_id;
+ update_option( $this->bws_plugin_prefix . 'options', $this->bws_plugin_options );
+ }
+
/* first inserted image is thummbnail for post */
if ( ! empty( $featured_attach_id ) )
update_post_meta( $post_id, '_thumbnail_id', $featured_attach_id );
@@ -366,9 +372,11 @@
if ( ! empty( $demo_data['options'] ) )
$message['options'] = $demo_data['options'];
+ else
+ $message['options'] = $this->bws_plugin_options;
- if ( $callback && function_exists( $callback ) )
- call_user_func( $callback );
+ if ( $this->install_callback && function_exists( $this->install_callback ) )
+ call_user_func( $this->install_callback );
} else {
$message['error'] = __( 'Demo data installation proceeded with some errors.', $this->bws_plugin_text_domain );
}
@@ -434,11 +442,9 @@
/**
* Remove demo data
*
- * @param $callback
- *
* @return array $message message about the result of the query
*/
- function bws_remove_demo_data( $callback = false ) {
+ function bws_remove_demo_data() {
$error = 0;
$message = array(
'error' => null,
@@ -456,13 +462,12 @@
if ( ! empty( $this->bws_demo_options['options'] ) ) {
$this->bws_demo_options['options']['display_demo_notice'] = 0;
update_option( $this->bws_plugin_prefix . 'options', $this->bws_demo_options['options'] );
- if ( $callback && function_exists( $callback ) )
- call_user_func( $callback );
+ if ( $this->remove_callback && function_exists( $this->remove_callback ) )
+ call_user_func( $this->remove_callback );
}
$done = $this->bws_delete_demo_option();
- if ( ! $done ) {
+ if ( ! $done )
$error ++;
- }
/*
* Delete all posts
@@ -472,9 +477,8 @@
/* delete only not modified posts */
if ( get_post_modified_time( 'U', false, $post_id, false ) == $last_modified ) {
$done = wp_delete_post( $post_id, true );
- if ( ! $done ) {
+ if ( ! $done )
$error ++;
- }
}
}
}
@@ -494,17 +498,15 @@
if ( ! empty( $this->bws_demo_options['attachments'] ) ) {
foreach ( $this->bws_demo_options['attachments'] as $post_id ) {
$done = wp_delete_attachment( $post_id, true );
- if ( ! $done ) {
+ if ( ! $done )
$error ++;
- }
}
}
if ( ! empty( $this->bws_demo_options['distant_attachments'] ) ) {
foreach ( $this->bws_demo_options['distant_attachments'] as $post_id ) {
$done = wp_delete_attachment( $post_id, true );
- if ( ! $done ) {
+ if ( ! $done )
$error ++;
- }
}
}
if ( empty( $error ) ) {
@@ -533,9 +535,8 @@
global $wp_version;
if ( isset( $_POST['bws_hide_demo_notice'] ) && check_admin_referer( $this->bws_plugin_basename, 'bws_demo_nonce_name' ) ) {
- $plugin_options = get_option( $this->bws_plugin_prefix . 'options' );
- $plugin_options['display_demo_notice'] = 0;
- update_option( $this->bws_plugin_prefix . 'options', $plugin_options );
+ $this->bws_plugin_options['display_demo_notice'] = 0;
+ update_option( $this->bws_plugin_prefix . 'options', $this->bws_plugin_options );
return;
}
if ( ! isset( $_POST['bws_handle_demo'] ) && ! isset( $_POST['bws_install_demo_confirm'] ) ) {
Binary file wp/wp-content/plugins/portfolio/languages/portfolio-ru_RU.mo has changed
--- a/wp/wp-content/plugins/portfolio/languages/portfolio-ru_RU.po Fri Sep 05 18:52:52 2025 +0200
+++ b/wp/wp-content/plugins/portfolio/languages/portfolio-ru_RU.po Mon Sep 08 19:44:41 2025 +0200
@@ -2,146 +2,156 @@
msgstr ""
"Project-Id-Version: portfolio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-10-04 12:19+0300\n"
-"PO-Revision-Date: 2021-10-04 12:20+0300\n"
+"POT-Creation-Date: 2024-12-24 14:48+0200\n"
+"PO-Revision-Date: 2024-12-24 14:49+0200\n"
"Last-Translator: bestwebsoft.com <plugins@bestwebsoft.com>\n"
"Language-Team: bestwebsoft.com <plugin@bestwebsoft.com>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-KeywordsList: __;_e\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Poedit-KeywordsList: __;_e;esc_html_e;esc_html__;esc_attr_e;esc_attr__\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SourceCharset: UTF-8\n"
-"X-Generator: Poedit 2.3\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Poedit 3.5\n"
"X-Poedit-SearchPath-0: .\n"
"X-Poedit-SearchPathExcluded-0: bws_menu\n"
-#: inc/class-prtfl-settings.php:24 portfolio.php:40 portfolio.php:1633
-#: portfolio.php:1651
+#: includes/class-portfolio-technologies-widget.php:20
+#: includes/class-prtfl-settings.php:108 portfolio.php:369 portfolio.php:383
+#: portfolio.php:1271
+msgid "Technologies"
+msgstr "Технологии"
+
+#: includes/class-portfolio-technologies-widget.php:21
+msgid "The tag cloud with your most used portfolio technologies."
+msgstr "Облако тегов из технологий плагина Portfolio."
+
+#: includes/class-portfolio-technologies-widget.php:73
+#: includes/class-prtfl-settings.php:430 includes/class-prtfl-widget.php:56
+msgid "Title"
+msgstr "Название"
+
+#: includes/class-prtfl-settings.php:50 portfolio.php:42 portfolio.php:1808
+#: portfolio.php:1835
msgid "Settings"
msgstr "Настройки"
-#: inc/class-prtfl-settings.php:25 portfolio.php:269
+#: includes/class-prtfl-settings.php:51 portfolio.php:292
msgid "Project"
msgstr "Проект"
-#: inc/class-prtfl-settings.php:26
+#: includes/class-prtfl-settings.php:52
msgid "Misc"
msgstr "Разное"
-#: inc/class-prtfl-settings.php:27
+#: includes/class-prtfl-settings.php:53
msgid "Custom Code"
msgstr "Пользовательский код"
-#: inc/class-prtfl-settings.php:28
+#: includes/class-prtfl-settings.php:54
msgid "Import / Export"
msgstr "Импорт / Экспорт"
-#: inc/class-prtfl-settings.php:29
+#: includes/class-prtfl-settings.php:55
msgid "License Key"
msgstr "Лицензионный ключ"
-#: inc/class-prtfl-settings.php:79 portfolio.php:314 portfolio.php:328
+#: includes/class-prtfl-settings.php:107 portfolio.php:337 portfolio.php:351
msgid "Executors"
msgstr "Исполнители"
-#: inc/class-prtfl-settings.php:80 portfolio.php:346 portfolio.php:360
-#: portfolio.php:455 portfolio.php:1199
-msgid "Technologies"
-msgstr "Технологии"
-
-#: inc/class-prtfl-settings.php:81 portfolio.php:89
+#: includes/class-prtfl-settings.php:109 portfolio.php:88
msgid "Date of completion"
msgstr "Дата окончания выполнения"
-#: inc/class-prtfl-settings.php:82
+#: includes/class-prtfl-settings.php:110
msgid "Link"
msgstr "Ссылка"
-#: inc/class-prtfl-settings.php:83
+#: includes/class-prtfl-settings.php:111
msgid "Short Description"
msgstr "Краткое описание"
-#: inc/class-prtfl-settings.php:84
+#: includes/class-prtfl-settings.php:112
msgid "Description"
msgstr "Описание"
-#: inc/class-prtfl-settings.php:156
+#: includes/class-prtfl-settings.php:188
msgid "Custom image size was changed. You need to update project images."
msgstr ""
"Пользовательский размер изображения был изменен. Вам необходимо обновить "
"изображения проектов."
-#: inc/class-prtfl-settings.php:248
+#: includes/class-prtfl-settings.php:288
msgid "Settings saved."
msgstr "Настройки сохранены."
-#: inc/class-prtfl-settings.php:260
+#: includes/class-prtfl-settings.php:301
msgid "Please enable JavaScript in Your browser."
msgstr "Пожалуйста, включите поддержку JavaScript в вашем браузере."
-#: inc/class-prtfl-settings.php:265
+#: includes/class-prtfl-settings.php:306
msgid "Update Images"
msgstr "Обновить изображения"
-#: inc/class-prtfl-settings.php:278 portfolio.php:40 portfolio.php:416
+#: includes/class-prtfl-settings.php:325 portfolio.php:42 portfolio.php:439
msgid "Portfolio Settings"
msgstr "Настройки Portfolio"
-#: inc/class-prtfl-settings.php:283
+#: includes/class-prtfl-settings.php:330
msgid "Portfolio Page"
msgstr "Страница портфолио"
-#: inc/class-prtfl-settings.php:291
+#: includes/class-prtfl-settings.php:342
msgid "Base page where all existing projects will be displayed."
msgstr ""
"Базовая страница, на которой будут отображены все существующие проекты."
-#: inc/class-prtfl-settings.php:295
+#: includes/class-prtfl-settings.php:346
msgid "Number of Columns"
msgstr "Количество колонок"
-#: inc/class-prtfl-settings.php:297 inc/class-prtfl-settings.php:304
+#: includes/class-prtfl-settings.php:348 includes/class-prtfl-settings.php:355
msgid "columns"
msgstr "колонок"
-#: inc/class-prtfl-settings.php:298
+#: includes/class-prtfl-settings.php:349
#, php-format
msgid "Number of portfolio columns (default is %s)."
msgstr "Количество колонок portfolio (по умолчанию - %s)."
-#: inc/class-prtfl-settings.php:302
+#: includes/class-prtfl-settings.php:353
msgid "Number of Image Columns"
msgstr "Количество колонок изображений"
-#: inc/class-prtfl-settings.php:305
+#: includes/class-prtfl-settings.php:356
#, php-format
msgid "Number of image columns (default is %s)."
msgstr "Количество колонок изображений (по умолчанию - %s)."
-#: inc/class-prtfl-settings.php:309
+#: includes/class-prtfl-settings.php:360
msgid "Image Size"
msgstr "Размер изображения"
-#: inc/class-prtfl-settings.php:315 inc/class-prtfl-settings.php:333
+#: includes/class-prtfl-settings.php:366 includes/class-prtfl-settings.php:384
msgid "Custom"
msgstr "Пользовательский"
-#: inc/class-prtfl-settings.php:317
+#: includes/class-prtfl-settings.php:368
msgid ""
"Maximum portfolio image size. \"Custom\" uses the Image Dimensions values."
msgstr ""
"Максимальный размер изображений портфолио. \"Пользовательский\" использует "
"значения, указанные в поле Размеры изображения."
-#: inc/class-prtfl-settings.php:321
+#: includes/class-prtfl-settings.php:372
msgid "Custom Image Size"
msgstr "Пользовательский размер изображения"
-#: inc/class-prtfl-settings.php:323
+#: includes/class-prtfl-settings.php:374
msgid ""
"Adjust these values based on the number of columns in your project. This "
"won't affect the full size of your images in the lightbox."
@@ -149,144 +159,140 @@
"Настройте эти значения на основе количества колонок в вашем проекте. Это не "
"влияет на размеры изображения в лайтбоксе."
-#: inc/class-prtfl-settings.php:327
+#: includes/class-prtfl-settings.php:378
msgid "Cover Image Size"
msgstr "Размер изображения альбома"
-#: inc/class-prtfl-settings.php:335
+#: includes/class-prtfl-settings.php:386
msgid "Maximum cover image size. \"Custom\" uses the Image Dimensions values."
msgstr ""
"Максимальный размер изображений альбома. \"Пользовательский\" использует "
"значения, указанные в поле Размеры изображения."
-#: inc/class-prtfl-settings.php:339
+#: includes/class-prtfl-settings.php:390
msgid "Custom Cover Image Size"
msgstr "Пользовательский размер изображения альбома"
-#: inc/class-prtfl-settings.php:348 inc/class-prtfl-settings.php:404
-#: inc/class-prtfl-settings.php:514
+#: includes/class-prtfl-settings.php:399 includes/class-prtfl-settings.php:455
+#: includes/class-prtfl-settings.php:570
msgid "Close"
msgstr "Закрыть"
-#: inc/class-prtfl-settings.php:352
+#: includes/class-prtfl-settings.php:403
msgid "Slider Image Size"
msgstr "Размер слайдера"
-#: inc/class-prtfl-settings.php:357
+#: includes/class-prtfl-settings.php:408
msgid "Maximum slider image size. \"Custom\" uses the Image Dimensions values."
msgstr ""
"Максимальный размер изображений слайдера. \"Пользовательский\" использует "
"значения, указанные в поле Размеры изображения."
-#: inc/class-prtfl-settings.php:361
+#: includes/class-prtfl-settings.php:412
msgid "Sort Projects Option"
msgstr "Cортировка проектов по"
-#: inc/class-prtfl-settings.php:364
+#: includes/class-prtfl-settings.php:415
msgid "Enable to display sort projects manually by date or title."
msgstr "Включить сортировку проектов вручную по дате или названию."
-#: inc/class-prtfl-settings.php:375
+#: includes/class-prtfl-settings.php:426
msgid "Sort Projects by"
msgstr "Cортировка проектов по"
-#: inc/class-prtfl-settings.php:378
+#: includes/class-prtfl-settings.php:429
msgid "Project ID"
msgstr "ID проекта"
-#: inc/class-prtfl-settings.php:379 portfolio.php:481 portfolio.php:2406
-msgid "Title"
-msgstr "Название"
-
-#: inc/class-prtfl-settings.php:380
+#: includes/class-prtfl-settings.php:431
msgid "Date"
msgstr "Дата"
-#: inc/class-prtfl-settings.php:381
+#: includes/class-prtfl-settings.php:432
msgid "Last modified date"
msgstr "Дата последнего изменения"
-#: inc/class-prtfl-settings.php:382
+#: includes/class-prtfl-settings.php:433
msgid "Comment count"
msgstr "Количество комментариев"
-#: inc/class-prtfl-settings.php:383
+#: includes/class-prtfl-settings.php:434
msgid "Sorting order (the input field for sorting order)"
msgstr "Порядок сортировки (поле ввода для сортировки)"
-#: inc/class-prtfl-settings.php:384
+#: includes/class-prtfl-settings.php:435
msgid "Author"
msgstr "Автор"
-#: inc/class-prtfl-settings.php:385
+#: includes/class-prtfl-settings.php:436
msgid "Random"
msgstr "Произвольно"
-#: inc/class-prtfl-settings.php:387
+#: includes/class-prtfl-settings.php:438
msgid "Select projects sorting order in your portfolio page."
msgstr "Выберите порядок сортировки проектов на странице портфолио."
-#: inc/class-prtfl-settings.php:391
+#: includes/class-prtfl-settings.php:442
msgid "Arrange Projects by"
msgstr "Сортировать проекты"
-#: inc/class-prtfl-settings.php:394
+#: includes/class-prtfl-settings.php:445
msgid "Ascending (e.g. 1, 2, 3; a, b, c)"
msgstr "По возрастанию (например, 1, 2, 3; а, б, в)"
-#: inc/class-prtfl-settings.php:396
+#: includes/class-prtfl-settings.php:447
msgid "Descending (e.g. 3, 2, 1; c, b, a)"
msgstr "По убыванию (например, 3, 2, 1; в, б, а)"
-#: inc/class-prtfl-settings.php:408
+#: includes/class-prtfl-settings.php:459
msgid "Lightbox Helper"
msgstr "Вспомогательные элементы в лайтбоксе"
-#: inc/class-prtfl-settings.php:410
+#: includes/class-prtfl-settings.php:461
msgid "Enable to use a lightbox helper navigation between images."
msgstr ""
"Разрешить использовать вспомогательные элементы лайтбокса для навигации "
"между изображениями."
-#: inc/class-prtfl-settings.php:414
+#: includes/class-prtfl-settings.php:465
msgid "Lightbox Helper Type"
msgstr "Тип вспомогательных элементов лайтбокса"
-#: inc/class-prtfl-settings.php:417
+#: includes/class-prtfl-settings.php:468
msgid "Thumbnails"
msgstr "Миниатюры"
-#: inc/class-prtfl-settings.php:418
+#: includes/class-prtfl-settings.php:469
msgid "Buttons"
msgstr "Кнопки"
-#: inc/class-prtfl-settings.php:429
+#: includes/class-prtfl-settings.php:480
msgid "Text Link"
msgstr "Текстовая ссылка"
-#: inc/class-prtfl-settings.php:432
+#: includes/class-prtfl-settings.php:483
msgid "Enable to display link field as a text for non-registered users."
msgstr ""
"Включить отображение поля ссылки в качестве текста для незарегистрированных "
"пользователей."
-#: inc/class-prtfl-settings.php:437
+#: includes/class-prtfl-settings.php:488
msgid "Automatic Mailout when Publishing a New:"
msgstr "Автоматическая рассылка при публикации нового:"
-#: inc/class-prtfl-settings.php:443 portfolio.php:268
+#: includes/class-prtfl-settings.php:496 portfolio.php:291
msgid "Projects"
msgstr "Проекты"
-#: inc/class-prtfl-settings.php:450
+#: includes/class-prtfl-settings.php:504
msgid "Select mailout priority"
msgstr "Выберите приоритет рассылки"
-#: inc/class-prtfl-settings.php:451
+#: includes/class-prtfl-settings.php:506
msgid "Less number - higher priority"
msgstr "Меньше числа - более высокий приоритет"
-#: inc/class-prtfl-settings.php:457 inc/class-prtfl-settings.php:461
+#: includes/class-prtfl-settings.php:512 includes/class-prtfl-settings.php:518
msgid ""
"Enable to automatic mailout when publishing a new bws-portfolios and tips. "
"Sender Pro plugin is required."
@@ -294,59 +300,59 @@
"Включите автоматическую рассылку при публикации новых bws-портфолио и "
"советов. Требуется плагин Sender Pro."
-#: inc/class-prtfl-settings.php:457
-msgid "Ativate Now"
+#: includes/class-prtfl-settings.php:512 includes/class-prtfl-settings.php:663
+msgid "Activate Now"
msgstr "Активировать сейчас"
-#: inc/class-prtfl-settings.php:461 inc/class-prtfl-settings.php:619
+#: includes/class-prtfl-settings.php:518 includes/class-prtfl-settings.php:679
msgid "Install Now"
msgstr "Установить сейчас"
-#: inc/class-prtfl-settings.php:474
+#: includes/class-prtfl-settings.php:533
msgid "Single Project Settings"
msgstr "Настройки отдельного проекта"
-#: inc/class-prtfl-settings.php:479 inc/class-prtfl-settings.php:518
+#: includes/class-prtfl-settings.php:538 includes/class-prtfl-settings.php:574
msgid "Projects Fields"
msgstr "Поля проектов"
-#: inc/class-prtfl-settings.php:493 portfolio.php:99
+#: includes/class-prtfl-settings.php:550 portfolio.php:98
msgid "Source Files, URL"
msgstr "Исходные файлы, URL"
-#: inc/class-prtfl-settings.php:497
+#: includes/class-prtfl-settings.php:553
msgid "Display only for logged-in users"
msgstr "Отображать только для авторизованных пользователей"
-#: inc/class-prtfl-settings.php:503 inc/class-prtfl-settings.php:541
+#: includes/class-prtfl-settings.php:559 includes/class-prtfl-settings.php:593
msgid "\"More screenshots\" block"
msgstr "Блок \"Больше скриншотов\""
-#: inc/class-prtfl-settings.php:523 inc/class-prtfl-settings.php:524
-#: portfolio.php:579
+#: includes/class-prtfl-settings.php:578 includes/class-prtfl-settings.php:579
+#: portfolio.php:599
msgid "Categories"
msgstr "Категории"
-#: inc/class-prtfl-settings.php:528 inc/class-prtfl-settings.php:529
-#: portfolio.php:580
+#: includes/class-prtfl-settings.php:582 includes/class-prtfl-settings.php:583
+#: portfolio.php:600
msgid "Sectors"
msgstr "Отрасли"
-#: inc/class-prtfl-settings.php:533 inc/class-prtfl-settings.php:534
-#: portfolio.php:581
+#: includes/class-prtfl-settings.php:586 includes/class-prtfl-settings.php:587
+#: portfolio.php:601
msgid "Services"
msgstr "Сервисы"
-#: inc/class-prtfl-settings.php:538 inc/class-prtfl-settings.php:539
-#: portfolio.php:603
+#: includes/class-prtfl-settings.php:590 includes/class-prtfl-settings.php:591
+#: portfolio.php:629
msgid "Client"
msgstr "Клиент"
-#: inc/class-prtfl-settings.php:558
+#: includes/class-prtfl-settings.php:612
msgid "Demo Data"
msgstr "Демо данные"
-#: inc/class-prtfl-settings.php:560
+#: includes/class-prtfl-settings.php:614
msgid ""
"Install demo data to create portfolio projects with images, post with "
"shortcodes and page with a list of all portfolio projects."
@@ -354,11 +360,11 @@
"Установите демо-данные, чтобы создать проекты портфолио с изображениями, "
"запись с шорткодами и страницу со списком всех проектов портфолио."
-#: inc/class-prtfl-settings.php:580
+#: includes/class-prtfl-settings.php:637
msgid "Portfolio Post Type"
msgstr "Тип записи портфолио"
-#: inc/class-prtfl-settings.php:584
+#: includes/class-prtfl-settings.php:641
msgid ""
"Enable to avoid conflicts with other portfolio plugins installed. All "
"portfolio created earlier will stay unchanged. However, after enabling we "
@@ -370,36 +376,32 @@
"после переименования проверьте, пожалуйста, настройки других плагинов, где "
"используется тип записи \"portfolio\"."
-#: inc/class-prtfl-settings.php:590
+#: includes/class-prtfl-settings.php:647
msgid "Portfolio Slug"
msgstr "Ярлык портфолио"
-#: inc/class-prtfl-settings.php:593
+#: includes/class-prtfl-settings.php:650
msgid "Enter the unique portfolio slug."
msgstr "Введите уникальный ярлык портфолио."
-#: inc/class-prtfl-settings.php:597
+#: includes/class-prtfl-settings.php:654
msgid "Search Portfolio Projects"
msgstr "Поиск проектов портфолио"
-#: inc/class-prtfl-settings.php:603
-msgid "Activate Now"
-msgstr "Активировать сейчас"
-
-#: inc/class-prtfl-settings.php:622
+#: includes/class-prtfl-settings.php:683
msgid "Enable to include portfolio projects to your website search."
msgstr "Включить проекты портфолио в поиск на вашем сайте."
-#: inc/class-prtfl-settings.php:622
+#: includes/class-prtfl-settings.php:683
#, php-format
msgid "%s plugin is required."
msgstr "Требуется плагин %s."
-#: inc/class-prtfl-settings.php:636
+#: includes/class-prtfl-settings.php:698
msgid "Portfolio Shortcode"
msgstr "Шорткод портфолио"
-#: inc/class-prtfl-settings.php:639
+#: includes/class-prtfl-settings.php:701
msgid ""
"Add the latest portfolio projects using the following shortcode (where * is "
"a number of projects to display):"
@@ -407,415 +409,435 @@
"Добавьте последние проекты портфолио, используя следующий шорткод (где * - "
"количество отображаемых проектов):"
-#: inc/demo-data/class-bws-demo-data.php:31
+#: includes/class-prtfl-widget.php:20
+msgid "Latest Portfolio Items"
+msgstr "Последние проекты портфолио"
+
+#: includes/class-prtfl-widget.php:21
+msgid "Displays the latest Portfolio projects."
+msgstr "Отображение последних проектов портфолио."
+
+#: includes/class-prtfl-widget.php:62
+msgid "Number of Projects:"
+msgstr "Количество проектов:"
+
+#: includes/class-prtfl-widget.php:68
+msgid "Number of Colums:"
+msgstr "Количество столбцов:"
+
+#: includes/demo-data/class-bws-demo-data.php:42
msgid "Install Demo Data"
msgstr "Установить демо-данные"
-#: inc/demo-data/class-bws-demo-data.php:34
+#: includes/demo-data/class-bws-demo-data.php:45
msgid "Remove Demo Data"
msgstr "Удалить демо-данные"
-#: inc/demo-data/class-bws-demo-data.php:35
+#: includes/demo-data/class-bws-demo-data.php:46
msgid "Delete demo data and restore previous plugin settings."
msgstr "Удалить демо данные и восстановить предыдущие настройки плагина."
-#: inc/demo-data/class-bws-demo-data.php:48
-#: inc/demo-data/class-bws-demo-data.php:595
+#: includes/demo-data/class-bws-demo-data.php:59
+#: includes/demo-data/class-bws-demo-data.php:593
msgid "Yes, install demo data"
msgstr "Да, установить демо-данные"
-#: inc/demo-data/class-bws-demo-data.php:49
+#: includes/demo-data/class-bws-demo-data.php:60
msgid "Are you sure you want to install demo data?"
msgstr "Вы уверены, что хотите установить демо-данные?"
-#: inc/demo-data/class-bws-demo-data.php:51
+#: includes/demo-data/class-bws-demo-data.php:62
msgid "Yes, remove demo data"
msgstr "Да, удалить демо-данные"
-#: inc/demo-data/class-bws-demo-data.php:52
+#: includes/demo-data/class-bws-demo-data.php:63
msgid "Are you sure you want to remove demo data?"
msgstr "Вы уверены, что хотите удалить демо-данные?"
-#: inc/demo-data/class-bws-demo-data.php:59
+#: includes/demo-data/class-bws-demo-data.php:70
msgid "No, go back to the settings page"
msgstr "Нет, вернуться на страницу настроек"
-#: inc/demo-data/class-bws-demo-data.php:115
+#: includes/demo-data/class-bws-demo-data.php:120
msgid "Can not get demo data."
msgstr "Невозможно получить демо-данные."
-#: inc/demo-data/class-bws-demo-data.php:122
+#: includes/demo-data/class-bws-demo-data.php:127
msgid "Demo settings are already installed."
msgstr "Настройки демо уже установлены."
-#: inc/demo-data/class-bws-demo-data.php:362
+#: includes/demo-data/class-bws-demo-data.php:365
msgid "Demo data successfully installed."
msgstr "Демо-данные успешно установлены."
-#: inc/demo-data/class-bws-demo-data.php:364
+#: includes/demo-data/class-bws-demo-data.php:367
msgid "View post with shortcodes"
msgstr "Просмотрите запись с шорткодами"
-#: inc/demo-data/class-bws-demo-data.php:367
+#: includes/demo-data/class-bws-demo-data.php:370
msgid "View page with examples"
msgstr "Просмотрите запись с примерами"
-#: inc/demo-data/class-bws-demo-data.php:376
+#: includes/demo-data/class-bws-demo-data.php:381
msgid "Demo data installation proceeded with some errors."
msgstr "Установка демо-данных прошла с ошибками."
-#: inc/demo-data/class-bws-demo-data.php:379
+#: includes/demo-data/class-bws-demo-data.php:384
msgid "Post data is missing."
msgstr "Контент записи отсутствует."
-#: inc/demo-data/class-bws-demo-data.php:453
+#: includes/demo-data/class-bws-demo-data.php:456
msgid "Demo data have been already removed."
msgstr "Демо-данные уже удалены."
-#: inc/demo-data/class-bws-demo-data.php:514
+#: includes/demo-data/class-bws-demo-data.php:513
msgid "Demo data successfully removed."
msgstr "Демо-данные успешно удалены."
-#: inc/demo-data/class-bws-demo-data.php:518
+#: includes/demo-data/class-bws-demo-data.php:517
msgid "Removing demo data with some errors occurred."
msgstr "Удаление демо-данных прошло с ошибками."
-#: inc/demo-data/class-bws-demo-data.php:587
+#: includes/demo-data/class-bws-demo-data.php:585
msgid "Close notice"
msgstr "Закрыть сообщение"
-#: inc/demo-data/class-bws-demo-data.php:593
+#: includes/demo-data/class-bws-demo-data.php:591
#, php-format
msgid "Do you want to install demo content and settings for %s now?"
msgstr "Вы хотите установить демо контент и настройки для %s?"
-#: portfolio.php:46
+#: portfolio.php:48
msgid "Upgrade to Pro"
msgstr "Обновить до Pro"
-#: portfolio.php:84
+#: portfolio.php:83
msgid "Short description"
msgstr "Краткое описание"
-#: portfolio.php:94
+#: portfolio.php:93
msgid "Project, URL"
msgstr "Проект, URL"
-#: portfolio.php:239
+#: portfolio.php:260
msgid "Date of completion:"
msgstr "Дата окончания выполнения:"
-#: portfolio.php:240
+#: portfolio.php:261
msgid "Project, URL:"
msgstr "Проект, URL:"
-#: portfolio.php:241
+#: portfolio.php:262
msgid "Short description:"
msgstr "Краткое описание:"
-#: portfolio.php:242
+#: portfolio.php:263
msgid "Description:"
msgstr "Описание:"
-#: portfolio.php:243
+#: portfolio.php:264
msgid "Source Files, URL:"
msgstr "Исходные файлы, URL:"
-#: portfolio.php:244
+#: portfolio.php:265
msgid "Executor:"
msgstr "Исполнитель:"
-#: portfolio.php:245
+#: portfolio.php:266
msgid "More screenshots:"
msgstr "Больше скриншотов:"
-#: portfolio.php:246
+#: portfolio.php:267
msgid "Technologies:"
msgstr "Технологии:"
-#: portfolio.php:267
+#: portfolio.php:290
msgid "Portfolio"
msgstr "Portfolio"
-#: portfolio.php:270
+#: portfolio.php:293
msgid "Add New"
msgstr "Добавить проект"
-#: portfolio.php:271
+#: portfolio.php:294
msgid "Add New Project"
msgstr "Добавить новый проект"
-#: portfolio.php:272
+#: portfolio.php:295
msgid "Edit"
msgstr "Редактировать"
-#: portfolio.php:273
+#: portfolio.php:296
msgid "Edit Project"
msgstr "Редактировать проект"
-#: portfolio.php:274
+#: portfolio.php:297
msgid "New Project"
msgstr "Новый проект"
-#: portfolio.php:275 portfolio.php:276
+#: portfolio.php:298 portfolio.php:299
msgid "View Project"
msgstr "Просмотреть проект"
-#: portfolio.php:277
+#: portfolio.php:300
msgid "Search Projects"
msgstr "Поиск проектов"
-#: portfolio.php:278
+#: portfolio.php:301
msgid "No project found"
msgstr "Ни одного проекта не найдено"
-#: portfolio.php:279
+#: portfolio.php:302
msgid "No project found in Trash"
msgstr "Ни одного проекта в корзине не найдено"
-#: portfolio.php:280
+#: portfolio.php:303
msgid "Parent Project"
msgstr "Родительский проект"
-#: portfolio.php:281
+#: portfolio.php:304
msgid "Filter projects list"
msgstr "Фильтр списка проектов"
-#: portfolio.php:282
+#: portfolio.php:305
msgid "Projects list navigation"
msgstr "Навигация списка проектов"
-#: portfolio.php:283
+#: portfolio.php:306
msgid "Projects list"
msgstr "Список проектов"
-#: portfolio.php:285
+#: portfolio.php:308
msgid "Create a project item"
msgstr "Создать проект"
-#: portfolio.php:315
+#: portfolio.php:338
msgid "Executor"
msgstr "Профиль исполнителя"
-#: portfolio.php:316
+#: portfolio.php:339
msgid "Search Executors"
msgstr "Искать исполнителя"
-#: portfolio.php:317
+#: portfolio.php:340
msgid "Popular Executors"
msgstr "Популярные исполнители"
-#: portfolio.php:318
+#: portfolio.php:341
msgid "All Executors"
msgstr "Все исполнители"
-#: portfolio.php:319
+#: portfolio.php:342
msgid "Parent Executor"
msgstr "Родительский исполнитель"
-#: portfolio.php:320
+#: portfolio.php:343
msgid "Parent Executor:"
msgstr "Родительский исполнитель:"
-#: portfolio.php:321
+#: portfolio.php:344
msgid "Edit Executor"
msgstr "Редактировать исполнителя"
-#: portfolio.php:322
+#: portfolio.php:345
msgid "Update Executor"
msgstr "Обновить исполнителя"
-#: portfolio.php:323
+#: portfolio.php:346
msgid "Add New Executor"
msgstr "Добавить нового исполнителя"
-#: portfolio.php:324
+#: portfolio.php:347
msgid "New Executor Name"
msgstr "Имя нового Исполнителя"
-#: portfolio.php:325
+#: portfolio.php:348
msgid "Separate executors with commas"
msgstr "Разделите исполнителей запятыми"
-#: portfolio.php:326
+#: portfolio.php:349
msgid "Add or remove Executor"
msgstr "Добавить или удалить исполнителя"
-#: portfolio.php:327
+#: portfolio.php:350
msgid "Choose from the most used Executors"
msgstr "Выбрать из списка часто используемых исполнителей"
-#: portfolio.php:329
+#: portfolio.php:352
msgid "Executors list navigation"
msgstr "Навигация списка исполнителей"
-#: portfolio.php:330
+#: portfolio.php:353
msgid "Executors list"
msgstr "Список исполнителей"
-#: portfolio.php:347
+#: portfolio.php:370
msgid "Technology"
msgstr "Технология"
-#: portfolio.php:348
+#: portfolio.php:371
msgid "Search Technologies"
msgstr "Поиск технологии"
-#: portfolio.php:349
+#: portfolio.php:372
msgid "Popular Technologies"
msgstr "Популярные Технологии"
-#: portfolio.php:350
+#: portfolio.php:373
msgid "All Technologies"
msgstr "Все Технологии"
-#: portfolio.php:351
+#: portfolio.php:374
msgid "Parent Technology"
msgstr "Родительская Технология"
-#: portfolio.php:352
+#: portfolio.php:375
msgid "Parent Technology:"
msgstr "Родительская Технология:"
-#: portfolio.php:353
+#: portfolio.php:376
msgid "Edit Technology"
msgstr "Редактировать Технологию"
-#: portfolio.php:354
+#: portfolio.php:377
msgid "Update Technology"
msgstr "Обновить Технологию"
-#: portfolio.php:355
+#: portfolio.php:378
msgid "Add New Technology"
msgstr "Добавить новую Технологию"
-#: portfolio.php:356
+#: portfolio.php:379
msgid "New Technology Name"
msgstr "Название новой Технологии"
-#: portfolio.php:357
+#: portfolio.php:380
msgid "Separate technologies with commas"
msgstr "Разделите технологии запятыми"
-#: portfolio.php:358
+#: portfolio.php:381
msgid "Add or remove Technology"
msgstr "Добавить или удалить Технологию"
-#: portfolio.php:359
+#: portfolio.php:382
msgid "Choose from the most used technologies"
msgstr "Выбрать из наиболее используемых технологий"
-#: portfolio.php:361
+#: portfolio.php:384
msgid "Technologies list navigation"
msgstr "Навигация списка технологий"
-#: portfolio.php:362
+#: portfolio.php:385
msgid "Technologies list"
msgstr "Список технологий"
-#: portfolio.php:456
-msgid "The tag cloud with your most used portfolio technologies."
-msgstr "Облако тегов из технологий плагина Portfolio."
-
-#: portfolio.php:574
+#: portfolio.php:594
msgid "Images"
msgstr "Изображения"
-#: portfolio.php:575
+#: portfolio.php:595
msgid "General"
msgstr "Общее"
-#: portfolio.php:614
+#: portfolio.php:642
msgid "Featured project"
msgstr "Избранный проект"
-#: portfolio.php:616
+#: portfolio.php:644
msgid "Add to slider"
msgstr "Добавить в слайдер"
-#: portfolio.php:620 portfolio.php:679 portfolio.php:720 portfolio.php:761
+#: portfolio.php:648 portfolio.php:711 portfolio.php:754 portfolio.php:797
msgid "Learn More"
msgstr "Подробнее"
-#: portfolio.php:660
+#: portfolio.php:692
msgid "All Categories"
msgstr "Все Категории"
-#: portfolio.php:661 portfolio.php:701 portfolio.php:742
+#: portfolio.php:693 portfolio.php:735 portfolio.php:778
msgid "Most Used"
msgstr "Наиболее используемые"
-#: portfolio.php:666 portfolio.php:672 portfolio.php:706 portfolio.php:747
+#: portfolio.php:698 portfolio.php:704 portfolio.php:740 portfolio.php:783
msgid "Uncatgorized"
msgstr "Без категории"
-#: portfolio.php:700
+#: portfolio.php:734
msgid "All Sectors"
msgstr "Все отрасли"
-#: portfolio.php:712 portfolio.php:713
+#: portfolio.php:746 portfolio.php:747
msgid "Sector"
msgstr "Отрасль"
-#: portfolio.php:741
+#: portfolio.php:777
msgid "All Services"
msgstr "Все услуги"
-#: portfolio.php:753 portfolio.php:754
+#: portfolio.php:789 portfolio.php:790
msgid "Service"
msgstr "Услуга"
-#: portfolio.php:773
+#: portfolio.php:814
msgid "Please enable JavaScript to add or delete images."
msgstr ""
"Пожалуйста, включите javascript для добавления или удаления изображений."
-#: portfolio.php:809
+#: portfolio.php:851 portfolio.php:867
msgid "Delete image"
msgstr "Удалить изображение"
-#: portfolio.php:809
+#: portfolio.php:851 portfolio.php:867
msgid "Delete"
msgstr "Удалить"
-#: portfolio.php:823
+#: portfolio.php:867
+msgid "Add Images to Portfolio"
+msgstr "Добавить изображения в портфолио"
+
+#: portfolio.php:867
+msgid "Add to portfolio"
+msgstr "Добавить в портфолио"
+
+#: portfolio.php:867
msgid "Add images"
msgstr "Добавить изображение"
-#: portfolio.php:1020 portfolio.php:1174 portfolio.php:1732 portfolio.php:1866
+#: portfolio.php:1080 portfolio.php:1246 portfolio.php:1925 portfolio.php:2071
msgid "No title"
msgstr "Без названия"
-#: portfolio.php:1193 portfolio.php:1919
+#: portfolio.php:1265 portfolio.php:2134
msgid "Read more"
msgstr "Подробнее"
-#: portfolio.php:1205 portfolio.php:1928 portfolio.php:2132
+#: portfolio.php:1277 portfolio.php:2147 portfolio.php:2403
#, php-format
msgid "View all projects in %s"
msgstr "Посмотреть все проекты в %s"
-#: portfolio.php:1244
+#: portfolio.php:1329
msgid "Updating images..."
msgstr "Обновление изображений..."
-#: portfolio.php:1245
+#: portfolio.php:1330
msgid "No image found."
msgstr "Изображения не найдены."
-#: portfolio.php:1246
+#: portfolio.php:1331
msgid "All images are updated."
msgstr "Все изображения были обновлены."
-#: portfolio.php:1247
+#: portfolio.php:1333
msgid "Error:"
msgstr "Ошибка:"
-#: portfolio.php:1487
+#: portfolio.php:1636
msgid "Image size not defined"
msgstr "Невозможно определить размер изображения"
-#: portfolio.php:1502
+#: portfolio.php:1651
msgid ""
"We can update only PNG, JPEG, GIF, WPMP or XBM filetype. For other image "
"formats, please manually reload image."
@@ -823,27 +845,27 @@
"Плагин может обновить только PNG, JPEG, GIF, XBM или WPMP типы файлов. Для "
"других, пожалуйста, вручную перезагрузите изображения."
-#: portfolio.php:1512
+#: portfolio.php:1661
msgid "Image size changes not defined"
msgstr "Не удалось вычислить изменения размеров изображения"
-#: portfolio.php:1540 portfolio.php:1544 portfolio.php:1550
+#: portfolio.php:1692 portfolio.php:1696 portfolio.php:1702
msgid "Invalid path"
msgstr "Некорректный путь к изображениям"
-#: portfolio.php:1635
+#: portfolio.php:1810
msgid "FAQ"
msgstr "FAQ"
-#: portfolio.php:1636
+#: portfolio.php:1811
msgid "Support"
msgstr "Поддержка"
-#: portfolio.php:1688
+#: portfolio.php:1876
msgid "ATTENTION!"
msgstr "ВНИМАНИЕ!"
-#: portfolio.php:1689
+#: portfolio.php:1877
msgid ""
"In the current version of Portfolio plugin we updated the Technologies "
"widget. If it was added to the sidebar, it will disappear and you will have "
@@ -853,29 +875,16 @@
"если он у вас уже был добавлен в сайдбар, то после обновления он пропадет, и "
"вам нужно будет его заново добавить."
-#: portfolio.php:1693
+#: portfolio.php:1881
msgid "Read and Understood"
msgstr "Ознакомлен"
-#: portfolio.php:2202
+#: portfolio.php:2500
msgid "The number of portfolio projects to display"
msgstr "Количество проектов портфолио для отображения"
-#: portfolio.php:2376
-msgid "Latest Portfolio Items"
-msgstr "Последние проекты портфолио"
-
-#: portfolio.php:2377
-msgid "Displays the latest Portfolio projects."
-msgstr "Отображение последних проектов портфолио."
-
-#: portfolio.php:2412
-msgid "Number of Projects:"
-msgstr "Количество проектов:"
-
-#: portfolio.php:2418
-msgid "Number of Colums:"
-msgstr "Количество столбцов:"
+#~ msgid "Ativate Now"
+#~ msgstr "Активировать сейчас"
#~ msgid "SVN URL"
#~ msgstr "Путь к SVN"
@@ -1183,9 +1192,6 @@
#~ "настройки плагина будут перезаписаны, однако, при удалении демо-данных, "
#~ "они будут восстановлены."
-#~ msgid "Add New Portfolio"
-#~ msgstr "Добавить новое Portfolio"
-
#~ msgid "Edit Portfolio"
#~ msgstr "Редактировать Portfolio"
Binary file wp/wp-content/plugins/portfolio/languages/portfolio-uk.mo has changed
--- a/wp/wp-content/plugins/portfolio/languages/portfolio-uk.po Fri Sep 05 18:52:52 2025 +0200
+++ b/wp/wp-content/plugins/portfolio/languages/portfolio-uk.po Mon Sep 08 19:44:41 2025 +0200
@@ -2,144 +2,144 @@
msgstr ""
"Project-Id-Version: portfolio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-10-04 12:20+0300\n"
-"PO-Revision-Date: 2021-10-04 12:21+0300\n"
+"POT-Creation-Date: 2024-12-24 14:50+0200\n"
+"PO-Revision-Date: 2024-12-24 14:50+0200\n"
"Last-Translator: bestwebsoft.com <plugins@bestwebsoft.com>\n"
"Language-Team: BestWebSoft <plugin@bestwebsoft.com>\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-KeywordsList: __;_e\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Poedit-KeywordsList: __;_e;esc_html_e;esc_htm__;esc_attr_e;esc_attr__\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SourceCharset: UTF-8\n"
-"X-Generator: Poedit 2.3\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Poedit 3.5\n"
"X-Poedit-SearchPath-0: .\n"
"X-Poedit-SearchPathExcluded-0: bws_menu\n"
-#: inc/class-prtfl-settings.php:24 portfolio.php:40 portfolio.php:1633
-#: portfolio.php:1651
+#: includes/class-portfolio-technologies-widget.php:20
+#: includes/class-prtfl-settings.php:108 portfolio.php:369 portfolio.php:383
+#: portfolio.php:1271
+msgid "Technologies"
+msgstr "Технології"
+
+#: includes/class-portfolio-technologies-widget.php:21
+msgid "The tag cloud with your most used portfolio technologies."
+msgstr "Хмара тегів з технологій плагіну Portfolio."
+
+#: includes/class-portfolio-technologies-widget.php:73
+#: includes/class-prtfl-settings.php:430 includes/class-prtfl-widget.php:56
+msgid "Title"
+msgstr "Назва"
+
+#: includes/class-prtfl-settings.php:50 portfolio.php:42 portfolio.php:1808
+#: portfolio.php:1835
msgid "Settings"
msgstr "Налаштування"
-#: inc/class-prtfl-settings.php:25 portfolio.php:269
+#: includes/class-prtfl-settings.php:51 portfolio.php:292
msgid "Project"
msgstr "Проект"
-#: inc/class-prtfl-settings.php:26
+#: includes/class-prtfl-settings.php:52
msgid "Misc"
msgstr "Різне"
-#: inc/class-prtfl-settings.php:27
+#: includes/class-prtfl-settings.php:53
msgid "Custom Code"
msgstr "Користувацький код"
-#: inc/class-prtfl-settings.php:28
+#: includes/class-prtfl-settings.php:54
msgid "Import / Export"
msgstr "Імпорт / Експорт"
-#: inc/class-prtfl-settings.php:29
+#: includes/class-prtfl-settings.php:55
msgid "License Key"
msgstr "Ліцензійний ключ"
-#: inc/class-prtfl-settings.php:79 portfolio.php:314 portfolio.php:328
+#: includes/class-prtfl-settings.php:107 portfolio.php:337 portfolio.php:351
msgid "Executors"
msgstr "Виконавці"
-#: inc/class-prtfl-settings.php:80 portfolio.php:346 portfolio.php:360
-#: portfolio.php:455 portfolio.php:1199
-msgid "Technologies"
-msgstr "Технології"
-
-#: inc/class-prtfl-settings.php:81 portfolio.php:89
+#: includes/class-prtfl-settings.php:109 portfolio.php:88
msgid "Date of completion"
msgstr "Дата завершення"
-#: inc/class-prtfl-settings.php:82
+#: includes/class-prtfl-settings.php:110
msgid "Link"
msgstr "Посилання"
-#: inc/class-prtfl-settings.php:83
+#: includes/class-prtfl-settings.php:111
msgid "Short Description"
msgstr "Короткий опис"
-#: inc/class-prtfl-settings.php:84
+#: includes/class-prtfl-settings.php:112
msgid "Description"
msgstr "Опис"
-#: inc/class-prtfl-settings.php:156
+#: includes/class-prtfl-settings.php:188
msgid "Custom image size was changed. You need to update project images."
msgstr ""
"Власний розмір зображення змінено. Вам потрібно оновити зображення проекту."
-#: inc/class-prtfl-settings.php:248
+#: includes/class-prtfl-settings.php:288
msgid "Settings saved."
msgstr "Налаштування збережено."
-#: inc/class-prtfl-settings.php:260
+#: includes/class-prtfl-settings.php:301
msgid "Please enable JavaScript in Your browser."
msgstr "Будь ласка, увімкніть використання JavaScript у вашому браузері."
-#: inc/class-prtfl-settings.php:265
+#: includes/class-prtfl-settings.php:306
msgid "Update Images"
msgstr "Оновити зображення"
-#: inc/class-prtfl-settings.php:278 portfolio.php:40 portfolio.php:416
+#: includes/class-prtfl-settings.php:325 portfolio.php:42 portfolio.php:439
msgid "Portfolio Settings"
msgstr "Налаштування Portfolio"
-#: inc/class-prtfl-settings.php:283
+#: includes/class-prtfl-settings.php:330
msgid "Portfolio Page"
msgstr "Сторінка портфоліо"
-#: inc/class-prtfl-settings.php:291
+#: includes/class-prtfl-settings.php:342
msgid "Base page where all existing projects will be displayed."
msgstr "Базова сторінка, на якій будуть відображені всі існуючі проекти."
-#: inc/class-prtfl-settings.php:295
+#: includes/class-prtfl-settings.php:346
msgid "Number of Columns"
msgstr "Кількість колонок"
-#: inc/class-prtfl-settings.php:297 inc/class-prtfl-settings.php:304
+#: includes/class-prtfl-settings.php:348 includes/class-prtfl-settings.php:355
msgid "columns"
msgstr "колонок"
-#: inc/class-prtfl-settings.php:298
-#, php-format
-msgid "Number of portfolio columns (default is %s)."
-msgstr "Кількість колонок portfolio (за замовчуванням - %s)."
-
-#: inc/class-prtfl-settings.php:302
+#: includes/class-prtfl-settings.php:353
msgid "Number of Image Columns"
msgstr "Кількість колонок зображень"
-#: inc/class-prtfl-settings.php:305
-#, php-format
-msgid "Number of image columns (default is %s)."
-msgstr "Кількість колонок зображень (за замовчуванням - %s)."
-
-#: inc/class-prtfl-settings.php:309
+#: includes/class-prtfl-settings.php:360
msgid "Image Size"
msgstr "Розмір зображення"
-#: inc/class-prtfl-settings.php:315 inc/class-prtfl-settings.php:333
+#: includes/class-prtfl-settings.php:366 includes/class-prtfl-settings.php:384
msgid "Custom"
msgstr "Користувацький"
-#: inc/class-prtfl-settings.php:317
+#: includes/class-prtfl-settings.php:368
msgid ""
"Maximum portfolio image size. \"Custom\" uses the Image Dimensions values."
msgstr ""
"Максимальний розмір зображень портфоліо. Користувацький використовує "
"значення, зазначені в полі Розміри зображення."
-#: inc/class-prtfl-settings.php:321
+#: includes/class-prtfl-settings.php:372
msgid "Custom Image Size"
msgstr "Користувацький розмір зображення"
-#: inc/class-prtfl-settings.php:323
+#: includes/class-prtfl-settings.php:374
msgid ""
"Adjust these values based on the number of columns in your project. This "
"won't affect the full size of your images in the lightbox."
@@ -147,143 +147,139 @@
"Налаштуйте ці значення з урахуванням числа колонок у вашому проекті. Це не "
"впливає на розміри повного зображення в лайтбоксі."
-#: inc/class-prtfl-settings.php:327
+#: includes/class-prtfl-settings.php:378
msgid "Cover Image Size"
msgstr "Розмір зображення альбому"
-#: inc/class-prtfl-settings.php:335
+#: includes/class-prtfl-settings.php:386
msgid "Maximum cover image size. \"Custom\" uses the Image Dimensions values."
msgstr ""
"Максимальний розмір зображень альбому. \"Користувацький\" використовує "
"значення, зазначені в полі Розміри зображення."
-#: inc/class-prtfl-settings.php:339
+#: includes/class-prtfl-settings.php:390
msgid "Custom Cover Image Size"
msgstr "Користувацький розмір зображення альбому"
-#: inc/class-prtfl-settings.php:348 inc/class-prtfl-settings.php:404
-#: inc/class-prtfl-settings.php:514
+#: includes/class-prtfl-settings.php:399 includes/class-prtfl-settings.php:455
+#: includes/class-prtfl-settings.php:570
msgid "Close"
msgstr "Закрити"
-#: inc/class-prtfl-settings.php:352
+#: includes/class-prtfl-settings.php:403
msgid "Slider Image Size"
msgstr "Розмір слайдера"
-#: inc/class-prtfl-settings.php:357
+#: includes/class-prtfl-settings.php:408
msgid "Maximum slider image size. \"Custom\" uses the Image Dimensions values."
msgstr ""
"Максимальний розмір зображень слайдера. \"Користувацький\" використовує "
"значення, зазначені в полі Розміри зображення."
-#: inc/class-prtfl-settings.php:361
+#: includes/class-prtfl-settings.php:412
msgid "Sort Projects Option"
msgstr "Сортувати проекти за"
-#: inc/class-prtfl-settings.php:364
+#: includes/class-prtfl-settings.php:415
msgid "Enable to display sort projects manually by date or title."
msgstr "Увімкнути відображення проектів сортування вручну за датою чи назвою."
-#: inc/class-prtfl-settings.php:375
+#: includes/class-prtfl-settings.php:426
msgid "Sort Projects by"
msgstr "Сортувати проекти за"
-#: inc/class-prtfl-settings.php:378
+#: includes/class-prtfl-settings.php:429
msgid "Project ID"
msgstr "ID проекту"
-#: inc/class-prtfl-settings.php:379 portfolio.php:481 portfolio.php:2406
-msgid "Title"
-msgstr "Назва"
-
-#: inc/class-prtfl-settings.php:380
+#: includes/class-prtfl-settings.php:431
msgid "Date"
msgstr "Дата"
-#: inc/class-prtfl-settings.php:381
+#: includes/class-prtfl-settings.php:432
msgid "Last modified date"
msgstr "Дата останньої зміни"
-#: inc/class-prtfl-settings.php:382
+#: includes/class-prtfl-settings.php:433
msgid "Comment count"
msgstr "Кількість коментарів"
-#: inc/class-prtfl-settings.php:383
+#: includes/class-prtfl-settings.php:434
msgid "Sorting order (the input field for sorting order)"
msgstr "Порядок сортування (поле введення для сортування)"
-#: inc/class-prtfl-settings.php:384
+#: includes/class-prtfl-settings.php:435
msgid "Author"
msgstr "Автор"
-#: inc/class-prtfl-settings.php:385
+#: includes/class-prtfl-settings.php:436
msgid "Random"
msgstr "Довільно"
-#: inc/class-prtfl-settings.php:387
+#: includes/class-prtfl-settings.php:438
msgid "Select projects sorting order in your portfolio page."
msgstr "Оберіть порядок сортування проектів на сторінці портфоліо."
-#: inc/class-prtfl-settings.php:391
+#: includes/class-prtfl-settings.php:442
msgid "Arrange Projects by"
msgstr "Сортування проектів за"
-#: inc/class-prtfl-settings.php:394
+#: includes/class-prtfl-settings.php:445
msgid "Ascending (e.g. 1, 2, 3; a, b, c)"
msgstr "За зростанням (наприклад, 1, 2, 3; а, б, в)"
-#: inc/class-prtfl-settings.php:396
+#: includes/class-prtfl-settings.php:447
msgid "Descending (e.g. 3, 2, 1; c, b, a)"
msgstr "За зменшенням (наприклад, 3, 2, 1; в, б, а)"
-#: inc/class-prtfl-settings.php:408
+#: includes/class-prtfl-settings.php:459
msgid "Lightbox Helper"
msgstr "Допоміжний елемент лайтбоксу"
-#: inc/class-prtfl-settings.php:410
+#: includes/class-prtfl-settings.php:461
msgid "Enable to use a lightbox helper navigation between images."
msgstr ""
"Дозволити використовувати допоміжні елементи лайтбоксу для навігації між "
"зображеннями."
-#: inc/class-prtfl-settings.php:414
+#: includes/class-prtfl-settings.php:465
msgid "Lightbox Helper Type"
msgstr "Тип допоміжного елементу лайтбоксу"
-#: inc/class-prtfl-settings.php:417
+#: includes/class-prtfl-settings.php:468
msgid "Thumbnails"
msgstr "Мініатюри"
-#: inc/class-prtfl-settings.php:418
+#: includes/class-prtfl-settings.php:469
msgid "Buttons"
msgstr "Кнопки"
-#: inc/class-prtfl-settings.php:429
+#: includes/class-prtfl-settings.php:480
msgid "Text Link"
msgstr "Текстове посилання"
-#: inc/class-prtfl-settings.php:432
+#: includes/class-prtfl-settings.php:483
msgid "Enable to display link field as a text for non-registered users."
msgstr ""
"Увімкнути показ поля посилання як тексту для незареєстрованих користувачів."
-#: inc/class-prtfl-settings.php:437
+#: includes/class-prtfl-settings.php:488
msgid "Automatic Mailout when Publishing a New:"
msgstr "Автоматичне виправлення при публікації нового:"
-#: inc/class-prtfl-settings.php:443 portfolio.php:268
+#: includes/class-prtfl-settings.php:496 portfolio.php:291
msgid "Projects"
msgstr "Проекти"
-#: inc/class-prtfl-settings.php:450
+#: includes/class-prtfl-settings.php:504
msgid "Select mailout priority"
msgstr "Виберіть пріоритет виправлення"
-#: inc/class-prtfl-settings.php:451
+#: includes/class-prtfl-settings.php:506
msgid "Less number - higher priority"
msgstr "Менше число - вищий пріоритет"
-#: inc/class-prtfl-settings.php:457 inc/class-prtfl-settings.php:461
+#: includes/class-prtfl-settings.php:512 includes/class-prtfl-settings.php:518
msgid ""
"Enable to automatic mailout when publishing a new bws-portfolios and tips. "
"Sender Pro plugin is required."
@@ -291,59 +287,59 @@
"Увімкніть автоматичну розсилку під час публікації нових bws-портфоліо та "
"порад. Потрібен плагін Sender Pro."
-#: inc/class-prtfl-settings.php:457
-msgid "Ativate Now"
+#: includes/class-prtfl-settings.php:512 includes/class-prtfl-settings.php:663
+msgid "Activate Now"
msgstr "Активувати зараз"
-#: inc/class-prtfl-settings.php:461 inc/class-prtfl-settings.php:619
+#: includes/class-prtfl-settings.php:518 includes/class-prtfl-settings.php:679
msgid "Install Now"
msgstr "Встановити зараз"
-#: inc/class-prtfl-settings.php:474
+#: includes/class-prtfl-settings.php:533
msgid "Single Project Settings"
msgstr "Налаштування єдиного проекту"
-#: inc/class-prtfl-settings.php:479 inc/class-prtfl-settings.php:518
+#: includes/class-prtfl-settings.php:538 includes/class-prtfl-settings.php:574
msgid "Projects Fields"
msgstr "Поля проектів"
-#: inc/class-prtfl-settings.php:493 portfolio.php:99
+#: includes/class-prtfl-settings.php:550 portfolio.php:98
msgid "Source Files, URL"
msgstr "Вихідні файли, URL"
-#: inc/class-prtfl-settings.php:497
+#: includes/class-prtfl-settings.php:553
msgid "Display only for logged-in users"
msgstr "Відображати лише для зареєстрованих користувачів"
-#: inc/class-prtfl-settings.php:503 inc/class-prtfl-settings.php:541
+#: includes/class-prtfl-settings.php:559 includes/class-prtfl-settings.php:593
msgid "\"More screenshots\" block"
msgstr "Блок \"Більше скріншотів\""
-#: inc/class-prtfl-settings.php:523 inc/class-prtfl-settings.php:524
-#: portfolio.php:579
+#: includes/class-prtfl-settings.php:578 includes/class-prtfl-settings.php:579
+#: portfolio.php:599
msgid "Categories"
msgstr "Категорії"
-#: inc/class-prtfl-settings.php:528 inc/class-prtfl-settings.php:529
-#: portfolio.php:580
+#: includes/class-prtfl-settings.php:582 includes/class-prtfl-settings.php:583
+#: portfolio.php:600
msgid "Sectors"
msgstr "Сектори"
-#: inc/class-prtfl-settings.php:533 inc/class-prtfl-settings.php:534
-#: portfolio.php:581
+#: includes/class-prtfl-settings.php:586 includes/class-prtfl-settings.php:587
+#: portfolio.php:601
msgid "Services"
msgstr "Послуги"
-#: inc/class-prtfl-settings.php:538 inc/class-prtfl-settings.php:539
-#: portfolio.php:603
+#: includes/class-prtfl-settings.php:590 includes/class-prtfl-settings.php:591
+#: portfolio.php:629
msgid "Client"
msgstr "Клієнт"
-#: inc/class-prtfl-settings.php:558
+#: includes/class-prtfl-settings.php:612
msgid "Demo Data"
msgstr "Демо-дані"
-#: inc/class-prtfl-settings.php:560
+#: includes/class-prtfl-settings.php:614
msgid ""
"Install demo data to create portfolio projects with images, post with "
"shortcodes and page with a list of all portfolio projects."
@@ -351,11 +347,11 @@
"Встановіть демо-дані, щоб створити проекти портфоліо із зображеннями, запис "
"з шорткодами і сторінку зі списком усіх проектів портфоліо."
-#: inc/class-prtfl-settings.php:580
+#: includes/class-prtfl-settings.php:637
msgid "Portfolio Post Type"
msgstr "Тип запису портфоліо"
-#: inc/class-prtfl-settings.php:584
+#: includes/class-prtfl-settings.php:641
msgid ""
"Enable to avoid conflicts with other portfolio plugins installed. All "
"portfolio created earlier will stay unchanged. However, after enabling we "
@@ -367,36 +363,27 @@
"перейменування перевірте, будь ласка, налаштування інших плагінів, де "
"використовується тип запису \"portfolio\"."
-#: inc/class-prtfl-settings.php:590
+#: includes/class-prtfl-settings.php:647
msgid "Portfolio Slug"
msgstr "Слаґ портфоліо"
-#: inc/class-prtfl-settings.php:593
+#: includes/class-prtfl-settings.php:650
msgid "Enter the unique portfolio slug."
msgstr "Введіть унікальний слаґ портфоліо."
-#: inc/class-prtfl-settings.php:597
+#: includes/class-prtfl-settings.php:654
msgid "Search Portfolio Projects"
msgstr "Шукати проекти портфоліо"
-#: inc/class-prtfl-settings.php:603
-msgid "Activate Now"
-msgstr "Активувати зараз"
-
-#: inc/class-prtfl-settings.php:622
+#: includes/class-prtfl-settings.php:683
msgid "Enable to include portfolio projects to your website search."
msgstr "Включити проекти портфоліо в пошук на вашому сайті."
-#: inc/class-prtfl-settings.php:622
-#, php-format
-msgid "%s plugin is required."
-msgstr "Потрібен плагін %s."
-
-#: inc/class-prtfl-settings.php:636
+#: includes/class-prtfl-settings.php:698
msgid "Portfolio Shortcode"
msgstr "Шорткод портфоліо"
-#: inc/class-prtfl-settings.php:639
+#: includes/class-prtfl-settings.php:701
msgid ""
"Add the latest portfolio projects using the following shortcode (where * is "
"a number of projects to display):"
@@ -404,415 +391,435 @@
"Додайте останні проекти портфоліо, використовуючи наступний шорткод (де * "
"являє собою кількість проектів для відображення):"
-#: inc/demo-data/class-bws-demo-data.php:31
+#: includes/class-prtfl-widget.php:20
+msgid "Latest Portfolio Items"
+msgstr "Останні проекти портфоліо"
+
+#: includes/class-prtfl-widget.php:21
+msgid "Displays the latest Portfolio projects."
+msgstr "Відображення останніх проектів портфоліо."
+
+#: includes/class-prtfl-widget.php:62
+msgid "Number of Projects:"
+msgstr "Кількість проектів:"
+
+#: includes/class-prtfl-widget.php:68
+msgid "Number of Colums:"
+msgstr "Кількість стовпців:"
+
+#: includes/demo-data/class-bws-demo-data.php:42
msgid "Install Demo Data"
msgstr "Встановити демо-дані"
-#: inc/demo-data/class-bws-demo-data.php:34
+#: includes/demo-data/class-bws-demo-data.php:45
msgid "Remove Demo Data"
msgstr "Видалити демо-дані"
-#: inc/demo-data/class-bws-demo-data.php:35
+#: includes/demo-data/class-bws-demo-data.php:46
msgid "Delete demo data and restore previous plugin settings."
msgstr "Видалити демо-дані та відновити старі налаштування плагіну."
-#: inc/demo-data/class-bws-demo-data.php:48
-#: inc/demo-data/class-bws-demo-data.php:595
+#: includes/demo-data/class-bws-demo-data.php:59
+#: includes/demo-data/class-bws-demo-data.php:593
msgid "Yes, install demo data"
msgstr "Так, встановити демо-дані"
-#: inc/demo-data/class-bws-demo-data.php:49
+#: includes/demo-data/class-bws-demo-data.php:60
msgid "Are you sure you want to install demo data?"
msgstr "Ви впевнені, що бажаєте встановити демо-дані?"
-#: inc/demo-data/class-bws-demo-data.php:51
+#: includes/demo-data/class-bws-demo-data.php:62
msgid "Yes, remove demo data"
msgstr "Так, видалити демо-дані"
-#: inc/demo-data/class-bws-demo-data.php:52
+#: includes/demo-data/class-bws-demo-data.php:63
msgid "Are you sure you want to remove demo data?"
msgstr "Ви впевнені, що бажаєте видалити демо-дані?"
-#: inc/demo-data/class-bws-demo-data.php:59
+#: includes/demo-data/class-bws-demo-data.php:70
msgid "No, go back to the settings page"
msgstr "Ні, повернутися на сторінку налаштувань"
-#: inc/demo-data/class-bws-demo-data.php:115
+#: includes/demo-data/class-bws-demo-data.php:120
msgid "Can not get demo data."
msgstr "Неможливо отримати демо-дані."
-#: inc/demo-data/class-bws-demo-data.php:122
+#: includes/demo-data/class-bws-demo-data.php:127
msgid "Demo settings are already installed."
msgstr "Налаштування демо вже встановлені."
-#: inc/demo-data/class-bws-demo-data.php:362
+#: includes/demo-data/class-bws-demo-data.php:365
msgid "Demo data successfully installed."
msgstr "Демо-дані успішно встановлені."
-#: inc/demo-data/class-bws-demo-data.php:364
+#: includes/demo-data/class-bws-demo-data.php:367
msgid "View post with shortcodes"
msgstr "Перегляньте запис із шорткодами"
-#: inc/demo-data/class-bws-demo-data.php:367
+#: includes/demo-data/class-bws-demo-data.php:370
msgid "View page with examples"
msgstr "Перегляньте запис із прикладами"
-#: inc/demo-data/class-bws-demo-data.php:376
+#: includes/demo-data/class-bws-demo-data.php:381
msgid "Demo data installation proceeded with some errors."
msgstr "Установка демо-даних пройшла із помилками."
-#: inc/demo-data/class-bws-demo-data.php:379
+#: includes/demo-data/class-bws-demo-data.php:384
msgid "Post data is missing."
msgstr "Дані постів відсутні."
-#: inc/demo-data/class-bws-demo-data.php:453
+#: includes/demo-data/class-bws-demo-data.php:456
msgid "Demo data have been already removed."
msgstr "Демо-дані вже видалені."
-#: inc/demo-data/class-bws-demo-data.php:514
+#: includes/demo-data/class-bws-demo-data.php:513
msgid "Demo data successfully removed."
msgstr "Демо-дані успішно видалені."
-#: inc/demo-data/class-bws-demo-data.php:518
+#: includes/demo-data/class-bws-demo-data.php:517
msgid "Removing demo data with some errors occurred."
msgstr "Видалення демо-даних пройшло із помилками."
-#: inc/demo-data/class-bws-demo-data.php:587
+#: includes/demo-data/class-bws-demo-data.php:585
msgid "Close notice"
msgstr "Закрити повідомлення"
-#: inc/demo-data/class-bws-demo-data.php:593
+#: includes/demo-data/class-bws-demo-data.php:591
#, php-format
msgid "Do you want to install demo content and settings for %s now?"
msgstr "Ви хочете встановити демо-контент і налаштування для %s?"
-#: portfolio.php:46
+#: portfolio.php:48
msgid "Upgrade to Pro"
msgstr "Оновитися до Pro"
-#: portfolio.php:84
+#: portfolio.php:83
msgid "Short description"
msgstr "Короткий опис"
-#: portfolio.php:94
+#: portfolio.php:93
msgid "Project, URL"
msgstr "Проект, URL"
-#: portfolio.php:239
+#: portfolio.php:260
msgid "Date of completion:"
msgstr "Дата завершення:"
-#: portfolio.php:240
+#: portfolio.php:261
msgid "Project, URL:"
msgstr "Проект, URL:"
-#: portfolio.php:241
+#: portfolio.php:262
msgid "Short description:"
msgstr "Короткий опис:"
-#: portfolio.php:242
+#: portfolio.php:263
msgid "Description:"
msgstr "Опис:"
-#: portfolio.php:243
+#: portfolio.php:264
msgid "Source Files, URL:"
msgstr "Вихідні файли, URL:"
-#: portfolio.php:244
+#: portfolio.php:265
msgid "Executor:"
msgstr "Виконавець:"
-#: portfolio.php:245
+#: portfolio.php:266
msgid "More screenshots:"
msgstr "Більше скріншотів:"
-#: portfolio.php:246
+#: portfolio.php:267
msgid "Technologies:"
msgstr "Технології:"
-#: portfolio.php:267
+#: portfolio.php:290
msgid "Portfolio"
msgstr "Portfolio"
-#: portfolio.php:270
+#: portfolio.php:293
msgid "Add New"
msgstr "Додати новий"
-#: portfolio.php:271
+#: portfolio.php:294
msgid "Add New Project"
msgstr "Додати новий проект"
-#: portfolio.php:272
+#: portfolio.php:295
msgid "Edit"
msgstr "Редагувати"
-#: portfolio.php:273
+#: portfolio.php:296
msgid "Edit Project"
msgstr "Редагувати проект"
-#: portfolio.php:274
+#: portfolio.php:297
msgid "New Project"
msgstr "Новий проект"
-#: portfolio.php:275 portfolio.php:276
+#: portfolio.php:298 portfolio.php:299
msgid "View Project"
msgstr "Перегляд проекту"
-#: portfolio.php:277
+#: portfolio.php:300
msgid "Search Projects"
msgstr "Шукати проекти"
-#: portfolio.php:278
+#: portfolio.php:301
msgid "No project found"
msgstr "Проекти не знайдено"
-#: portfolio.php:279
+#: portfolio.php:302
msgid "No project found in Trash"
msgstr "В кошику не знайдено жодного проекту"
-#: portfolio.php:280
+#: portfolio.php:303
msgid "Parent Project"
msgstr "Батьківський проект"
-#: portfolio.php:281
+#: portfolio.php:304
msgid "Filter projects list"
msgstr "Фільтр списоку проектів"
-#: portfolio.php:282
+#: portfolio.php:305
msgid "Projects list navigation"
msgstr "Навігація списку проектів"
-#: portfolio.php:283
+#: portfolio.php:306
msgid "Projects list"
msgstr "Список проектів"
-#: portfolio.php:285
+#: portfolio.php:308
msgid "Create a project item"
msgstr "Додати проект"
-#: portfolio.php:315
+#: portfolio.php:338
msgid "Executor"
msgstr "Виконавець"
-#: portfolio.php:316
+#: portfolio.php:339
msgid "Search Executors"
msgstr "Пошук Виконавців"
-#: portfolio.php:317
+#: portfolio.php:340
msgid "Popular Executors"
msgstr "Популярні Виконавці"
-#: portfolio.php:318
+#: portfolio.php:341
msgid "All Executors"
msgstr "Всі Виконавці"
-#: portfolio.php:319
+#: portfolio.php:342
msgid "Parent Executor"
msgstr "Батьківський Виконавець"
-#: portfolio.php:320
+#: portfolio.php:343
msgid "Parent Executor:"
msgstr "Батьківський Виконавець:"
-#: portfolio.php:321
+#: portfolio.php:344
msgid "Edit Executor"
msgstr "Редагувати Виконавця"
-#: portfolio.php:322
+#: portfolio.php:345
msgid "Update Executor"
msgstr "Оновити Виконавця"
-#: portfolio.php:323
+#: portfolio.php:346
msgid "Add New Executor"
msgstr "Додати нового Виконавця"
-#: portfolio.php:324
+#: portfolio.php:347
msgid "New Executor Name"
msgstr "Ім’я нового Виконавця"
-#: portfolio.php:325
+#: portfolio.php:348
msgid "Separate executors with commas"
msgstr "Відокремити виконавців комами"
-#: portfolio.php:326
+#: portfolio.php:349
msgid "Add or remove Executor"
msgstr "Додати або видалити Виконавця"
-#: portfolio.php:327
+#: portfolio.php:350
msgid "Choose from the most used Executors"
msgstr "Оберіть одного з виконавців, що використовуються найчастіше"
-#: portfolio.php:329
+#: portfolio.php:352
msgid "Executors list navigation"
msgstr "Навігація списку виконавців"
-#: portfolio.php:330
+#: portfolio.php:353
msgid "Executors list"
msgstr "Список виконавців"
-#: portfolio.php:347
+#: portfolio.php:370
msgid "Technology"
msgstr "Технологія"
-#: portfolio.php:348
+#: portfolio.php:371
msgid "Search Technologies"
msgstr "Пошук Технологій"
-#: portfolio.php:349
+#: portfolio.php:372
msgid "Popular Technologies"
msgstr "Популярні Технології"
-#: portfolio.php:350
+#: portfolio.php:373
msgid "All Technologies"
msgstr "Всі технології"
-#: portfolio.php:351
+#: portfolio.php:374
msgid "Parent Technology"
msgstr "Батьківська технологія"
-#: portfolio.php:352
+#: portfolio.php:375
msgid "Parent Technology:"
msgstr "Батьківська технологія:"
-#: portfolio.php:353
+#: portfolio.php:376
msgid "Edit Technology"
msgstr "Редагувати технологію"
-#: portfolio.php:354
+#: portfolio.php:377
msgid "Update Technology"
msgstr "Оновити технологію"
-#: portfolio.php:355
+#: portfolio.php:378
msgid "Add New Technology"
msgstr "Додати Нову Технологію"
-#: portfolio.php:356
+#: portfolio.php:379
msgid "New Technology Name"
msgstr "Назва Нової Технології"
-#: portfolio.php:357
+#: portfolio.php:380
msgid "Separate technologies with commas"
msgstr "Відокремити технології комами"
-#: portfolio.php:358
+#: portfolio.php:381
msgid "Add or remove Technology"
msgstr "Додати або видалити Технологію"
-#: portfolio.php:359
+#: portfolio.php:382
msgid "Choose from the most used technologies"
msgstr "Виберіть одну з технологій, що використовуються найчастіше"
-#: portfolio.php:361
+#: portfolio.php:384
msgid "Technologies list navigation"
msgstr "Навігація списку технологій"
-#: portfolio.php:362
+#: portfolio.php:385
msgid "Technologies list"
msgstr "Список технологій"
-#: portfolio.php:456
-msgid "The tag cloud with your most used portfolio technologies."
-msgstr "Хмара тегів з технологій плагіну Portfolio."
-
-#: portfolio.php:574
+#: portfolio.php:594
msgid "Images"
msgstr "Зображення"
-#: portfolio.php:575
+#: portfolio.php:595
msgid "General"
msgstr "Загальне"
-#: portfolio.php:614
+#: portfolio.php:642
msgid "Featured project"
msgstr "Обраний проект"
-#: portfolio.php:616
+#: portfolio.php:644
msgid "Add to slider"
msgstr "Додати в слайдер"
-#: portfolio.php:620 portfolio.php:679 portfolio.php:720 portfolio.php:761
+#: portfolio.php:648 portfolio.php:711 portfolio.php:754 portfolio.php:797
msgid "Learn More"
msgstr "Докладніше"
-#: portfolio.php:660
+#: portfolio.php:692
msgid "All Categories"
msgstr "Всі категорії"
-#: portfolio.php:661 portfolio.php:701 portfolio.php:742
+#: portfolio.php:693 portfolio.php:735 portfolio.php:778
msgid "Most Used"
msgstr "Найбільш використовувані"
-#: portfolio.php:666 portfolio.php:672 portfolio.php:706 portfolio.php:747
+#: portfolio.php:698 portfolio.php:704 portfolio.php:740 portfolio.php:783
msgid "Uncatgorized"
msgstr "Без категорії"
-#: portfolio.php:700
+#: portfolio.php:734
msgid "All Sectors"
msgstr "Всі сектори"
-#: portfolio.php:712 portfolio.php:713
+#: portfolio.php:746 portfolio.php:747
msgid "Sector"
msgstr "Сектор"
-#: portfolio.php:741
+#: portfolio.php:777
msgid "All Services"
msgstr "Всі послуги"
-#: portfolio.php:753 portfolio.php:754
+#: portfolio.php:789 portfolio.php:790
msgid "Service"
msgstr "Послуга"
-#: portfolio.php:773
+#: portfolio.php:814
msgid "Please enable JavaScript to add or delete images."
msgstr ""
"Будь ласка, увімкніть JavaScript для використання опції оновлення зображень."
-#: portfolio.php:809
+#: portfolio.php:867
+msgid "Add Images to Portfolio"
+msgstr "Додати зображення до портфоліо"
+
+#: portfolio.php:867
+msgid "Add to portfolio"
+msgstr "Додати до портфоліо"
+
+#: portfolio.php:867
msgid "Delete image"
msgstr "Видалити зображення"
-#: portfolio.php:809
+#: portfolio.php:867
msgid "Delete"
msgstr "Видалити"
-#: portfolio.php:823
+#: portfolio.php:867
msgid "Add images"
msgstr "Додати зображення"
-#: portfolio.php:1020 portfolio.php:1174 portfolio.php:1732 portfolio.php:1866
+#: portfolio.php:1080 portfolio.php:1246 portfolio.php:2071
msgid "No title"
msgstr "Без назви"
-#: portfolio.php:1193 portfolio.php:1919
+#: portfolio.php:1265 portfolio.php:2134
msgid "Read more"
msgstr "Докладніше"
-#: portfolio.php:1205 portfolio.php:1928 portfolio.php:2132
+#: portfolio.php:1277
#, php-format
msgid "View all projects in %s"
msgstr "Проглянути всі проекти у %s"
-#: portfolio.php:1244
+#: portfolio.php:1329
msgid "Updating images..."
msgstr "Оновлення зображень..."
-#: portfolio.php:1245
+#: portfolio.php:1330
msgid "No image found."
msgstr "Жодного зображення не знайдено."
-#: portfolio.php:1246
+#: portfolio.php:1331
msgid "All images are updated."
msgstr "Всі зображення оновлено."
-#: portfolio.php:1247
+#: portfolio.php:1333
msgid "Error:"
msgstr "Помилка:"
-#: portfolio.php:1487
+#: portfolio.php:1636
msgid "Image size not defined"
msgstr "Розмір зображення не визначено"
-#: portfolio.php:1502
+#: portfolio.php:1651
msgid ""
"We can update only PNG, JPEG, GIF, WPMP or XBM filetype. For other image "
"formats, please manually reload image."
@@ -820,27 +827,27 @@
"Можливе оновлення файлів лише у форматах PNG, JPEG, GIF, WPMP чи XBM. В "
"іншому випадку, будь ласка, перезалийте зображення вручну."
-#: portfolio.php:1512
+#: portfolio.php:1661
msgid "Image size changes not defined"
msgstr "Зміну розміру зображення не визначено"
-#: portfolio.php:1540 portfolio.php:1544 portfolio.php:1550
+#: portfolio.php:1692 portfolio.php:1696 portfolio.php:1702
msgid "Invalid path"
msgstr "Шлях некоректний"
-#: portfolio.php:1635
+#: portfolio.php:1810
msgid "FAQ"
msgstr "FAQ"
-#: portfolio.php:1636
+#: portfolio.php:1811
msgid "Support"
msgstr "Підтримка"
-#: portfolio.php:1688
+#: portfolio.php:1876
msgid "ATTENTION!"
msgstr "УВАГА!"
-#: portfolio.php:1689
+#: portfolio.php:1877
msgid ""
"In the current version of Portfolio plugin we updated the Technologies "
"widget. If it was added to the sidebar, it will disappear and you will have "
@@ -850,29 +857,28 @@
"якщо ви вже додали його до сайдбару, після оновлення він зникне, і вам треба "
"буде додати його знову."
-#: portfolio.php:1693
+#: portfolio.php:1881
msgid "Read and Understood"
msgstr "Ознайомлений"
-#: portfolio.php:2202
+#: portfolio.php:2500
msgid "The number of portfolio projects to display"
msgstr "Кількість проектів портфоліо для відображення"
-#: portfolio.php:2376
-msgid "Latest Portfolio Items"
-msgstr "Останні проекти портфоліо"
-
-#: portfolio.php:2377
-msgid "Displays the latest Portfolio projects."
-msgstr "Відображення останніх проектів портфоліо."
+#, php-format
+#~ msgid "Number of portfolio columns (default is %s)."
+#~ msgstr "Кількість колонок portfolio (за замовчуванням - %s)."
-#: portfolio.php:2412
-msgid "Number of Projects:"
-msgstr "Кількість проектів:"
+#, php-format
+#~ msgid "Number of image columns (default is %s)."
+#~ msgstr "Кількість колонок зображень (за замовчуванням - %s)."
-#: portfolio.php:2418
-msgid "Number of Colums:"
-msgstr "Кількість стовпців:"
+#~ msgid "Ativate Now"
+#~ msgstr "Активувати зараз"
+
+#, php-format
+#~ msgid "%s plugin is required."
+#~ msgstr "Потрібен плагін %s."
#~ msgid "SVN URL"
#~ msgstr "Шлях до SVN"
--- a/wp/wp-content/plugins/portfolio/portfolio.php Fri Sep 05 18:52:52 2025 +0200
+++ b/wp/wp-content/plugins/portfolio/portfolio.php Mon Sep 08 19:44:41 2025 +0200
@@ -6,7 +6,7 @@
Author: BestWebSoft
Text Domain: portfolio
Domain Path: /languages
-Version: 2.57
+Version: 2.58
Author URI: https://bestwebsoft.com/
License: GPLv2 or later
*/
--- a/wp/wp-content/plugins/portfolio/readme.txt Fri Sep 05 18:52:52 2025 +0200
+++ b/wp/wp-content/plugins/portfolio/readme.txt Mon Sep 08 19:44:41 2025 +0200
@@ -1,10 +1,10 @@
=== Portfolio by BestWebSoft - Work and Projects Presentation Plugin for WordPress ===
-Contributors: bestwebsoft
+Contributors: bestweblayout
Donate link: https://bestwebsoft.com/donate/
-Tags: add portfolio, portfolio plugin, add portfolio widget, portfolio, fancybox, showcase, responsive portfolio, portfolio plugin, create portfolio, portfolio categories, project portfolio, portfolio widget, add album
+Tags: add portfolio, portfolio plugin, add portfolio widget, portfolio, fancybox
Requires at least: 5.6
-Tested up to: 6.6
-Stable tag: 2.57
+Tested up to: 6.8
+Stable tag: 2.58
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -169,6 +169,11 @@
== Changelog ==
+= V2.58 - 24.12.2024 =
+* Update : All functionality was updated for WordPress 6.5.
+* Update : BWS plugins section is updated.
+* Bugfix : Bugs has been fixed.
+
= V2.57 - 24.05.2024 =
* Update : All functionality was updated for WordPress 6.5.
* Update : BWS plugins section is updated.
@@ -433,6 +438,10 @@
== Upgrade Notice ==
+= V2.58 =
+* The compatibility with new WordPress version updated.
+* Bug fixed.
+
= V2.57 =
* The compatibility with new WordPress version updated.
* Usability improved.