@@ -2,7 +2,7 @@ |
||
2 | 2 | <p><?php _e('The following list of shortcodes can be used for this Messenger and Message Type. You can use the descriptions to learn what the shortcode will be parsed to when the final message is generated.', 'event_espresso'); ?></p> |
3 | 3 | |
4 | 4 | <?php |
5 | -foreach ( $shortcodes as $name => $description ) : |
|
5 | +foreach ($shortcodes as $name => $description) : |
|
6 | 6 | ?> |
7 | 7 | <h3><?php echo $name; ?></h3> |
8 | 8 | <p><?php echo $description; ?></p> |
@@ -7,7 +7,7 @@ discard block |
||
7 | 7 | <p><?php echo $img2; ?></p> |
8 | 8 | <p><?php _e('The context switcher allows you to quickly switch between templates. The current context you are working on is displayed in the dropdown. You can switch to any other template for contexts available to the messenger and message type template group you are working on.', 'event_espresso'); ?></p> |
9 | 9 | <p><?php _e('Remember that contexts can represent different things. In this example they represent "recipients" and so they are labelled as such. In this example (for email payment confirmations), you may want Event Administrators to receive different information than Primary Registrants (the other context available to edit).', 'event_espresso'); ?></p> |
10 | -<p><?php printf( __('The %sPreview%s button is simply a link to a special view of the current template displayed to give you an idea of how the actual message will look when delivered. More information on what the preview displays is available in the content of the help tab on the preview page.', 'event_espresso'), '<strong>', '</strong>' ); ?> |
|
10 | +<p><?php printf(__('The %sPreview%s button is simply a link to a special view of the current template displayed to give you an idea of how the actual message will look when delivered. More information on what the preview displays is available in the content of the help tab on the preview page.', 'event_espresso'), '<strong>', '</strong>'); ?> |
|
11 | 11 | </p> |
12 | 12 | <h3><?php _e('3. Template Form Fields', 'event_espresso'); ?></h3> |
13 | 13 | <p><?php echo $img3; ?><?php _e('The middle area of the page is dedicated to all the fields related to the message template. These fields are dynamic in the sense that different messengers may require different fields (and sometimes different message types will add or subtract fields as well.', 'event_espresso'); ?></p> |
@@ -18,7 +18,7 @@ discard block |
||
18 | 18 | <?php echo $img4; ?><?php _e('The "Valid Shortcodes" metabox contains a list of all the shortcodes that can be used for the displayed template. This list is dynamic and will vary between templates.', 'event_espresso'); ?> |
19 | 19 | </p> |
20 | 20 | <p><?php _e('This box is at a fixed height, but contents are scrollable. You can click the question mark to find out what the given shortcode will parse to when used in your template.', 'event_espresso'); ?></p> |
21 | -<p><?php printf( __('%sAn important note:%s The system has been designed so that when you save the template, checks will be performed on each field to make sure that only valid shortcodes (or values) are used within them. You will get a warning box with clear instructions if you\'ve tried to use a particular shortcode in a field that does not support it. Also, you\'ll want to try the Preview button if you\'ve made any changes to the template to see if the changes are as you expected!', 'event_espresso'), '<strong>', '</strong>' ); ?> |
|
21 | +<p><?php printf(__('%sAn important note:%s The system has been designed so that when you save the template, checks will be performed on each field to make sure that only valid shortcodes (or values) are used within them. You will get a warning box with clear instructions if you\'ve tried to use a particular shortcode in a field that does not support it. Also, you\'ll want to try the Preview button if you\'ve made any changes to the template to see if the changes are as you expected!', 'event_espresso'), '<strong>', '</strong>'); ?> |
|
22 | 22 | </p> |
23 | 23 | <div style="clear:both"></div> |
24 | 24 | <h3><?php _e('5. Override All Custom', 'event_espresso'); ?></h3> |
@@ -1,2 +1,2 @@ |
||
1 | 1 | <h2><?php _e('What are Messengers?', 'event_espresso'); ?></h2> |
2 | -<p><?php printf( __('Messengers are the vehicles that deliver messages to people. By default, every Event Espresso install has the %sEmail%s messenger already active. The Email messenger is a vehicle for delivering messages. Other possible vehicles might be any social media applications, 3rd Party API\'s etc.', 'event_espresso'), '<strong>', '</strong>' ); ?></p> |
|
3 | 2 | \ No newline at end of file |
3 | +<p><?php printf(__('Messengers are the vehicles that deliver messages to people. By default, every Event Espresso install has the %sEmail%s messenger already active. The Email messenger is a vehicle for delivering messages. Other possible vehicles might be any social media applications, 3rd Party API\'s etc.', 'event_espresso'), '<strong>', '</strong>'); ?></p> |
|
4 | 4 | \ No newline at end of file |
@@ -5,7 +5,7 @@ |
||
5 | 5 | <div class"mt-settings"> |
6 | 6 | <form method="POST" action="" class="mt-settings-form<?php echo $show_form; ?>"> |
7 | 7 | <?php echo $template_form_fields; ?> |
8 | - <?php foreach ( $hidden_fields as $name => $field ) { |
|
8 | + <?php foreach ($hidden_fields as $name => $field) { |
|
9 | 9 | echo $field['field']; |
10 | 10 | } ?> |
11 | 11 | <input type="submit" value="<?php _e('Submit', 'event_espresso'); ?>" class="button-secondary mt-settings-submit no-drag" /> |
@@ -1,5 +1,5 @@ discard block |
||
1 | 1 | <?php |
2 | -if (!defined('EVENT_ESPRESSO_VERSION') ) |
|
2 | +if ( ! defined('EVENT_ESPRESSO_VERSION')) |
|
3 | 3 | exit('NO direct script access allowed'); |
4 | 4 | |
5 | 5 | /** |
@@ -87,13 +87,13 @@ discard block |
||
87 | 87 | |
88 | 88 | |
89 | 89 | public function load_scripts_styles() { |
90 | - wp_register_style( 'ee-other-services-css', EE_OTHER_SERVICES_ASSETS_URL . 'other-services.css' , array('ee-admin-css') , EVENT_ESPRESSO_VERSION ); |
|
91 | - wp_enqueue_style( 'ee-other-services-css' ); |
|
90 | + wp_register_style('ee-other-services-css', EE_OTHER_SERVICES_ASSETS_URL.'other-services.css', array('ee-admin-css'), EVENT_ESPRESSO_VERSION); |
|
91 | + wp_enqueue_style('ee-other-services-css'); |
|
92 | 92 | } |
93 | 93 | |
94 | 94 | |
95 | 95 | protected function _other_services() { |
96 | - $this->_template_args['admin_page_content'] = EEH_Template::display_template( EE_OTHER_SERVICES_ADMIN_TEMPLATE_PATH . 'other_services_content.template.php', array(), true ); |
|
96 | + $this->_template_args['admin_page_content'] = EEH_Template::display_template(EE_OTHER_SERVICES_ADMIN_TEMPLATE_PATH.'other_services_content.template.php', array(), true); |
|
97 | 97 | $this->display_admin_page_with_no_sidebar(); |
98 | 98 | } |
99 | 99 |
@@ -1,6 +1,7 @@ |
||
1 | 1 | <?php |
2 | -if (!defined('EVENT_ESPRESSO_VERSION') ) |
|
2 | +if (!defined('EVENT_ESPRESSO_VERSION') ) { |
|
3 | 3 | exit('NO direct script access allowed'); |
4 | +} |
|
4 | 5 | |
5 | 6 | /** |
6 | 7 | * Event Espresso |
@@ -1,5 +1,5 @@ discard block |
||
1 | 1 | <?php |
2 | -if (!defined('EVENT_ESPRESSO_VERSION') ) |
|
2 | +if ( ! defined('EVENT_ESPRESSO_VERSION')) |
|
3 | 3 | exit('NO direct script access allowed'); |
4 | 4 | |
5 | 5 | /** |
@@ -32,11 +32,11 @@ discard block |
||
32 | 32 | |
33 | 33 | public function __construct() { |
34 | 34 | //define some help/support page related constants |
35 | - define( 'EE_OTHER_SERVICES_PG_SLUG', 'espresso_packages' ); |
|
36 | - define( 'EE_OTHER_SERVICES_ADMIN_URL', admin_url('admin.php?page=' . EE_OTHER_SERVICES_PG_SLUG )); |
|
37 | - define( 'EE_OTHER_SERVICES_ADMIN_TEMPLATE_PATH', EE_ADMIN_PAGES . 'other_services/templates/'); |
|
38 | - define( 'EE_OTHER_SERVICES_ADMIN', EE_ADMIN_PAGES . 'other_services/' ); |
|
39 | - define( 'EE_OTHER_SERVICES_ASSETS_URL', EE_ADMIN_PAGES_URL . 'other_services/assets/'); |
|
35 | + define('EE_OTHER_SERVICES_PG_SLUG', 'espresso_packages'); |
|
36 | + define('EE_OTHER_SERVICES_ADMIN_URL', admin_url('admin.php?page='.EE_OTHER_SERVICES_PG_SLUG)); |
|
37 | + define('EE_OTHER_SERVICES_ADMIN_TEMPLATE_PATH', EE_ADMIN_PAGES.'other_services/templates/'); |
|
38 | + define('EE_OTHER_SERVICES_ADMIN', EE_ADMIN_PAGES.'other_services/'); |
|
39 | + define('EE_OTHER_SERVICES_ASSETS_URL', EE_ADMIN_PAGES_URL.'other_services/assets/'); |
|
40 | 40 | |
41 | 41 | parent::__construct(); |
42 | 42 | } |
@@ -46,7 +46,7 @@ discard block |
||
46 | 46 | } |
47 | 47 | |
48 | 48 | protected function _set_menu_map() { |
49 | - $this->_menu_map = new EE_Admin_Page_Sub_Menu( array( |
|
49 | + $this->_menu_map = new EE_Admin_Page_Sub_Menu(array( |
|
50 | 50 | 'menu_group' => 'extras', |
51 | 51 | 'menu_order' => 30, |
52 | 52 | 'show_on_menu' => EE_Admin_Page_Menu_Map::BLOG_AND_NETWORK_ADMIN, |
@@ -1,6 +1,7 @@ |
||
1 | 1 | <?php |
2 | -if (!defined('EVENT_ESPRESSO_VERSION') ) |
|
2 | +if (!defined('EVENT_ESPRESSO_VERSION') ) { |
|
3 | 3 | exit('NO direct script access allowed'); |
4 | +} |
|
4 | 5 | |
5 | 6 | /** |
6 | 7 | * Event Espresso |
@@ -1,5 +1,5 @@ discard block |
||
1 | 1 | <?php |
2 | -if (!defined('EVENT_ESPRESSO_VERSION') ) |
|
2 | +if ( ! defined('EVENT_ESPRESSO_VERSION')) |
|
3 | 3 | exit('NO direct script access allowed'); |
4 | 4 | |
5 | 5 | /** |
@@ -35,15 +35,15 @@ discard block |
||
35 | 35 | */ |
36 | 36 | public function __construct() { |
37 | 37 | //define some page related constants |
38 | - define( 'EE_PAYMENTS_PG_SLUG', 'espresso_payment_settings' ); |
|
39 | - define( 'EE_PAYMENTS_ADMIN_URL', admin_url( 'admin.php?page=' . EE_PAYMENTS_PG_SLUG )); |
|
40 | - define( 'EE_PAYMENTS_ADMIN', EE_ADMIN_PAGES . 'payments' . DS ); |
|
41 | - define( 'EE_PAYMENTS_TEMPLATE_PATH', EE_PAYMENTS_ADMIN . 'templates' . DS ); |
|
42 | - define( 'EE_PAYMENTS_ASSETS_URL', EE_ADMIN_PAGES_URL . 'payments/assets/' ); |
|
38 | + define('EE_PAYMENTS_PG_SLUG', 'espresso_payment_settings'); |
|
39 | + define('EE_PAYMENTS_ADMIN_URL', admin_url('admin.php?page='.EE_PAYMENTS_PG_SLUG)); |
|
40 | + define('EE_PAYMENTS_ADMIN', EE_ADMIN_PAGES.'payments'.DS); |
|
41 | + define('EE_PAYMENTS_TEMPLATE_PATH', EE_PAYMENTS_ADMIN.'templates'.DS); |
|
42 | + define('EE_PAYMENTS_ASSETS_URL', EE_ADMIN_PAGES_URL.'payments/assets/'); |
|
43 | 43 | |
44 | 44 | //check that there are active gateways on all admin page loads. but dont do it just yet |
45 | 45 | // echo "constructing payments admin page";die; |
46 | - add_action('admin_notices',array($this,'check_payment_gateway_setup')); |
|
46 | + add_action('admin_notices', array($this, 'check_payment_gateway_setup')); |
|
47 | 47 | parent::__construct(); |
48 | 48 | } |
49 | 49 | |
@@ -52,7 +52,7 @@ discard block |
||
52 | 52 | } |
53 | 53 | |
54 | 54 | protected function _set_menu_map() { |
55 | - $this->_menu_map = new EE_Admin_Page_Sub_Menu( array( |
|
55 | + $this->_menu_map = new EE_Admin_Page_Sub_Menu(array( |
|
56 | 56 | 'menu_group' => 'settings', |
57 | 57 | 'menu_order' => 30, |
58 | 58 | 'show_on_menu' => EE_Admin_Page_Menu_Map::BLOG_ADMIN_ONLY, |
@@ -68,23 +68,23 @@ discard block |
||
68 | 68 | /** |
69 | 69 | * Checks that there is at least one active gateway. If not, add a notice |
70 | 70 | */ |
71 | - public function check_payment_gateway_setup(){ |
|
71 | + public function check_payment_gateway_setup() { |
|
72 | 72 | //ONLY do this check if models can query |
73 | 73 | //and avoid a bug where when we nuke EE4's data that this causes a fatal error |
74 | 74 | //because the tables are deleted just before this request runs. see https://events.codebasehq.com/projects/event-espresso/tickets/7539 |
75 | 75 | EE_Registry::instance()->load_helper('Activation'); |
76 | - if ( ! EE_Maintenance_Mode::instance()->models_can_query() || ! EEH_Activation::table_exists( EEM_Payment_Method::instance()->table() ) ) { |
|
76 | + if ( ! EE_Maintenance_Mode::instance()->models_can_query() || ! EEH_Activation::table_exists(EEM_Payment_Method::instance()->table())) { |
|
77 | 77 | return; |
78 | 78 | } |
79 | 79 | |
80 | 80 | |
81 | 81 | // ensure Payment_Method model is loaded |
82 | - EE_Registry::instance()->load_model( 'Payment_Method' ); |
|
83 | - $actives = EEM_Payment_Method::instance()->count_active( EEM_Payment_Method::scope_cart ); |
|
84 | - if( $actives < 1 ){ |
|
82 | + EE_Registry::instance()->load_model('Payment_Method'); |
|
83 | + $actives = EEM_Payment_Method::instance()->count_active(EEM_Payment_Method::scope_cart); |
|
84 | + if ($actives < 1) { |
|
85 | 85 | $url = EE_Admin_Page::add_query_args_and_nonce(array(), EE_PAYMENTS_ADMIN_URL); |
86 | 86 | echo '<div class="error"> |
87 | - <p>'. sprintf(__("There are no Active Payment Methods setup for Event Espresso. Please %s activate at least one.%s", "event_espresso"),"<a href='$url'>","</a>").'</p> |
|
87 | + <p>'. sprintf(__("There are no Active Payment Methods setup for Event Espresso. Please %s activate at least one.%s", "event_espresso"), "<a href='$url'>", "</a>").'</p> |
|
88 | 88 | </div>'; |
89 | 89 | } |
90 | 90 | } |
@@ -1,6 +1,7 @@ |
||
1 | 1 | <?php |
2 | -if (!defined('EVENT_ESPRESSO_VERSION') ) |
|
2 | +if (!defined('EVENT_ESPRESSO_VERSION') ) { |
|
3 | 3 | exit('NO direct script access allowed'); |
4 | +} |
|
4 | 5 | |
5 | 6 | /** |
6 | 7 | * Event Espresso |
@@ -2,40 +2,40 @@ |
||
2 | 2 | <p> |
3 | 3 | <?php _e('This page shows all available payment methods for Event Espresso.', 'event_espresso'); ?> |
4 | 4 | </p> |
5 | -<h3><?php _e('Common Settings', 'event_espresso' )?></h3> |
|
5 | +<h3><?php _e('Common Settings', 'event_espresso')?></h3> |
|
6 | 6 | <ul> |
7 | 7 | <li> |
8 | - <strong><?php _e( 'Name', 'event_espresso' );?></strong><br> |
|
9 | - <?php _e( 'The name of the payment method as customers see it in the registration form, in emails, in receipts, etc.', 'event_espresso' );?> |
|
8 | + <strong><?php _e('Name', 'event_espresso'); ?></strong><br> |
|
9 | + <?php _e('The name of the payment method as customers see it in the registration form, in emails, in receipts, etc.', 'event_espresso'); ?> |
|
10 | 10 | </li> |
11 | 11 | <li> |
12 | - <strong><?php _e( 'Description', 'event_espresso' );?></strong><br/> |
|
13 | - <?php _e( 'The description of how to use the payment method as customers will see it. This is mostly only seen during registration.', 'event_espresso' );?> |
|
12 | + <strong><?php _e('Description', 'event_espresso'); ?></strong><br/> |
|
13 | + <?php _e('The description of how to use the payment method as customers will see it. This is mostly only seen during registration.', 'event_espresso'); ?> |
|
14 | 14 | </li> |
15 | - <li><strong><?php _e( 'Admin-Only Name', 'event_espresso' );?></strong><br/> |
|
16 | - <?php _e( 'The name of the payment method as seen internally by site administrators and staff.', 'event_espresso' );?> |
|
15 | + <li><strong><?php _e('Admin-Only Name', 'event_espresso'); ?></strong><br/> |
|
16 | + <?php _e('The name of the payment method as seen internally by site administrators and staff.', 'event_espresso'); ?> |
|
17 | 17 | </li> |
18 | 18 | <li> |
19 | - <strong><?php _e( 'Admin-Only Description', 'event_espresso' );?></strong><br/> |
|
20 | - <?php _e( 'The description of the payment method as seen internally by site administrators and staff.', 'event_espresso' );?> |
|
19 | + <strong><?php _e('Admin-Only Description', 'event_espresso'); ?></strong><br/> |
|
20 | + <?php _e('The description of the payment method as seen internally by site administrators and staff.', 'event_espresso'); ?> |
|
21 | 21 | </li> |
22 | 22 | <li> |
23 | - <strong><?php _e( 'Debug (sandbox) Mode', 'event_espresso' );?></strong><br/> |
|
24 | - <?php _e( 'Many payment methods have a debug/sandbox mode where payments are not processed but are only simulated. This is helpful when setup and debugging.', 'event_espresso' );?> |
|
23 | + <strong><?php _e('Debug (sandbox) Mode', 'event_espresso'); ?></strong><br/> |
|
24 | + <?php _e('Many payment methods have a debug/sandbox mode where payments are not processed but are only simulated. This is helpful when setup and debugging.', 'event_espresso'); ?> |
|
25 | 25 | </li> |
26 | 26 | <li> |
27 | - <strong><?php _e( 'Open by Default', 'event_espresso' );?></strong><br/> |
|
28 | - <?php _e( 'If checked, this payment method will be selected by default (assuming no other valid payment methods are also marked as open by default.)', 'event_espresso' );?> |
|
27 | + <strong><?php _e('Open by Default', 'event_espresso'); ?></strong><br/> |
|
28 | + <?php _e('If checked, this payment method will be selected by default (assuming no other valid payment methods are also marked as open by default.)', 'event_espresso'); ?> |
|
29 | 29 | </li> |
30 | 30 | <li> |
31 | - <strong><?php _e( 'Button URL', 'event_espresso' );?></strong><br/> |
|
32 | - <?php printf( __( 'The URL of the button image for this payment method in the registration process. You may use any uploaded image on your website (click %s next to the field to select). If left blank, the default button image will be used.', 'event_espresso' ), '<img src="' . admin_url('images/media-button-image.gif') . '">' );?> |
|
31 | + <strong><?php _e('Button URL', 'event_espresso'); ?></strong><br/> |
|
32 | + <?php printf(__('The URL of the button image for this payment method in the registration process. You may use any uploaded image on your website (click %s next to the field to select). If left blank, the default button image will be used.', 'event_espresso'), '<img src="'.admin_url('images/media-button-image.gif').'">'); ?> |
|
33 | 33 | </li> |
34 | - <li><strong><?php _e( 'Usable From', 'event_espresso' );?></strong><br/> |
|
35 | - <?php _e( 'Where this payment method can be used from.', 'event_espresso' );?> |
|
34 | + <li><strong><?php _e('Usable From', 'event_espresso'); ?></strong><br/> |
|
35 | + <?php _e('Where this payment method can be used from.', 'event_espresso'); ?> |
|
36 | 36 | <ul> |
37 | - <li><?php _e( 'Front-end Registration Page: the payment method will appear as an option during the normal registration process to customers and they can use it to process payments.', 'event_espresso' );?></li> |
|
38 | - <li><?php _e( 'Admin Registration Page: when recording payments made from the transaction admin page, the payment method will appear as an option. Note: currently payments can only be RECORDED from the admin, they cannot be PROCESSED.', 'event_espresso' );?></li> |
|
37 | + <li><?php _e('Front-end Registration Page: the payment method will appear as an option during the normal registration process to customers and they can use it to process payments.', 'event_espresso'); ?></li> |
|
38 | + <li><?php _e('Admin Registration Page: when recording payments made from the transaction admin page, the payment method will appear as an option. Note: currently payments can only be RECORDED from the admin, they cannot be PROCESSED.', 'event_espresso'); ?></li> |
|
39 | 39 | </ul> |
40 | 40 | </li> |
41 | 41 | </ul> |
@@ -2,10 +2,10 @@ |
||
2 | 2 | <?php _e('Mijireh Gateway', 'event_espresso'); ?> |
3 | 3 | </h3> |
4 | 4 | <p> |
5 | -<?php printf(__('Mijireh is basically a middle-man between Event Espresso and over 90 payment gateways. Most of the configuration occurs on %sMijireh\' website%s, where you configure your Mijireh store with the %spayment gateway of your choice%s.', 'event_espresso'),'<a href="http://www.mijireh.com/">','</a>','<a href="http://www.mijireh.com/docs/payment-gateways/">','</a>'); ?> |
|
5 | +<?php printf(__('Mijireh is basically a middle-man between Event Espresso and over 90 payment gateways. Most of the configuration occurs on %sMijireh\' website%s, where you configure your Mijireh store with the %spayment gateway of your choice%s.', 'event_espresso'), '<a href="http://www.mijireh.com/">', '</a>', '<a href="http://www.mijireh.com/docs/payment-gateways/">', '</a>'); ?> |
|
6 | 6 | </p> |
7 | 7 | <h3><?php _e('Mijireh Checkout Page Design', 'event_espresso'); ?></h3> |
8 | 8 | <p> |
9 | -<?php _e("As you're probably aware, when users pay with Mijireh Gateway, they are taken to a secure offsite page, hosted by Mijireh. This page can easily be made to have the look-and-feel of your website through a process called 'slurping', where Mijireh 'slurps' up your website's design and uses it on their checkout page. ", 'event_espresso');?> |
|
10 | -<?php printf(__("In order to do this, we automatically create a new WordPress page which is design to be slurped by Mijireh. You can customize the page like any other, but the page must contain Mijireh's special '{{mijireh-checkout-form}}' shortcode. Once you have finished designing the page, publish it, and %s then click the special 'slurp now' button%s. Mijireh may take several minutes to slurp the page. Once Mijireh is finished slurping, you can delete the page, or mark it as a draft. ", 'event_espresso'),'<a href="https://docs.google.com/a/eventespresso.com/file/d/0B5P8GXTvZgfMdjREYUtGM18wSms/edit?usp=drivesdk">','</a>');?> |
|
9 | +<?php _e("As you're probably aware, when users pay with Mijireh Gateway, they are taken to a secure offsite page, hosted by Mijireh. This page can easily be made to have the look-and-feel of your website through a process called 'slurping', where Mijireh 'slurps' up your website's design and uses it on their checkout page. ", 'event_espresso'); ?> |
|
10 | +<?php printf(__("In order to do this, we automatically create a new WordPress page which is design to be slurped by Mijireh. You can customize the page like any other, but the page must contain Mijireh's special '{{mijireh-checkout-form}}' shortcode. Once you have finished designing the page, publish it, and %s then click the special 'slurp now' button%s. Mijireh may take several minutes to slurp the page. Once Mijireh is finished slurping, you can delete the page, or mark it as a draft. ", 'event_espresso'), '<a href="https://docs.google.com/a/eventespresso.com/file/d/0B5P8GXTvZgfMdjREYUtGM18wSms/edit?usp=drivesdk">', '</a>'); ?> |
|
11 | 11 | </p> |
12 | 12 | \ No newline at end of file |