Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,14 +57,15 @@ Social
5. Facebook
6. Instagram
7. Linked In
8. YouTube

Elements

8. Entry
9. Category
10. User
11. Asset
12. Product
9. Entry
10. Category
11. User
12. Asset
13. Product

Each link type has additional option to allow further customisation. For example, the User link type allows you to set a default path...

Expand Down
60 changes: 60 additions & 0 deletions src/models/YouTube.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<?php
namespace fruitstudios\linkit\models;

use Craft;

use fruitstudios\linkit\Linkit;
use fruitstudios\linkit\base\Link;
use fruitstudios\linkit\validators\UrlValidator;

class YouTube extends Link
{
// Private
// =========================================================================

private $_match = '/^http(?:s)?:\/\/(?:www\.)?(youtube\.com|youtu\.?be)\/([a-zA-Z0-9_]+)/';

// Static
// =========================================================================

public static function group(): string
{
return Craft::t('linkit', 'Social');
}

public static function defaultLabel(): string
{
return Craft::t('linkit', 'YouTube');
}

public static function defaultPlaceholder(): string
{
return Craft::t('linkit', 'https://youtube.com/CraftCMS');
}

// Public Methods
// =========================================================================

public function getUrl(): string
{
return (string) $this->value;
}

public function rules()
{
$rules = parent::rules();
$rules[] = [
['value'],
UrlValidator::class,
'defaultScheme' => 'https',
'message' => Craft::t('linkit', 'Please enter a valid url.')
];
$rules[] = [
['value'],
'match',
'pattern' => $this->_match,
'message' => Craft::t('linkit', 'Please enter a valid YouTube link.')
];
return $rules;
}
}
2 changes: 2 additions & 0 deletions src/services/LinkitService.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
use fruitstudios\linkit\models\Facebook;
use fruitstudios\linkit\models\LinkedIn;
use fruitstudios\linkit\models\Instagram;
use fruitstudios\linkit\models\YouTube;

use Craft;
use craft\base\Component;
Expand Down Expand Up @@ -45,6 +46,7 @@ public function getAvailableLinkTypes()
$linkTypes[] = new Facebook();
$linkTypes[] = new Instagram();
$linkTypes[] = new LinkedIn();
$linkTypes[] = new YouTube();

// Element link types
$linkTypes[] = new Entry();
Expand Down