You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

180 lines
6.5 KiB
PHP

<?php
/**
* Demo_Content class.
*
* Used for getting demo content.
*
* @link https://github.com/googleforcreators/web-stories-wp
*
* @copyright 2020 Google LLC
* @license https://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
*/
/**
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
declare(strict_types = 1);
namespace Google\Web_Stories;
/**
* Demo_Content class.
*/
class Demo_Content {
/**
* Returns the title for the demo story.
*/
public function get_title(): string {
return __( 'Tips to make the most of Web Stories', 'web-stories' );
}
/**
* Returns the content for the demo story.
*/
public function get_content(): string {
$content = $this->load_demo_content_from_file();
$content = $this->localize_texts( $content );
$content = $this->update_assets_urls( $content );
// Quick sanity check to see if the JSON is still valid.
if ( null === json_decode( $content, true ) ) {
return '';
}
return $content;
}
/**
* Updates URLs to media assets in demo content.
*
* @param string $content Original content.
* @return string Modified content.
*/
private function update_assets_urls( string $content ): string {
return str_replace(
'https://replaceme.com/',
trailingslashit( WEBSTORIES_CDN_URL ),
$content
);
}
/**
* Localizes demo content.
*
* @param string $content Original content.
* @return string Localized text.
*/
private function localize_texts( string $content ): string {
$replacements = [
// Page 1.
'L10N_PLACEHOLDER_1_1' => /* translators: demo content used in the "Get Started" story */
esc_html_x( 'Tips to make the most of the Web Stories Editor', 'demo content', 'web-stories' ),
// Page 2.
'L10N_PLACEHOLDER_2_1' => /* translators: demo content used in the "Get Started" story */
esc_html_x( 'Set a page background', 'demo content', 'web-stories' ),
'L10N_PLACEHOLDER_2_2' => /* translators: demo content used in the "Get Started" story */
esc_html_x( 'Drag your image or video to the edge of the page to set as page background.', 'demo content', 'web-stories' ),
// Page 3.
'L10N_PLACEHOLDER_3_1' => /* translators: demo content used in the "Get Started" story */
esc_html_x( 'Media Edit Mode', 'demo content', 'web-stories' ),
'L10N_PLACEHOLDER_3_2' => /* translators: demo content used in the "Get Started" story */
esc_html_x( 'Double-click the image/video to resize, re-center or crop. Note: media set as page background cannot be cropped.', 'demo content', 'web-stories' ),
// Page 4.
'L10N_PLACEHOLDER_4_1' => /* translators: demo content used in the "Get Started" story */
esc_html_x( 'Background Overlay', 'demo content', 'web-stories' ),
'L10N_PLACEHOLDER_4_2' => /* translators: demo content used in the "Get Started" story */
esc_html_x( 'Once you\'ve set a page bg, add a solid, linear or radial gradient overlay to increase text contrast or add visual styling.', 'demo content', 'web-stories' ),
// Page 5.
'L10N_PLACEHOLDER_5_1' => /* translators: demo content used in the "Get Started" story */
esc_html_x( 'Safe Zone', 'demo content', 'web-stories' ),
'L10N_PLACEHOLDER_5_2' => /* translators: demo content used in the "Get Started" story */
esc_html_x( 'Add your designs to the page, keeping crucial elements inside the safe zone to ensure they are visible across most devices.', 'demo content', 'web-stories' ),
// Page 6.
'L10N_PLACEHOLDER_6_1' => /* translators: demo content used in the "Get Started" story */
esc_html_x( 'Story System Layer', 'demo content', 'web-stories' ),
'L10N_PLACEHOLDER_6_2' => /* translators: demo content used in the "Get Started" story */
esc_html_x( 'The system layer is docked at the top. Preview your story to ensure system layer icons are not blocking crucial elements.', 'demo content', 'web-stories' ),
// Page 7.
'L10N_PLACEHOLDER_7_1' => /* translators: demo content used in the "Get Started" story */
esc_html_x( 'Shapes and Masks', 'demo content', 'web-stories' ),
'L10N_PLACEHOLDER_7_2' => /* translators: demo content used in the "Get Started" story */
esc_html_x( 'Our shapes are quite basic for now but they act as masks. Drag an image or video into the mask.', 'demo content', 'web-stories' ),
// Page 8.
'L10N_PLACEHOLDER_8_1' => /* translators: demo content used in the "Get Started" story */
esc_html_x( 'Embed Visual Stories', 'demo content', 'web-stories' ),
'L10N_PLACEHOLDER_8_2' => /* translators: demo content used in the "Get Started" story */
esc_html_x( 'Embed stories into your blog post. Open the block menu & select the Web Stories block. Insert the story link to embed your story. That\'s it!', 'demo content', 'web-stories' ),
// Page 9.
'L10N_PLACEHOLDER_9_1' => /* translators: demo content used in the "Get Started" story */
esc_html_x( 'Read about best practices for creating successful Web Stories', 'demo content', 'web-stories' ),
'L10N_PLACEHOLDER_9_2' => /* translators: demo content used in the "Get Started" story */
esc_url( _x( 'https://amp.dev/documentation/guides-and-tutorials/start/create_successful_stories/', 'demo content', 'web-stories' ) ),
'L10N_PLACEHOLDER_9_3' => /* translators: demo content used in the "Get Started" story */
esc_html_x( 'Best Practices', 'demo content', 'web-stories' ),
];
foreach ( $replacements as $search => $replacement ) {
$content = str_replace( $search, $replacement, $content );
}
return $content;
}
/**
* Loads demo content from JSON file.
*/
private function load_demo_content_from_file(): string {
$file = WEBSTORIES_PLUGIN_DIR_PATH . 'includes/data/stories/demo.json';
if ( ! is_readable( $file ) ) {
return '';
}
$content = file_get_contents( $file ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents, WordPressVIPMinimum.Performance.FetchingRemoteData.FileGetContentsUnknown
if ( ! $content ) {
return '';
}
return $content;
}
}