Plugin Directory

Changeset 3360189


Ignore:
Timestamp:
09/12/2025 12:26:02 AM (7 months ago)
Author:
mahfuz01
Message:

prepared the version 2.5.0

Location:
product-quotation-for-woocommerce
Files:
81 added
1 deleted
12 edited

Legend:

Unmodified
Added
Removed
  • product-quotation-for-woocommerce/trunk/README.txt

    r2900315 r3360189  
    11=== Product Quotation - Request a Quote for WooCommerce ===
    22Contributors: mahfuz01
    3 Tags: request a quote, email quote, quotations, request for quote, rfq, raq, proposal
     3Tags: request a quote, email quote, quotations, request for quote, hide-price, send-email, proposal
    44Requires at least: 4.0
    5 Tested up to: 6.2
    6 Stable tag: 2.0.5
     5WC requires at least: 6.0
     6WC tested up to: 10.1.2
     7Tested up to: 6.8
     8Stable tag: 2.5.0
    79License: GPLv3 or later
    810License URI: http://www.gnu.org/licenses/gpl-3.0.html
     
    4042* Automatically list each quotation submission on Dashboard.
    4143* No complicated settings. All is set up to go. Simply install it and it works.
    42 * Quotation Cart **Elementor** integration.
    43 * Translations Support for any languages ( Already translations included for: **German, Spanish, French**).
    44 
    45 [See the Live Demo](http://wpdiscountx.com/shop/)
    4644
    4745## 💙 LOVED Product Quotation For WooCommerce? ##
     
    5048
    5149Visit [Product Quotation Form For WooCommerce](https://github.com/mahafuz/product-quotation-for-woocommerce) to learn more about how to do better in WordPress with [Help Tutorial, Tips & Tricks]https://github.com/mahafuz/product-quotation-for-woocommerce).
    52 
    53 ## Privacy Policy
    54 Product Quotation – Product Quotation For WooCommerce uses [Appsero](https://appsero.com) SDK to collect some telemetry data upon user's confirmation. This helps us to troubleshoot problems faster & make product improvements.
    55 
    56 Appsero SDK **does not gather any data by default.** The SDK only starts gathering basic telemetry data **when a user allows it via the admin notice**. We collect the data to ensure a great user experience for all our users.
    57 
    58 Integrating Appsero SDK **DOES NOT IMMEDIATELY** start gathering data, **without confirmation from users in any case.**
    59 
    60 Learn more about how [Appsero collects and uses this data](https://appsero.com/privacy-policy/).
    6150
    6251== Installation ==
     
    7362== Changelog ==
    7463
    75 = 2.0.5 - 17-04-2023 =
    76 * Maintenance update
     64= 2.5.0 - 12-09-2025 =
     65* ADDED: New dashboard for better quotation management.
     66* IMPROVEMENTS: Compatibility with latest wordpress versions.
     67* FIXED: Minor bugs
    7768
    7869= 2.0.4 - 24-05-2022 =
  • product-quotation-for-woocommerce/trunk/assets/css/pqfw-admin.css

    r2719227 r3360189  
    134134.pqfw-help-page {display: flex;
    135135    flex-wrap: wrap;
    136     align-items: center;
     136    align-items: center; 
    137137    margin-top: 30px;}
    138138
     
    162162
    163163td.pqfw-product-thumbnail > a > img {max-width: 100%;}
     164
     165.pqfw-initial-preloader {
     166    height: 100vh;
     167    width:calc( 160px + 100% );
     168    position: fixed;
     169    left: 0;
     170    top: 0;
     171    bottom: 100%;
     172    overflow: hidden;
     173}
  • product-quotation-for-woocommerce/trunk/assets/css/pqfw-frontend.css

    r2717061 r3360189  
    77 */
    88
    9 
    109#pqfw-frontend-form-wrap {
    11     display: none;
     10    display: none;
    1211}
    1312
    1413.use-pqfw-form-default-design ul.pqfw-frontend-form {
    15     list-style: none !important;
    16     margin: 0 !important;
    17     padding: 0 !important;
    18     width: 100%;
     14    list-style: none !important;
     15    margin: 0 !important;
     16    padding: 0 !important;
     17    width: 100%;
    1918}
    2019
    2120.use-pqfw-form-default-design .pqfw-form-field {
    22     margin-left: 0;
    23     margin-bottom: 10px;
    24     padding: 10px;
     21    margin-left: 0;
     22    margin-bottom: 10px;
     23    padding: 10px;
    2524}
    2625
    2726.use-pqfw-form-default-design .pqfw-form-label {
    28     display: block;
    29     float: none;
    30     width: 100%;
    31     font-weight: bold;
    32     color: black;
    33     margin-bottom: 10px;
    34     font-size: 14px;
     27    display: block;
     28    float: none;
     29    width: 100%;
     30    font-weight: bold;
     31    color: black;
     32    margin-bottom: 10px;
     33    font-size: 14px;
    3534}
    3635
    3736.use-pqfw-form-default-design .pqfw-form-label .field-required {
    38     color: red;
     37    color: red;
    3938}
    4039
    4140.woocommerce .use-pqfw-form-default-design .pqfw-form-field input,
    4241.woocommerce .use-pqfw-form-default-design .pqfw-form-field textarea {
    43     padding: 5px;
    44     background: #fafafa;
    45     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1);
    46     -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1);
    47     box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1);
    48     border: 1px solid #ddd;
    49     color: #888;
    50     width: 100%;
    51     box-sizing: border-box;
    52     border-radius: 2px;
     42    padding: 5px;
     43    background: #fafafa;
     44    -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1);
     45    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1);
     46    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1);
     47    border: 1px solid #ddd;
     48    color: #888;
     49    width: 100%;
     50    box-sizing: border-box;
     51    border-radius: 2px;
    5352}
    5453
    5554.use-pqfw-form-default-design .pqfw-form-field.hasError {
    56     background: #FFE4E4;
     55    background: #ffe4e4;
    5756}
    5857
    5958.use-pqfw-form-default-design .pqfw-form-title {
    60     padding: 10px;
     59    padding: 10px;
    6160}
    6261
    6362.use-pqfw-form-default-design .pqfw-form .loading-spinner.loading {
    64     width: 16px;
    65     height: 16px;
    66     background: url('../images/loader.gif') no-repeat;
    67     display: inline-block;
     63    width: 16px;
     64    height: 16px;
     65    background: url("../images/loader.gif") no-repeat;
     66    display: inline-block;
    6867}
    6968
    7069.use-pqfw-form-default-design .pqfw-form-response-status {
    71     margin: 10px 0;
    72     padding: 10px;
    73     border-radius: 3px;
    74     font-size: 13px;
     70    margin: 10px 0;
     71    padding: 10px;
     72    border-radius: 3px;
     73    font-size: 13px;
    7574}
    7675
    7776.use-pqfw-form-default-design .pqfw-form-response-status.success {
    78     background: #00846433;
    79     border: 1px solid #00846433;
     77    background: #00846433;
     78    border: 1px solid #00846433;
    8079}
    8180
    8281.use-pqfw-form-default-design .pqfw-form-response-status.error {
    83     background: #FFE4E4;
    84     border: 1px solid #ffb1b1;
     82    background: #ffe4e4;
     83    border: 1px solid #ffb1b1;
    8584}
    8685
    8786.use-pqfw-form-default-design .pqfw-form-response-status p {
    88     margin: 2px 0;
     87    margin: 2px 0;
    8988}
    90 
    9189
    9290/* === Floating Form Style === */
    9391.use-pqfw-form-default-design.floating-form .pqfw-form-label {
    94     float: left;
    95     width: 20%;
     92    float: left;
     93    width: 20%;
    9694}
    9795
    9896.woocommerce .use-pqfw-form-default-design.floating-form .pqfw-form-field input,
    99 .woocommerce .use-pqfw-form-default-design.floating-form .pqfw-form-field textarea {
    100     float: left;
    101     width: 79%;
     97.woocommerce
     98    .use-pqfw-form-default-design.floating-form
     99    .pqfw-form-field
     100    textarea {
     101    float: left;
     102    width: 79%;
    102103}
    103104
    104105.use-pqfw-form-default-design.floating-form .pqfw-form-field {
    105     overflow: hidden;
     106    overflow: hidden;
    106107}
    107108
    108109.woocommerce .use-pqfw-form-default-design.floating-form .pqfw-submit {
    109     text-align: right;
     110    text-align: right;
    110111}
    111112
    112113.woocommerce .use-pqfw-form-default-design .pqfw-submit input[type="submit"] {
    113     font-size: 16px;
    114     padding: 5px 15px;
    115     line-height: inherit;
    116     height: inherit;
    117     border: 1px solid #ccc;
    118     -webkit-border-radius: 3px;
    119     -moz-border-radius: 3px;
    120     border-radius: 3px;
    121     background: #0085ba;
    122     border-color: #0073aa #006799 #006799;
    123     -webkit-box-shadow: 0 1px 0 #006799;
    124     box-shadow: 0 1px 0 #006799;
    125     color: #fff;
    126     text-decoration: none;
    127     text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;
    128     display: inline-block;
    129     width: auto;
    130     float: none;
     114    font-size: 16px;
     115    padding: 5px 15px;
     116    line-height: inherit;
     117    height: inherit;
     118    border: 1px solid #ccc;
     119    -webkit-border-radius: 3px;
     120    -moz-border-radius: 3px;
     121    border-radius: 3px;
     122    background: #0085ba;
     123    border-color: #0073aa #006799 #006799;
     124    -webkit-box-shadow: 0 1px 0 #006799;
     125    box-shadow: 0 1px 0 #006799;
     126    color: #fff;
     127    text-decoration: none;
     128    text-shadow:
     129        0 -1px 1px #006799,
     130        1px 0 1px #006799,
     131        0 1px 1px #006799,
     132        -1px 0 1px #006799;
     133    display: inline-block;
     134    width: auto;
     135    float: none;
    131136}
    132137
    133 a.button.pqfw-button.pqfw-add-to-quotation {
    134     font-size: 14px;
    135     margin: 10px 0;
    136     display: inline-block;
    137     transition: all 0.3s ease-in-out;
     138.quotify-quote-btn-loop {
     139    align-items: center;
     140    display: flex;
     141    flex-direction: column;
     142    gap: 12px;
     143    justify-content: center;
     144    white-space: normal;
     145    word-break: break-word;
    138146}
    139147
    140 a.pqfw-view-quotation-cart {font-size: 14px;display: block;text-decoration: underline;}
     148.pqfw-add-to-quotation {
     149    font-size: 14px;
     150    display: flex;
     151    align-items: center;
     152    line-height: 1;
     153    transition: all 0.3s ease-in-out;
     154    background: #000;
     155    padding: 15px 20px;
     156    color: #fff;
     157    border-radius: 4px;
     158    text-decoration: none;
     159}
     160
     161.pqfw-add-to-quotation:hover {
     162    opacity: 0.5;
     163}
     164
     165.pqfw-add-to-quotation > .loading-spinner.loading {
     166    width: 16px;
     167    height: 16px;
     168    background: url("../images/loader.gif") no-repeat;
     169    display: inline-block;
     170    margin: 0 5px 0 0;
     171}
     172
     173a.pqfw-view-quotation-cart {
     174    font-size: 14px;
     175    display: block;
     176    text-decoration: underline;
     177}
    141178
    142179li.pqfw-privacy-policy {
    143     margin-left: 0;
    144     margin-bottom: 10px;
    145     padding: 0 10px;
     180    margin-left: 0;
     181    margin-bottom: 10px;
     182    padding: 0 10px;
    146183}
    147184
    148185.pqfw-privacy-policy-inner p {
    149     margin: 0 0 10px;
     186    margin: 0 0 10px;
    150187}
    151188
    152189.pqfw-privacy-policy-inner {
    153     font-size: 16px;
     190    font-size: 16px;
    154191}
    155192
    156193.pqfw-privacy-policy-inner label {
    157     margin-bottom: 0 !important;
     194    margin-bottom: 0 !important;
    158195}
  • product-quotation-for-woocommerce/trunk/assets/js/pqfw-frontend.js

    r2729562 r3360189  
    1111    $( document )
    1212        .on( "pqfw_init", function () {
    13 
    1413            var t = $( this ),
    1514                f = $( '#pqfw-frontend-form' ),
     
    2221                resposneStatus = $('.pqfw-form-response-status');
    2322
    24             t.on( "click", "#rsrfqfwc_submit", function ( ev ) {
     23            t.on( "click", "#quotify-form-submit", function ( ev ) {
    2524
    2625                ev.preventDefault();
  • product-quotation-for-woocommerce/trunk/autoload.php

    r2709540 r3360189  
    11<?php
    22/**
    3  * Handling plugin spl autoloader golobally
     3 * Autoloader class for the entire plugin.
    44 *
    5  * @since   1.2.0
    6  * @package PQFW
     5 * @since 2.0.4
     6 * @package Quotify
    77 */
    88
    9 // if direct access than exit the file.
    10 defined( 'ABSPATH' ) || exit;
     9namespace PQFW;
    1110
    12 spl_autoload_register(function ( $class ) {
    13     $prefix   = 'PQFW\\';
    14     $base_dir = PQFW_PLUGIN_PATH . 'includes/';
    15     $len      = strlen( $prefix );
     11if ( ! defined( 'ABSPATH' ) ) {
     12    exit; // Exit if accessed directly.
     13}
    1614
    17     if ( strncmp( $prefix, $class, $len ) !== 0 ) {
    18         return;
     15
     16/**
     17 * Autoloader class for the entire plugin.
     18 *
     19 * @since 2.0.4
     20 */
     21class Autoload {
     22
     23    /**
     24     * Instance
     25     *
     26     * @access private
     27     * @var object Class Instance.
     28     * @since 1.1.0
     29     */
     30    private static $instance;
     31
     32    /**
     33     * Autoload directories for different namespaces.
     34     *
     35     * @var array
     36     */
     37    private $autoload_directories = [
     38        'PQFW' => PQFW_PLUGIN_ROOT_DIR_PATH . 'includes/',
     39    ];
     40
     41    /**
     42     * Initiator
     43     *
     44     * @since 1.1.0
     45     * @return object initialized object of class.
     46     */
     47    public static function get_instance() {
     48        if ( ! isset( self::$instance ) ) {
     49            self::$instance = new self();
     50        }
     51        return self::$instance;
    1952    }
    2053
    21     $class = substr( $class, $len );
    22     $arr           = explode( '\\', $class );
    23     $index         = absint( count( $arr ) - 1 );
    24     $fileName      = strtolower( $arr[ $index ] );
    25     $fileName      = str_replace( '_', '-', $fileName );
    26     $fileName      = 'class-' . $fileName;
    27     $arr[ $index ] = $fileName;
     54    /**
     55     * Register autoload directories for namespaces.
     56     *
     57     * @param string $ir_namespace Namespace to autoload.
     58     * @param string $directory Directory path for the namespace.
     59     */
     60    public function add_namespace_directory( $ir_namespace, $directory ) {
     61        $this->autoload_directories[ $ir_namespace ] = $directory;
     62    }
    2863
    29     $class = join( '\\', $arr );
    30     $file  = $base_dir . str_replace( '\\', '/', $class ) . '.php';
     64    /**
     65     * Autoload classes.
     66     *
     67     * @param string $ir_class Class name.
     68     */
     69    public function autoload( $ir_class ) {
     70        foreach ( $this->autoload_directories as $ir_namespace => $directory ) {
     71            if ( 0 === strpos( $ir_class, $ir_namespace ) ) {
     72                $ir_class_to_load = $ir_class;
     73                $filename = strtolower(
     74                    preg_replace(
     75                        [ '/^' . $ir_namespace . '\\\/', '/([a-z])([A-Z])/', '/_/', '/\\\/' ],
     76                        [ '', '$1-$2', '-', DIRECTORY_SEPARATOR ],
     77                        $ir_class_to_load
     78                    )
     79                );
     80                $file = $directory . $filename . '.php';
     81                // If the file is readable, include it.
     82                if ( is_readable( $file ) ) {
     83                    require_once $file;
     84                }
     85            }
     86        }
     87    }
    3188
    32     if ( file_exists( $file ) ) {
    33         require $file;
     89    /**
     90     * Constructor
     91     *
     92     * @since 1.1.0
     93     */
     94    public function __construct() {
     95        spl_autoload_register( [ $this, 'autoload' ] );
    3496    }
    35 });
     97}
     98
     99
     100Autoload::get_instance();
  • product-quotation-for-woocommerce/trunk/includes/PQFW.php

    r2729562 r3360189  
    88 */
    99
    10 namespace PQFW {
     10namespace PQFW {//phpcs:ignore
    1111
    1212    // if direct access than exit the file.
     
    2929
    3030        /**
     31         * Contains plugin migration.
     32         *
     33         * @var mixed
     34         */
     35        public $migration;
     36
     37        /**
     38         * Container for the quotations
     39         *
     40         * @var mixed
     41         */
     42        public $quotations;
     43
     44        /**
     45         * Contains helpers methods.
     46         *
     47         * @var mixed
     48         */
     49        public $helpers;
     50
     51        /**
     52         * Container for the addons.
     53         *
     54         * @var mixed
     55         */
     56        public $addons;
     57
     58        /**
     59         * Container for the menus.
     60         *
     61         * @var mixed
     62         */
     63        public $menu;
     64
     65        /**
     66         * Container for the settings.
     67         *
     68         * @var mixed
     69         */
     70        public $settings;
     71
     72        /**
     73         * Contains the cart.
     74         *
     75         * @var mixed
     76         */
     77        public $cart;
     78
     79        /**
     80         * Contains the form controls.
     81         *
     82         * @var mixed
     83         */
     84        public $controlsManager;
     85
     86        /**
     87         * Collect quotation products details.
     88         *
     89         * @var mixed
     90         */
     91        public $product;
     92
     93        /**
     94         * Responsible for the plugin mail.
     95         *
     96         * @var mixed
     97         */
     98        public $mailer;
     99        public $mail; //phpcs:ignore
     100
     101        /**
    31102         * Returns single instance of the class
    32103         *
     
    64135        private function includes() {
    65136            $dependencies = [
    66                 'autoload.php'
     137                'autoload.php',
     138                'functions.php',
    67139            ];
    68140
     
    70142                if ( ! file_exists( PQFW_PLUGIN_PATH . $path ) ) {
    71143                    status_header( 500 );
    72                     wp_die( esc_html__( 'Plugin is missing required dependencies. Please contact support for more information.', 'pqfw' ) );
     144                    wp_die( esc_html__( 'Plugin is missing required dependencies. Please contact support for more information.', 'quotify' ) );
    73145                }
    74146
     
    86158        private function preLoad() {
    87159            $this->migration = new \PQFW\Classes\Migration();
     160            add_action( 'woocommerce_init', [ $this, 'sessionStart' ] );
    88161        }
    89162
     
    97170        private function loader() {
    98171            $this->helpers         = new \PQFW\Classes\Helpers();
    99             $this->assets          = new \PQFW\Classes\Assets();
     172            $this->menu            = new \PQFW\Classes\Menu();
    100173            $this->settings        = new \PQFW\Classes\Settings();
    101             $this->form            = new \PQFW\Classes\Form();
    102             $this->admin           = new \PQFW\Classes\Admin();
     174
     175            new \PQFW\Ajax();
     176            new \PQFW\Classes\Assets();
     177
     178            new \PQFW\Classes\Form_Handler();
     179            new \PQFW\Classes\Shortcode();
     180
     181            $this->quotations      = new \PQFW\Quotations();
     182            $this->addons          = new \PQFW\Addons();
     183
    103184            $this->cart            = new \PQFW\Classes\Cart();
    104             $this->request         = new \PQFW\Classes\Request();
    105             $this->form_handler    = new \PQFW\Classes\Form_Handler();
    106             $this->quotations      = new \PQFW\Classes\Quotations();
    107             $this->shortcode       = new \PQFW\Classes\Shortcode();
    108             $this->frontend        = new \PQFW\Classes\Frontend();
    109185            $this->controlsManager = new \PQFW\Classes\Controls_Manager();
    110186            $this->product         = new \PQFW\Classes\Product();
    111             $this->mailer          = new \PQFW\Classes\Mailer();
    112             $this->strings         = new \PQFW\Classes\Strings();
    113 
    114             if ( ! function_exists( 'WC' ) ) {
    115                 add_action( 'admin_notices', [ $this, 'woocommerce_not_loaded' ] );
    116             }
     187            $this->mail            = new \PQFW\Classes\Mail();
     188
     189            new \PQFW\Classes\Form();
     190            new \PQFW\Classes\Frontend();
     191            new \PQFW\Classes\Admin();
     192            \PQFW\Classes\Hooks::init();
    117193
    118194            add_action( 'plugin_action_links_' . PQFW_PLUGIN_BASENAME, [ $this, 'addPluginActionLinks' ] );
    119195            add_action( 'admin_init', [ $this, 'redirect' ] );
    120             add_action( 'woocommerce_init', [ $this, 'sessionStart' ] );
    121 
    122             // Initialize the integrations.
    123             $this->integrations();
     196            add_action( 'quotify/templates/form', [ $this, 'display_form' ] );
     197        }
     198
     199        /**
     200         * Displays the contact form.
     201         *
     202         * @return void
     203         */
     204        public function display_form() {
    124205        }
    125206
     
    133214        public function addPluginActionLinks( $links ) {
    134215            // return if pro is active.
    135             $settings = '<a href="' . admin_url( 'admin.php?page=pqfw-settings' ) . '">' . esc_html__( 'Settings', 'pqfw' ) . '</a>';
    136             $help = sprintf( '<a href="%s"><span style="color:#f18500; font-weight: bold;">%s</span></a>', admin_url( 'admin.php?page=pqfw-help' ), esc_html__( 'Help', 'pqfw' ) );
     216            $settings = '<a href="' . admin_url( 'admin.php?page=pqfw-product-quotations-settings' ) . '">' . esc_html__( 'Settings', 'quotify' ) . '</a>';
     217            $help = sprintf(
     218                '<a href="%s"><span style="color:#f18500; font-weight: bold;">%s</span></a>', admin_url( 'admin.php?page=pqfw-product-quotations-help' ),
     219                esc_html__( 'Help', 'quotify' )
     220            );
    137221            array_unshift( $links, $settings );
    138222            array_push( $links, $help );
     
    151235
    152236                if ( ! isset( $_GET['activate-multi'] ) && ( ! empty( $_GET['activate'] ) ) && ( 'true' === $_GET['activate'] ) ) {
    153                     wp_safe_redirect( admin_url( 'admin.php?page=pqfw-settings' ) );
     237                    wp_safe_redirect( admin_url( 'admin.php?page=pqfw-product-quotations' ) );
    154238                }
    155239            }
    156         }
    157 
    158         /**
    159          * Check if a plugin is installed
    160          *
    161          * @since 1.0.0
    162          * @param string $basename The plugin basename.
    163          */
    164         public function is_plugin_installed( $basename ) {
    165             if ( ! function_exists( 'get_plugins' ) ) {
    166                 include_once ABSPATH . '/wp-admin/includes/plugin.php';
    167             }
    168 
    169             $installed_plugins = get_plugins();
    170 
    171             return isset( $installed_plugins[ $basename ] );
    172         }
    173 
    174         /**
    175          * Check if woocommerce plugin is activated
    176          *
    177          * @since v1.0.0
    178          */
    179         public function woocommerce_not_loaded() {
    180             if ( ! current_user_can( 'activate_plugins' ) ) {
    181                 return;
    182             }
    183 
    184             $woocommerce = 'woocommerce/woocommerce.php';
    185 
    186             if ( $this->is_plugin_installed( $woocommerce ) ) {
    187                 $activation_url = wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . $woocommerce . '&amp;plugin_status=all&amp;paged=1&amp;s', 'activate-plugin_' . $woocommerce );
    188 
    189                 $message     = __( '<strong>Product Quotation For WooCommerce</strong> requires <strong>WooCommerce</strong> plugin to be active. Please activate WooCommerce to continue.', 'pqfw' );
    190                 $button_text = __( 'Activate WooCommerce', 'pqfw' );
    191             } else {
    192                 $activation_url = wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=woocommerce' ), 'install-plugin_woocommerce' );
    193                 $message        = __( '<strong>Product Quotation For WooCommerce</strong> requires <strong>WooCommerce</strong> plugin to be installed and activated. Please install WooCommerce to continue.', 'pqfw' );
    194                 $button_text    = __( 'Install WooCommerce', 'pqfw' );
    195             }
    196 
    197             $button = '<p><a href="' . $activation_url . '" class="button-primary">' . $button_text . '</a></p>';
    198 
    199             printf( '<div class="error"><p>%1$s</p>%2$s</div>', $message, $button );
    200240        }
    201241
     
    210250            }
    211251        }
    212 
    213         /**
    214          * Contains & runs the integration.
    215          *
    216          * @since 2.0.3
    217          */
    218         private function integrations() {
    219             // Elementor.
    220             if ( defined( 'ELEMENTOR_PATH' ) ) {
    221                 add_action( 'elementor/editor/after_enqueue_styles', [ $this->assets, 'elmentorEditorStyle' ] );
    222 
    223                 add_action( 'elementor/widgets/widgets_registered', function() {
    224                     $this->elementor = \Elementor\Plugin::instance()->widgets_manager->register( new \PQFW\Classes\Addons\Elementor() );
    225                 });
    226             }
    227         }
    228252    }
    229253
    230254}
    231255
    232 namespace {
     256namespace {//phpcs:ignore
    233257    // if direct access than exit the file.
    234258    defined( 'ABSPATH' ) || exit;
     
    239263     * @since 1.0.0
    240264     */
    241     function pqfw() {
     265    function pqfw() {//phpcs:ignore
    242266        return \PQFW\PQFW::instance();
    243267    }
  • product-quotation-for-woocommerce/trunk/includes/Views/help.php

    r2716683 r3360189  
    1 <div class="wrap">
    2     <h1 class="screen-reader-text">Product Quotation For WooCommerce Help Page</h1>
    3 
    4     <h1 class="pqfw-help-page-title" style="font-weight: bold">Help</h1>
    5 
    6     <div class="pqfw-help-page">
    7         <!-- <div class="help-block">
    8             <img src="<?php //echo esc_url( PQFW_PLUGIN_URL . 'assets/images/docs.svg' ); ?>" alt="Looking for Something?">
    9             <h3>Looking for Something?</h3>
    10             <p>We have detailed documentation on every aspects of weForms.</p>
    11             <a target="_blank" href="#" class="button button-primary">Visit the Plugin Documentation</a>
    12         </div> -->
    13         <!-- <div class="help-block">
    14             <img src="<?php //echo esc_url( PQFW_PLUGIN_URL . 'assets/images/support.svg' ); ?>" alt="Need Any Assistance?">
    15             <h3>Need Any Assistance?</h3>
    16             <p>Our EXPERT Support Team is always ready to Help you out.</p>
    17             <a target="_blank" href="#" class="button button-primary">Contact Support</a>
    18         </div> -->
    19         <div class="help-block">
    20             <img src="<?php echo esc_url( PQFW_PLUGIN_URL . 'assets/images/bugs.svg' ); ?>" alt="Found Any Bugs?">
    21             <h3>Found Any Bugs?</h3>
    22             <p>Report any Bug that you Discovered, Get Instant Solutions.</p>
    23             <a target="_blank" href="https://github.com/mahafuz/product-quotation-for-woocommerce/issues/new" class="button button-primary">Report to GitHub</a>
    24         </div>
    25         <!-- <div class="help-block">
    26             <img src="<?php //echo esc_url( PQFW_PLUGIN_URL . 'assets/images/customization.svg' ); ?>" alt="Require Customization?">
    27             <h3>Require Customization?</h3>
    28             <p>We would Love to hear your Integration and Customization Ideas.</p>
    29             <a target="_blank" href="#" class="button button-primary">Contact Our Services</a>
    30         </div> -->
    31         <div class="help-block">
    32             <img src="<?php echo esc_url( PQFW_PLUGIN_URL . 'assets/images/like.svg' ); ?>" alt="Like The Plugin?">
    33             <h3>Like The Plugin?</h3>
    34             <p>Your Review is very important to us as it helps us to grow more.</p>
    35             <a target="_blank" href="https://wordpress.org/support/plugin/product-quotation-for-woocommerce/reviews/#new-post" class="button button-primary">Review Us on WP.org</a>
    36         </div>
    37     </div>
    38 </div>
     1<h1>l|l</h1>
  • product-quotation-for-woocommerce/trunk/includes/Views/pqfw-cart-shortcode.php

    r2729562 r3360189  
     1<?php
     2/**
     3 * Woocommerce cart view template.
     4 *
     5 * @since 1.0.0
     6 * @package Quotify
     7 */
     8
     9if ( ! defined( 'ABSPATH' ) ) {
     10    exit;
     11} // Exit if accessed directly
     12?>
    113<div class="woocommerce">
    214    <form class="woocommerce-cart-form">
     
    719                    <th class="product-thumbnail">&nbsp;</th>
    820                    <th class="product-name">
    9                         <?php esc_html_e( 'Product', 'woocommerce' ); ?>
     21                        <?php esc_html_e( 'Product', 'quotify' ); ?>
    1022                    </th>
    11                     <th class="product-price"><?php esc_html_e( 'Price', 'woocommerce' ); ?></th>
     23                    <th class="product-price"><?php esc_html_e( 'Price', 'quotify' ); ?></th>
    1224                    <th class="product-quantity">
    13                         <?php esc_html_e( 'Quantity', 'woocommerce' ); ?>
     25                        <?php esc_html_e( 'Quantity', 'quotify' ); ?>
    1426                    </th>
    1527                    <th class="product-subtotal">
    16                         <?php esc_html_e( 'Message', 'woocommerce' ); ?>
     28                        <?php esc_html_e( 'Message', 'quotify' ); ?>
    1729                    </th>
    1830                </tr>
     
    2032            <tbody id="pqfw-quotations-list-row"></tbody>
    2133        </table>
     34    </form>
    2235
    23         <!-- Put form here. -->
    24         <?php pqfw()->form->form(); ?>
    25     </form>
     36    <?php
     37        do_action( 'quotify/templates/cart/form' );
     38    ?>
    2639</div>
  • product-quotation-for-woocommerce/trunk/includes/Views/quotation-detail.php

    r2719764 r3360189  
    11<?php
    22/**
    3  * Displays quotaion detail meta box.
     3 * Woocommerce cart view template.
    44 *
    55 * @since 1.2.0
    6  * @package PQFW
     6 * @package Quotify
    77 */
     8
     9if ( ! defined( 'ABSPATH' ) ) {
     10    exit;
     11} // Exit if accessed directly
    812?>
    913<div class="pqfw-quotation-detail-wrap">
    1014    <ul class="pqfw-list-of-person-detail">
    11         <li><strong><?php esc_html_e( 'Name', 'pqfw' ); ?></strong> <?php echo esc_html( get_post_meta( $quotation->ID, 'pqfw_customer_name', true ) ); ?></li>
    12         <li><strong><?php esc_html_e( 'Email', 'pqfw' ); ?></strong> <a href="mailto:<?php echo esc_html( get_post_meta( $quotation->ID, 'pqfw_customer_email', true ) ); ?>">
     15        <li><strong><?php esc_html_e( 'Name', 'quotify' ); ?></strong> <?php echo esc_html( get_post_meta( $quotation->ID, 'pqfw_customer_name', true ) ); ?></li>
     16        <li><strong><?php esc_html_e( 'Email', 'quotify' ); ?></strong> <a href="mailto:<?php echo esc_html( get_post_meta( $quotation->ID, 'pqfw_customer_email', true ) ); ?>">
    1317            <?php echo esc_html( get_post_meta( $quotation->ID, 'pqfw_customer_email', true ) ); ?></a>
    1418        </li>
    15         <li><strong><?php esc_html_e( 'Phone', 'pqfw' ); ?></strong> <?php echo esc_html( get_post_meta( $quotation->ID, 'pqfw_customer_phone', true ) ); ?></li>
    16         <li><strong><?php esc_html_e( 'Subject', 'pqfw' ); ?></strong> <?php echo esc_html( get_post_meta( $quotation->ID, 'pqfw_customer_subject', true ) ); ?></li>
    17         <li><strong><?php esc_html_e( 'Message', 'pqfw' ); ?></strong> <?php echo esc_html( get_post_meta( $quotation->ID, 'pqfw_customer_comments', true ) ); ?></li>
     19        <li><strong><?php esc_html_e( 'Phone', 'quotify' ); ?></strong> <?php echo esc_html( get_post_meta( $quotation->ID, 'pqfw_customer_phone', true ) ); ?></li>
     20        <li><strong><?php esc_html_e( 'Subject', 'quotify' ); ?></strong> <?php echo esc_html( get_post_meta( $quotation->ID, 'pqfw_customer_subject', true ) ); ?></li>
     21        <li><strong><?php esc_html_e( 'Message', 'quotify' ); ?></strong> <?php echo esc_html( get_post_meta( $quotation->ID, 'pqfw_customer_comments', true ) ); ?></li>
    1822    </ul>
    1923</div>
  • product-quotation-for-woocommerce/trunk/includes/Views/quotation-products-detail.php

    r2716683 r3360189  
    11<?php
    22/**
    3  * Displays quotaion products details.
     3 * Woocommerce cart view template.
    44 *
    55 * @since 1.2.0
    6  * @package PQFW
     6 * @package Quotify
    77 */
     8
     9if ( ! defined( 'ABSPATH' ) ) {
     10    exit;
     11} // Exit if accessed directly
    812?>
    913<div class="pqfw-quotation-produts-detail">
     
    1115        <thead>
    1216            <tr>
    13                 <th class="pqfw-product-thumbnail pqfw-list-products-head"><?php esc_html_e( 'Image', 'pqfw' ); ?></th>
    14                 <th class="pqfw-list-products-head"><?php esc_html_e( 'Product', 'pqfw' ); ?></th>
    15                 <th class="pqfw-list-products-head"><?php esc_html_e( 'Price', 'pqfw' ); ?></th>
    16                 <th class="pqfw-list-products-head"><?php esc_html_e( 'Quantity', 'pqfw' ); ?></th>
    17                 <th class="pqfw-list-products-head"><?php esc_html_e( 'Message', 'pqfw' ); ?></th>
     17                <th class="pqfw-product-thumbnail pqfw-list-products-head"><?php esc_html_e( 'Image', 'quotify' ); ?></th>
     18                <th class="pqfw-list-products-head"><?php esc_html_e( 'Product', 'quotify' ); ?></th>
     19                <th class="pqfw-list-products-head"><?php esc_html_e( 'Price', 'quotify' ); ?></th>
     20                <th class="pqfw-list-products-head"><?php esc_html_e( 'Quantity', 'quotify' ); ?></th>
     21                <th class="pqfw-list-products-head"><?php esc_html_e( 'Message', 'quotify' ); ?></th>
    1822            </tr>
    1923        </thead>
  • product-quotation-for-woocommerce/trunk/index.php

    r2709540 r3360189  
    11<?php
    2 // Silence is golden.
     2/**
     3 * Silence is golden.
     4 *
     5 * @package Quotify
     6 */
  • product-quotation-for-woocommerce/trunk/product-quotation-for-woocommerce.php

    r2729562 r3360189  
    44 * Plugin URI: https://github.com/mahafuz/product-quotation-for-woocommerce
    55 * Description: Removes the 'Add to cart' button from WooCommerce and adds a simple 'Request for quotation' form on all product pages instead of it.
    6  * Version: 2.0.4
     6 * Version: 2.5.0
     7 * Requires Plugins: woocommerce
    78 * Author: Mahafuz <m.mahfuz.me@gmail.com>
    89 * Author URI: https://github.com/mahafuz/
     
    1718
    1819/**
    19  * Defining plugin constans
     20 * Defining plugin constants.
    2021 *
    2122 * @since 1.2.0
    2223 */
    2324define( 'PQFW_PLUGIN_FILE', __FILE__ );
    24 define( 'PQFW_PLUGIN_NAME', __( 'Products Quotation For WooCommerce', 'pqfw' ) );
     25define( 'PQFW_PLUGIN_NAME', __( 'Products Quotation For WooCommerce', 'quotify' ) );
    2526define( 'PQFW_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
    2627define( 'PQFW_PLUGIN_PATH', trailingslashit( plugin_dir_path( __FILE__ ) ) );
     28define( 'PQFW_PLUGIN_SLUG', 'pqfw-product-quotations' );
     29
     30define( 'PQFW_PLUGIN_URL', trailingslashit( plugins_url( '/', __FILE__ ) ) );
     31define( 'PQFW_PLUGIN_ROOT_URI', plugins_url( '/', __FILE__ ) );
     32define( 'PQFW_PLUGIN_ROOT_DIR_PATH', plugin_dir_path( __FILE__ ) );
     33
     34define( 'PQFW_PLUGIN_ASSETS', trailingslashit( PQFW_PLUGIN_URL . 'assets' ) );
     35define( 'PQFW_PLUGIN_ASSETS_DIR', trailingslashit( PQFW_PLUGIN_PATH . 'assets' ) );
     36define( 'PQFW_ADDONS_DIR_PATH', trailingslashit( PQFW_PLUGIN_PATH . 'addons' ) );
     37define( 'PQFW_ADDONS_SETTINGS_KEY', 'pqfw_addons' );
    2738define( 'PQFW_PLUGIN_LANGUAGES_PATH', plugin_dir_path( __FILE__ ) . 'languages/' );
    28 define( 'PQFW_PLUGIN_VIEWS', trailingslashit( plugin_dir_path( __FILE__ ) . 'includes/Views' ) );
    29 define( 'PQFW_PLUGIN_URL', trailingslashit( plugins_url( '/', __FILE__ ) ) );
    30 define( 'PQFW_PLUGIN_VERSION', '2.0.4' );
     39define( 'PQFW_PLUGIN_VIEWS', trailingslashit( plugin_dir_path( __FILE__ ) . 'includes/views' ) );
     40define( 'PQFW_PLUGIN_VERSION', '2.5.0' );
    3141
    3242/**
     
    4252require PQFW_PLUGIN_PATH . 'includes/PQFW.php';
    4353
    44 add_action( 'plugins_loaded', function() {
     54add_action( 'plugins_loaded', function () {
    4555    pqfw();
    4656});
    47 
    48 /**
    49  * Initialize the plugin tracker
    50  *
    51  * @since 1.2.0
    52  * @return void
    53  */
    54 function appsero_init_tracker_product_quotation_for_woocommerce() {
    55     if ( ! class_exists( 'Appsero\Client' ) ) {
    56         require PQFW_PLUGIN_PATH . 'appsero/client/src/Client.php';
    57     }
    58 
    59     $client = new Appsero\Client(
    60         'e806fe7d-f314-425d-8be4-9f62fdaf71cf',
    61         'Product Quotation - Product Quotation For WooCommerce',
    62         __FILE__
    63     );
    64 
    65     // Active insights.
    66     $client->insights()->init();
    67 }
    68 appsero_init_tracker_product_quotation_for_woocommerce();
Note: See TracChangeset for help on using the changeset viewer.