From c43fccf297b66a70dcbce68f2e297dd00aa65b76 Mon Sep 17 00:00:00 2001 From: Dmitriy Simushev Date: Wed, 12 Nov 2014 10:24:40 +0000 Subject: [PATCH] Use CanteenHTML5 for buttons generation --- src/composer.json | 3 +- .../Mibew/Button/Generator/ImageGenerator.php | 42 ++++++++++++------ .../Generator/OperatorCodeGenerator.php | 42 +++++++++++++----- .../Mibew/Button/Generator/TextGenerator.php | 44 +++++++++++++------ 4 files changed, 91 insertions(+), 40 deletions(-) diff --git a/src/composer.json b/src/composer.json index dab27a7b..a6716fcb 100644 --- a/src/composer.json +++ b/src/composer.json @@ -24,7 +24,8 @@ "symfony/config": "2.5.*", "symfony/yaml": "2.5.*", "symfony/translation": "2.5.*", - "tedivm/stash": "0.12.*" + "tedivm/stash": "0.12.*", + "canteen/html5": "1.1.*" }, "require-dev": { "squizlabs/php_codesniffer": "1.*" diff --git a/src/mibew/libs/classes/Mibew/Button/Generator/ImageGenerator.php b/src/mibew/libs/classes/Mibew/Button/Generator/ImageGenerator.php index 507286e5..e478778b 100644 --- a/src/mibew/libs/classes/Mibew/Button/Generator/ImageGenerator.php +++ b/src/mibew/libs/classes/Mibew/Button/Generator/ImageGenerator.php @@ -19,6 +19,7 @@ namespace Mibew\Button\Generator; +use Canteen\HTML5; use Mibew\Asset\Generator\UrlGeneratorInterface as AssetUrlGeneratorInterface; use Mibew\Routing\Generator\SecureUrlGeneratorInterface as RouteUrlGeneratorInterface; use Mibew\Settings; @@ -74,14 +75,20 @@ class ImageGenerator extends TextGenerator '&', $this->generateUrl('button', $image_link_args) ); - $message = "\"\"/"; + $image = HTML5\html('img'); + $image->setAttributes(array( + 'src' => $image_url, + 'border' => 0, + 'alt' => '', + )); - $button = "" - . $this->getPopup($message) - . $this->getWidgetCode() - . ""; + $button = HTML5\html('fragment'); + $button->addChild(HTML5\html('comment', 'mibew button')); + $button->addChild($this->getPopup($image)); + $button->addChild($this->getWidgetCode()); + $button->addChild(HTML5\html('comment', '/ mibew button')); - return $button; + return (string)$button; } /** @@ -140,13 +147,20 @@ class ImageGenerator extends TextGenerator // blocked $widget_data['visitorCookieName'] = VISITOR_COOKIE_NAME; - // Build additional button code - return '
' - . '' - . ''; + $markup = HTML5\html('fragment'); + $markup->addChild(HTML5\html('div#mibewinvitation')); + $markup->addChild( + HTML5\html('script')->setAttributes(array( + 'type' => 'text/javascript', + 'src' => $this->generateAssetUrl('js/compiled/widget.js'), + )) + ); + $markup->addChild( + HTML5\html('script') + ->setAttribute('type', 'text/javascript') + ->addChild('Mibew.Widget.init(' . json_encode($widget_data) . ')') + ); + + return $markup; } } diff --git a/src/mibew/libs/classes/Mibew/Button/Generator/OperatorCodeGenerator.php b/src/mibew/libs/classes/Mibew/Button/Generator/OperatorCodeGenerator.php index 29c83be6..c8898ef6 100644 --- a/src/mibew/libs/classes/Mibew/Button/Generator/OperatorCodeGenerator.php +++ b/src/mibew/libs/classes/Mibew/Button/Generator/OperatorCodeGenerator.php @@ -19,6 +19,8 @@ namespace Mibew\Button\Generator; +use Canteen\HTML5; + /** * Generates an Operator's Code field. */ @@ -29,19 +31,35 @@ class OperatorCodeGenerator extends AbstractGenerator implements GeneratorInterf */ public function generate() { - $js_link = $this->getChatUrlForJs(); - $popup_options = $this->getPopupOptions(); + $form = HTML5\html('form'); + $form->setAttributes(array( + 'action' => '', + 'onsubmit' => sprintf( + ("if(navigator.userAgent.toLowerCase().indexOf('opera') != -1 " + . "&& window.event.preventDefault) window.event.preventDefault();" + . "this.newWindow = window.open(%s + '&operator_code=' " + . "+ document.getElementById('mibewOperatorCodeField').value, 'mibew', '%s');" + . "this.newWindow.focus();" + . "this.newWindow.opener=window;" + . "return false;"), + $this->getChatUrlForJs(), + $this->getPopupOptions() + ), + 'id' => 'mibewOperatorCodeForm', + )); + $form->addChild(HTML5\html( + 'input', + array( + 'type' => 'text', + 'id' => 'mibewOperatorCodeField', + ) + )); - $form_on_submit = "if(navigator.userAgent.toLowerCase().indexOf('opera') != -1 " - . "&& window.event.preventDefault) window.event.preventDefault();" - . "this.newWindow = window.open({$js_link} + '&operator_code=' " - . "+ document.getElementById('mibewOperatorCodeField').value, 'mibew', '{$popup_options}');" - . "this.newWindow.focus();this.newWindow.opener=window;return false;"; + $button = HTML5\html('fragment'); + $button->addChild(HTML5\html('comment', 'mibew operator code field')); + $button->addChild($form); + $button->addChild(HTML5\html('comment', '/ mibew operator code field')); - $temp = '
' - . '' - . '
'; - - return "" . $temp . ""; + return (string)$button; } } diff --git a/src/mibew/libs/classes/Mibew/Button/Generator/TextGenerator.php b/src/mibew/libs/classes/Mibew/Button/Generator/TextGenerator.php index be30a833..a6266482 100644 --- a/src/mibew/libs/classes/Mibew/Button/Generator/TextGenerator.php +++ b/src/mibew/libs/classes/Mibew/Button/Generator/TextGenerator.php @@ -19,6 +19,8 @@ namespace Mibew\Button\Generator; +use Canteen\HTML5; + /** * Generates a Text button. */ @@ -29,9 +31,12 @@ class TextGenerator extends AbstractGenerator implements GeneratorInterface */ public function generate() { - return "" - . $this->getPopup($this->getOption('caption')) - . ""; + $button = HTML5\html('fragment'); + $button->addChild(HTML5\html('comment', 'mibew text link')); + $button->addChild($this->getPopup($this->getOption('caption'))); + $button->addChild(HTML5\html('comment', '/ mibew text link')); + + return (string)$button; } /** @@ -41,16 +46,29 @@ class TextGenerator extends AbstractGenerator implements GeneratorInterface */ protected function getPopup($message) { - $url = str_replace('&', '&', $this->getChatUrl()); - $js_url = $this->getChatUrlForJs(); - $options = $this->getPopupOptions(); - $title = $this->getOption('title'); + $link = HTML5\html('a', $message); - return "$message"; + $link->setAttributes(array( + 'id' => 'mibewAgentButton', + 'href' => str_replace('&', '&', $this->getChatUrl()), + 'target' => '_blank', + 'onclick' =>sprintf( + ("if(navigator.userAgent.toLowerCase().indexOf('opera') != -1 " + . "&& window.event.preventDefault) window.event.preventDefault();" + . "this.newWindow = window.open(%s, 'mibew', '%s');" + . "this.newWindow.focus();" + . "this.newWindow.opener=window;" + . "return false;"), + $this->getChatUrlForJs(), + $this->getPopupOptions() + ), + )); + + $title = $this->getOption('title'); + if ($title) { + $link->setAttribute('title', $title); + } + + return $link; } }