Plugin Directory

Changeset 2495997


Ignore:
Timestamp:
03/15/2021 02:02:14 PM (4 years ago)
Author:
tsinf
Message:

Version 2.0.0

  • Add table cell context menu
  • Add SQL-Exporter
  • Add CSV-Exporter
  • Changes in JS to provide jQuery 3.x Support
Location:
ts-comfort-database
Files:
50 added
12 edited

Legend:

Unmodified
Added
Removed
  • ts-comfort-database/trunk/classes/tsinf_comfort_db.class.php

    r2486537 r2495997  
    2727    private static $query_limit;
    2828    private static $show_adminbar_menu;
     29   
     30    private static $progress_hash_table_to_csv;
     31    private static $progress_hash_rows_to_csv;
    2932       
    3033    function __construct()
     
    4952        self::$show_adminbar_menu = ($show_adminbar_menu === 1);
    5053       
    51         add_action('admin_menu', array('TS_INF_COMFORT_DB', 'generate_menu'));
     54        // Must be an array because needs diffferent hashes if user clicks more than one table to export
     55        self::$progress_hash_table_to_csv = array();
     56        $table_names = TS_INF_COMFORT_DB_DATABASE::get_table_names();
     57        if(is_array($table_names) && count($table_names) > 0)
     58        {
     59            foreach($table_names as $tablename)
     60            {
     61                self::$progress_hash_table_to_csv[$tablename] = sprintf("tsinf_table_to_csv_state_%s", md5(get_current_user_id() . $tablename));
     62            }
     63        }
     64       
     65        self::$progress_hash_rows_to_csv = sprintf("tsinf_rows_to_csv_state_%s", md5(get_current_user_id()));
     66       
     67        add_action('admin_menu', array('TS_INF_COMFORT_DB', 'generate_menu'), 10);
    5268        add_action('admin_enqueue_scripts', array('TS_INF_COMFORT_DB', 'load_backend_scripts'));
    5369       
     
    5975        add_action('wp_ajax_get_table_struct_meta', array('TS_INF_COMFORT_DB', 'ajax_get_table_struct_meta_callback'));
    6076        add_action('wp_ajax_get_column_meta_data', array('TS_INF_COMFORT_DB', 'ajax_get_column_meta_data_callback'));
     77       
     78        add_action('wp_ajax_export_table_to_csv', array('TS_INF_COMFORT_DB', 'ajax_export_table_to_csv_callback'));
     79        add_action('wp_ajax_export_table_to_csv', array('TS_INF_COMFORT_DB', 'ajax_export_table_to_csv_callback'));
     80       
     81        add_action('wp_ajax_export_rows_to_csv', array('TS_INF_COMFORT_DB', 'ajax_export_rows_to_csv_callback'));
     82        add_action('wp_ajax_export_rows_to_csv', array('TS_INF_COMFORT_DB', 'ajax_export_rows_to_csv_callback'));
     83       
    6184        add_action('wp_ajax_tsinf_comfortdb_table_delete_rows', array('TS_INF_COMFORT_DB', 'ajax_tsinf_comfortdb_table_delete_rows'));
    6285        add_action('wp_ajax_risk_message_button_confirmed', array('TS_INF_COMFORT_DB', 'ajax_risk_message_button_confirmed'));
     86        add_action('wp_ajax_table_context_menu', array('TS_INF_COMFORT_DB', 'ajax_table_context_menu'));
    6387        add_action('admin_init', array('TS_INF_COMFORT_DB','render_admin_page_settings_options'));
    6488        add_action('wp_loaded', array('TS_INF_COMFORT_DB','helper_redirect_to_search_results_page'));
     89       
     90        if(!file_exists(TS_INF_COMFORT_DB_UPLOAD_DIR))
     91        {
     92            try {
     93                WP_Filesystem();
     94                global $wp_filesystem;
     95                $result = $wp_filesystem->mkdir(TS_INF_COMFORT_DB_UPLOAD_DIR);
     96                if($result === false)
     97                {
     98                    // Directory could not be created
     99                }
     100            } catch(Exception $e)
     101            {
     102               
     103            }
     104        }
    65105    }
    66106   
     
    83123       
    84124        wp_enqueue_script( 'ts_comfort_db_main_js', plugins_url('../js/main.js', __FILE__), array('jquery') );
    85         wp_enqueue_script( 'ts_comfort_db_table_js', plugins_url('../js/table.js', __FILE__), array('jquery') );
     125        wp_enqueue_script( 'ts_comfort_db_table_js', plugins_url('../js/table.js', __FILE__), array('jquery', 'ts_comfort_db_main_js') );
    86126        wp_enqueue_script( 'ts_comfort_db_table_ajax_js', plugins_url('../js/table.ajax.js', __FILE__), array('jquery') );
    87         wp_enqueue_script( 'ts_comfort_db_overview_js', plugins_url('../js/overview.js', __FILE__), array('jquery') );
     127        wp_enqueue_script( 'ts_comfort_db_overview_js', plugins_url('../js/overview.js', __FILE__), array('jquery', 'ts_comfort_db_main_js') );
    88128        wp_enqueue_script( 'ts_comfort_db_editform_js', plugins_url('../js/editform.js', __FILE__), array('jquery') );
    89129       
     
    100140       
    101141        wp_localize_script('ts_comfort_db_table_js', 'TSINF_COMFORT_DB_TABLE_JS', array(
     142            'checkerurl' => plugins_url('../checker.php', __FILE__),
    102143            'really_delete' => __('Do you really want to delete the selected rows?', 'tsinf_comfortdb_plugin_textdomain'),
     144            'copy_to_clipboard' => __('Copy to clipboard', 'tsinf_comfortdb_plugin_textdomain'),
     145            'nonce_cell_menu' => wp_create_nonce('tsinf_comfortdb_plugin_table_cell_menu'),
     146            'progress_hash_rows_to_csv' => self::$progress_hash_rows_to_csv,
     147            'export_finished' => __('Export ist finished. Go to File Manager and download your file: ', 'tsinf_comfortdb_plugin_textdomain'),
     148            'filemanager_name' => __('File Manager'),
     149            'filemanager_url' => admin_url('admin.php?page=tscomfortdb-filemanager', 'tsinf_comfortdb_plugin_textdomain')
     150        ));
     151       
     152        wp_localize_script('ts_comfort_db_overview_js', 'TSINF_COMFORT_OVERVIEW_JS', array(
     153            'ajaxurl' => admin_url('admin-ajax.php'),
     154            'checkerurl' => plugins_url('../checker.php', __FILE__),
     155            'nonce' => wp_create_nonce(TS_INF_TABLE_TO_CSV_NONCE),
     156            'progress_hash_table_to_csv' => self::$progress_hash_table_to_csv,
     157            'export_finished' => __('Export ist finished. Go to File Manager and download your file: ', 'tsinf_comfortdb_plugin_textdomain'),
     158            'filemanager_name' => __('File Manager'),
     159            'filemanager_url' => admin_url('admin.php?page=tscomfortdb-filemanager', 'tsinf_comfortdb_plugin_textdomain')
    103160        ));
    104161    }
     
    543600                }
    544601            }
    545            
    546 //             echo 'helper_decode_identifier_string()<br />';
    547 //             var_dump($identifier);
    548 //             echo '<br />';
    549 //             var_dump($identifier_string);
    550 //             echo '<br />';
    551602                               
    552603           
    553604            $identifier_string = str_replace("{percent}", "%%", $identifier_string);
    554            
    555 //             var_dump($identifier_string);
    556 //             echo '<br />';
     605
    557606        }
    558607       
     
    793842       
    794843        $table_headers = TS_INF_COMFORT_DB_DATABASE::get_column_names($tablename);
     844        $table_col_count = is_array($table_headers) ? count($table_headers) : 0;
    795845       
    796846        $primary_key_columns = TS_INF_COMFORT_DB_DATABASE::get_primary_key_columns($tablename);
     
    850900                        <span class="arrow-up white"></span>
    851901                        <span class="tsinf_select_menu_items">
    852                             <span class="tsinf_select_menu_option delete" data-auth="<?php echo wp_create_nonce('tsinf_comfortdb_plugin_delete_table_dataset'); ?>"><?php _e("Delete", "tsinf_comfortdb_plugin_textdomain"); ?></span>
     902                            <span class="tsinf_select_menu_option delete" data-auth="<?php echo wp_create_nonce('tsinf_comfortdb_plugin_delete_table_dataset'); ?>"><?php _e("Delete selected rows", "tsinf_comfortdb_plugin_textdomain"); ?></span>
     903                            <span class="tsinf_select_menu_option export_csv" data-auth="<?php echo wp_create_nonce('tsinf_comfortdb_plugin_export_csv_table_dataset'); ?>"><?php _e("Export selected rows to CSV", "tsinf_comfortdb_plugin_textdomain"); ?></span>
    853904                        </span>
    854905                    </span>
     
    892943       
    893944        <div class="tsinf_comfortdb_table_data_wrapper">
    894             <table class="tsinf_comfortdb_table" data-tablename="<?php echo $tablename; ?>">
     945            <table class="tsinf_comfortdb_table" data-tablename="<?php echo $tablename; ?>" data-colcount="<?php echo $table_col_count; ?>">
    895946            <?php
    896947            $sort_link_order = 'asc';
     
    900951            }
    901952       
    902             if(is_array($table_headers) && count($table_headers) > 0)
     953            if(is_array($table_headers) && $table_col_count > 0)
    903954            {
    904955                $column_headline = '';
     
    9621013                ?><tr data-page-line="<?php echo $row_counter; ?>">
    9631014                    <?php if(!$no_primary_keys) { ?>
    964                     <td><input type="checkbox" class="row_select row_identifier" name="row_identifier" value="<?php echo htmlentities($row_identifier, ENT_QUOTES); ?>" /></td>
    965                     <td><a class="tsinf_comfortdb_row_edit" href="<?php echo admin_url('?page=tscomfortdb-mainpage&table=' . $tablename . $edit_link); ?>"><?php _e('Edit', 'tsinf_comfortdb_plugin_textdomain'); ?></a></td>
     1015                    <td class="cell_checkbox"><input type="checkbox" class="row_select row_identifier" name="row_identifier" value="<?php echo htmlentities($row_identifier, ENT_QUOTES); ?>" /></td>
     1016                    <td class="cell_link"><a class="tsinf_comfortdb_row_edit" href="<?php echo admin_url('?page=tscomfortdb-mainpage&table=' . $tablename . $edit_link); ?>"><?php _e('Edit', 'tsinf_comfortdb_plugin_textdomain'); ?></a></td>
    9661017                <?php } ?>
    9671018                <?php
     
    9851036                    <span class="column_is_null">NULL</span>
    9861037                    <?php } else { ?>
    987                     <textarea class="dbcontentcodewrap" readonly="readonly"><?php echo htmlspecialchars($column_data); ?></textarea></td>
     1038                    <textarea class="dbcontentcodewrap" readonly="readonly"><?php echo htmlspecialchars($column_data); ?></textarea>
     1039                    <span class="tcellmenubutton"></span>
     1040                    <span class="tcellmenu_container">
     1041                        <span class="multiplestate_header">
     1042                            <span class="header_text"><?php _e('Cell-Options', 'tsinf_comfortdb_plugin_textdomain'); ?></span>
     1043                            <span class="menu_close">
     1044                                <svg viewBox="0 0 24 24" width="24" height="24" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round" class="css-i6dzq1">
     1045                                    <line x1="18" y1="6" x2="6" y2="18"></line>
     1046                                    <line x1="6" y1="6" x2="18" y2="18"></line>
     1047                                </svg>
     1048                            </span>
     1049                        </span>
     1050                        <span class="tcellmenu_option" data-val="copy">
     1051                            <span class="option_text"><?php _e('Copy to clipboard', 'tsinf_comfortdb_plugin_textdomain'); ?></span>
     1052                        </span>
     1053                        <span class="tcellmenu_option" data-val="unserialize">
     1054                            <span class="option_text"><?php _e('PHP: unserialize()', 'tsinf_comfortdb_plugin_textdomain'); ?></span>
     1055                        </span>
     1056                        <span class="tcellmenu_option" data-val="jsondecode">
     1057                            <span class="option_text"><?php _e('PHP: json_decode()', 'tsinf_comfortdb_plugin_textdomain'); ?></span>
     1058                        </span>
     1059                        <span class="tcellmenu_option" data-val="varexport">
     1060                            <span class="option_text"><?php _e('PHP: var_export()', 'tsinf_comfortdb_plugin_textdomain'); ?></span>
     1061                        </span>
     1062                    </span>
    9881063                    <?php
    9891064                    }
     1065                    ?>
     1066                    </td>
     1067                    <?php
    9901068                }
    9911069               
     
    10171095        $php_version = phpversion();
    10181096       
    1019         $headline = __('Comfort DB', 'tsinf_comfortdb_plugin_textdomain');
     1097        global $wp_version;
     1098       
     1099        $headline = __('TS Comfort DB', 'tsinf_comfortdb_plugin_textdomain');
    10201100       
    10211101        try {
     
    10251105        } catch(Exception $e)
    10261106        {
    1027             $headline = __('Comfort DB', 'tsinf_comfortdb_plugin_textdomain');
     1107            $headline = __('TS Comfort DB', 'tsinf_comfortdb_plugin_textdomain');
    10281108        }
    10291109        ?>
    10301110        <h1 id="tsinf_comfortdb_headline" class="nofloat"><?php echo $headline; ?></h1>
    1031         <h2><?php echo sprintf(__('Name of your WordPress Database: %s (%s MB) - MySQL Version %s - PHP Version %s', 'tsinf_comfortdb_plugin_textdomain'), DB_NAME, number_format($database_size, 2, ".", ""), $mysql_version, $php_version); ?></h2>
     1111        <h2><?php echo sprintf(__('Name of your WordPress Database: %s (%s MB) - MySQL Version %s - PHP Version %s - WordPress Version %s', 'tsinf_comfortdb_plugin_textdomain'), DB_NAME, number_format($database_size, 2, ".", ""), $mysql_version, $php_version, $wp_version); ?></h2>
    10321112        <?php self::render_full_text_search_form(); ?>
    10331113        <?php
     
    10421122                            <th class="tsinf_comfortdb_column_headline"><?php _e('Table Name', 'tsinf_comfortdb_plugin_textdomain'); ?></th>
    10431123                            <th class="tsinf_comfortdb_column_headline tsinf_comfortdb_colhead_tablename_filter"><input type="text" class="tsinf_comfortdb_tablename_filter" placeholder="<?php _e('Filter', 'tsinf_comfortdb_plugin_textdomain'); ?> (<?php _e('Table Name', 'tsinf_comfortdb_plugin_textdomain'); ?>)" value="" /></th>
     1124                            <th class="tsinf_comfortdb_column_headline tsinf_comfortdb_colhead_options"></th>
    10441125                            <th class="tsinf_comfortdb_column_headline tsinf_comfortdb_colhead_entries"><?php _e('Entries', 'tsinf_comfortdb_plugin_textdomain'); ?></th>
    10451126                            <th class="tsinf_comfortdb_column_headline tsinf_comfortdb_colhead_engine"><?php _e('Engine', 'tsinf_comfortdb_plugin_textdomain'); ?></th>
     
    10531134                    <tr class="tsinf_comfortdb_table_overview_row" data-table-name="<?php echo $table->TABLE_NAME; ?>" data-auth="<?php echo wp_create_nonce(sprintf('tsinf_comfortdb_table_overview_row_%s', $table->TABLE_NAME)); ?>">
    10541135                        <td colspan="2" class="tsinf_comfortdb_table_name"><a href="<?php echo admin_url('?page=tscomfortdb-mainpage&table=' . $table->TABLE_NAME . '&tpage=1'); ?>" title="<?php echo $table->TABLE_NAME; ?>"><?php echo $table->TABLE_NAME; ?></a></td>
     1136                        <td class="tsinf_comfortdb_options">
     1137                            <span class="export_to_csv_wrap">
     1138                                <?php if($table->TABLE_ROWS > 0) { ?>
     1139                                <span class="export_to_csv"><?php _e('CSV-Export', 'tsinf_comfortdb_plugin_textdomain'); ?></span>
     1140                                <progress class="tsinf-progress-bar export-complete-table-to-csv" style="display:none;" value="0.0" max="1"></progress>
     1141                                <?php } ?>
     1142                            </span>
     1143                        </td>
    10551144                        <td class="tsinf_comfortdb_row_count"><?php echo $table->TABLE_ROWS; ?></td>
    10561145                        <td class="tsinf_comfortdb_engine"><img alt="" src="<?php echo plugins_url('../images/loading-symbol.svg', __FILE__); ?>" width="30px" height="auto" /></td>
     
    15671656            wp_die();
    15681657    }
     1658   
     1659    /**
     1660     * Ajax Callback to export table to CSV
     1661     */
     1662    public static function ajax_export_table_to_csv_callback()
     1663    {
     1664        if(
     1665            isset($_POST['action']) && $_POST['action'] === 'export_table_to_csv' &&
     1666            isset($_POST['table'])
     1667            ) {
     1668                $table = trim(sanitize_text_field($_POST['table']));
     1669               
     1670                check_ajax_referer(TS_INF_TABLE_TO_CSV_NONCE, 'security', true);
     1671               
     1672                if(strlen($table) > 0)
     1673                {
     1674                    $result = array();
     1675                   
     1676                    self::export_table_to_csv($table);
     1677                   
     1678                    wp_send_json($result);
     1679                }
     1680               
     1681               
     1682            }
     1683            wp_die();
     1684    }
     1685   
     1686    /**
     1687     * Ajax Callback to export selected rows to CSV
     1688     */
     1689    public static function ajax_export_rows_to_csv_callback()
     1690    {
     1691        if(
     1692            isset($_POST['action']) && $_POST['action'] === 'export_rows_to_csv' &&
     1693            isset($_POST['rows']) && is_array($_POST['rows']) && count($_POST['rows']) > 0 &&
     1694            isset($_POST['table'])
     1695            )
     1696        {
     1697            global $wpdb;
     1698           
     1699            $rows = $_POST['rows'];
     1700            $tablename = htmlentities(strip_tags($_POST['table']), ENT_QUOTES);
     1701           
     1702            self::export_rows_to_csv($tablename, $rows);           
     1703           
     1704        }
     1705    }
    15691706   
    15701707    /**
     
    16501787    }
    16511788   
    1652     /**
     1789    /**
    16531790     * Ajax Callback to confirm and hide risk message
    16541791     */
     
    16641801    }
    16651802   
     1803    /**
     1804     * AJAX Callback to process action send via table cell context menu
     1805     */
     1806    public static function ajax_table_context_menu()
     1807    {
     1808        check_ajax_referer('tsinf_comfortdb_plugin_table_cell_menu', 'security', true);
     1809
     1810        $result_content = '';
     1811       
     1812        if(
     1813        isset($_POST['action']) && $_POST['action'] === 'table_context_menu' &&
     1814        isset($_POST['type']) && isset($_POST['content'])
     1815        ) {
     1816           
     1817            $type = trim(sanitize_text_field($_POST['type']));
     1818            $content = $_POST['content'];
     1819           
     1820           
     1821            switch($type)
     1822            {
     1823                case 'unserialize':
     1824                    $content = stripslashes($content);
     1825                    $result_content = maybe_unserialize($content);
     1826                    $result_content = var_export($result_content, true);
     1827                   
     1828                    break;
     1829                   
     1830                case 'jsondecode':
     1831                    $content = stripslashes($content);
     1832                    $result_content = json_decode($content);
     1833                    $result_content = var_export($result_content, true);
     1834                    break;
     1835                   
     1836                case 'varexport':
     1837                    $result_content = var_export($content, true);
     1838                    break;
     1839            }
     1840        }
     1841       
     1842        echo $result_content;
     1843       
     1844       
     1845        wp_die();
     1846    }
     1847   
     1848    /**
     1849     * Add table list to Adminbar
     1850     */
    16661851    public static function add_tables_to_adminbar()
    16671852    {
     
    17111896        }
    17121897    }
     1898   
     1899    /**
     1900     * Write table selected data to csv file
     1901     * @param string $table tablename
     1902     * @param array $rows rows to export
     1903     */
     1904    public static function export_rows_to_csv($tablename, $rows)
     1905    {
     1906        add_action('shutdown', function()
     1907        {
     1908            if($error = error_get_last())
     1909            {
     1910                // Catch Fatal Errors
     1911                $state = json_encode(array('done' => 0, 'total' => 0, 'error' => $error['message']));
     1912                set_transient(self::$progress_hash_rows_to_csv, $state, HOUR_IN_SECONDS);
     1913            }
     1914        });
     1915       
     1916        if(is_array($rows) && count($rows) > 0)
     1917        {
     1918            $where_condition_counter = 0;
     1919            $row_data_length = count($rows);
     1920            $where = '';
     1921           
     1922            foreach($rows as $row)
     1923            {
     1924                $where_condition_counter++;
     1925               
     1926                $row_data_json_str = stripslashes(html_entity_decode($row, ENT_QUOTES));
     1927                $row_data = (array) json_decode($row_data_json_str);
     1928               
     1929                foreach($row_data as $field => $value)
     1930                {
     1931                    if($row_data_length === $where_condition_counter)
     1932                    {
     1933                        $where .= " `" . $field . "`=\"" . $value . "\"" . " ";
     1934                    } else {
     1935                        $where .= " `" . $field . "`=\"" . $value . "\"" .  " OR ";
     1936                    }
     1937                }
     1938               
     1939            }
     1940        }
     1941           
     1942        global $wpdb;
     1943        $table_data_sql = "SELECT *
     1944                            FROM `" . $tablename . "`" .
     1945                            " WHERE " . $where . "
     1946                            LIMIT 100;";
     1947               
     1948        try {
     1949            $filename = sprintf("%s-%s-SELECTION.csv", date("Y-m-d-H-i-s"), sanitize_title($tablename));
     1950           
     1951            $fp = fopen(TS_INF_COMFORT_DB_UPLOAD_DIR . $filename, 'w');
     1952           
     1953            $table_data = $wpdb->get_results($table_data_sql, ARRAY_A);
     1954           
     1955            if(is_array($table_data))
     1956            {
     1957                $dataset_total = count($table_data);
     1958               
     1959                if($dataset_total > 0)
     1960                {
     1961                    $table_entry_counter = 0;
     1962                    foreach($table_data as $dataset)
     1963                    {
     1964                        $insert = array_values($dataset);
     1965                       
     1966                        $write_response = fputcsv($fp, $insert);
     1967                                               
     1968                        if($write_response === false)
     1969                        {
     1970                            // error and break?
     1971                        }
     1972                       
     1973                        $table_entry_counter++;
     1974                       
     1975                        $state = json_encode(array('done' => $table_entry_counter, 'total' => $dataset_total, 'percent' => ($table_entry_counter / $dataset_total)));
     1976                        set_transient(self::$progress_hash_rows_to_csv, $state, HOUR_IN_SECONDS);
     1977                    }
     1978                }
     1979            }
     1980           
     1981            fclose($fp);
     1982        } catch(Exception $exception)
     1983        {
     1984            $state = json_encode(array('done' => 0, 'total' => 0, 'error' => $exception->getMessage()));
     1985            set_transient(self::$progress_hash_rows_to_csv, $state, HOUR_IN_SECONDS);
     1986        }
     1987           
     1988           
     1989           
     1990           
     1991       
     1992    }
     1993   
     1994    /**
     1995     * Write table data to csv file
     1996     * @param string $table tablename
     1997     */
     1998    public static function export_table_to_csv($table)
     1999    {
     2000        if(file_exists(TS_INF_COMFORT_DB_UPLOAD_DIR) && is_writable(TS_INF_COMFORT_DB_UPLOAD_DIR)) {
     2001            try {
     2002                $filename = sprintf("%s-%s.csv", date("Y-m-d-H-i-s"), sanitize_title($table));
     2003                $fp = fopen(TS_INF_COMFORT_DB_UPLOAD_DIR . $filename, 'w');
     2004               
     2005                global $wpdb;
     2006                $table_data_sql = sprintf("SELECT * FROM `%s` LIMIT 5000;", $table);
     2007                $table_data = $wpdb->get_results($table_data_sql, ARRAY_A);
     2008               
     2009                if(is_array($table_data))
     2010                {
     2011                    $dataset_total = count($table_data);
     2012                   
     2013                    if($dataset_total > 0)
     2014                    {
     2015                        $table_entry_counter = 0;
     2016                        foreach($table_data as $dataset)
     2017                        {
     2018                            $insert = array_values($dataset);
     2019                           
     2020                            $write_response = fputcsv($fp, $insert);
     2021                           
     2022                            if($write_response === false)
     2023                            {
     2024                                // error and break?
     2025                            }
     2026                           
     2027                            $table_entry_counter++;
     2028                           
     2029                            $state = json_encode(array('done' => $table_entry_counter, 'total' => $dataset_total, 'percent' => ($table_entry_counter / $dataset_total)));
     2030                            set_transient(self::$progress_hash_table_to_csv[$table], $state, HOUR_IN_SECONDS);
     2031                        }
     2032                    }
     2033                }
     2034               
     2035                fclose($fp);
     2036            } catch(Exception $exception)
     2037            {
     2038                $state = json_encode(array('done' => 0, 'total' => 0, 'error' => $exception->getMessage()));
     2039                set_transient(self::$progress_hash_table_to_csv[$table], $state, HOUR_IN_SECONDS);
     2040            }
     2041           
     2042        } else {
     2043            $state = json_encode(array('done' => 0, 'total' => 0, 'error' => __('Upload Directory not exists', 'tsinf_comfortdb_plugin_textdomain')));
     2044            set_transient(self::$progress_hash_table_to_csv[$table], $state, HOUR_IN_SECONDS);
     2045        }
     2046    }
    17132047}
    17142048?>
  • ts-comfort-database/trunk/css/main.css

    r2337892 r2495997  
    3131    padding: 4px 5px 5px 5px;
    3232    text-align: center;
     33}
     34
     35progress.tsinf-progress-bar
     36{
     37    -webkit-appearance: none;
     38    appearance: none;
     39    display: block;
     40    width: 100%;
     41}
     42
     43progress.tsinf-progress-bar::-webkit-progress-bar
     44{
     45    background-color: #e5e5e5;
     46}
     47
     48progress.tsinf-progress-bar::-webkit-progress-value
     49{
     50    background-color: #006799;
     51}
     52
     53.tsinf_comfort_database_progress_success
     54{
     55    color: green;
     56    font-weight: 700;
     57}
     58
     59.tsinf_comfort_database_progress_error
     60{
     61    color: #ff0000;
     62    font-weight: 700;
    3363}
    3464
  • ts-comfort-database/trunk/css/overview.css

    r2173469 r2495997  
    66    padding: 15px;
    77    width: calc(100% - 20px);
     8}
     9
     10#tsinf_comfortdb_table_overview tr td .tsinf-progress-bar
     11{
     12    display: inline-block;
     13    height: 15px;
     14    margin: 10px 0 15px 0;
    815}
    916
     
    103110}
    104111
     112#tsinf_comfortdb_table_overview .tsinf_comfortdb_table_overview_row .tsinf_comfortdb_options .export_to_csv
     113{
     114    color: #0073aa;
     115    cursor: pointer;
     116}
     117
     118#tsinf_comfortdb_table_overview .tsinf_comfortdb_table_overview_row .tsinf_comfortdb_options .export_to_csv:hover,
     119#tsinf_comfortdb_table_overview .tsinf_comfortdb_table_overview_row .tsinf_comfortdb_options .export_to_csv:active
     120{
     121    color: #006799;
     122}
    105123
    106124
     125
  • ts-comfort-database/trunk/css/table.css

    r2270176 r2495997  
    9292.tsinf_comfortdb_toolbar.tabledata #select_action
    9393{
    94     min-width: 180px;
     94    min-width: 200px;
    9595}
    9696
     
    259259}
    260260
     261.tsinf_comfortdb_table_data_wrapper .tsinf_comfortdb_table thead .tsinf_cdb_progress_row th
     262{
     263    background: white;
     264    padding: 25px 15px;
     265}
     266
     267.tsinf_comfortdb_table_data_wrapper .tsinf_comfortdb_table thead .tsinf_cdb_progress_row th progress
     268{
     269    max-width: 500px;
     270    width: 100%;
     271}
     272
    261273.tsinf_comfortdb_table_data_wrapper .tsinf_comfortdb_table
    262274{
     
    271283    font-size: 16px;
    272284    padding: 15px;
     285    position: relative;
     286}
     287
     288.tsinf_comfortdb_table_data_wrapper .tsinf_comfortdb_table tbody tr td:not(.cell_checkbox):not(.cell_link)
     289{
     290    padding-right: 20px;
     291}
     292
     293.tsinf_comfortdb_table_data_wrapper .tsinf_comfortdb_table tbody tr:not(.prepared_to_delete) td .tcellmenubutton
     294{
     295    background: url(../images/menu.svg) no-repeat transparent center center;
     296    background-size: 15px 15px;
     297    bottom: 0;
     298    content: "";
     299    cursor: pointer;
     300    display: none;
     301    height: 15px;
     302    margin: auto;
     303    position: absolute;
     304    right: 0;
     305    top: 0;
     306    width: 15px;
     307}
     308
     309.tsinf_comfortdb_table_data_wrapper .tsinf_comfortdb_table tbody tr:not(.prepared_to_delete) td .tcellmenu_container
     310{
     311    background: white;
     312    border-bottom: 3px solid #444;
     313    bottom: 0;   
     314           
     315    -webkit-box-shadow: 0px 0px 9px 3px rgb(41 41 41 / 25%);
     316    -moz-box-shadow: 0px 0px 9px 3px rgba(41,41,41,.25);
     317    box-shadow: 0px 0px 9px 3px rgb(41 41 41 / 25%);
     318   
     319    box-sizing: border-box;
     320    display: none;
     321    height: 205px;
     322    margin: auto;
     323    position: absolute;
     324    right: 0;
     325    top: 0;
     326    z-index: 9;
     327}
     328
     329.tsinf_comfortdb_table_data_wrapper .tsinf_comfortdb_table tbody tr:not(.prepared_to_delete) td .tcellmenu_container .multiplestate_header
     330{
     331    box-sizing: border-box;
     332    color: #444;
     333    display: block;
     334    height: 41px;
     335    padding: 10px 30px 10px 18px;
     336    position: relative;
     337}
     338
     339.tsinf_comfortdb_table_data_wrapper .tsinf_comfortdb_table tbody tr:not(.prepared_to_delete) td .tcellmenu_container .multiplestate_header .header_text
     340{
     341    display: block;
     342    font-weight: bold;
     343    text-align: left;
     344}
     345
     346.tsinf_comfortdb_table_data_wrapper .tsinf_comfortdb_table tbody tr:not(.prepared_to_delete) td .tcellmenu_container .multiplestate_header .menu_close
     347{
     348    cursor: pointer;
     349    position: absolute;
     350    right: 5px;
     351    top: 7px;
     352}
     353
     354.tsinf_comfortdb_table_data_wrapper .tsinf_comfortdb_table tbody tr:not(.prepared_to_delete) td .tcellmenu_container .tcellmenu_option
     355{
     356    align-items: center;
     357    border-left: 1px solid #dedede;
     358    border-right: 1px solid #dedede;
     359    border-top: 1px solid #dedede;
     360    box-sizing: border-box;
     361    cursor: pointer;
     362    display: flex;
     363    flex-wrap: wrap;
     364    justify-content: space-between;
     365    min-height: 40px;
     366    padding: 10px 30px 10px 18px;
     367    width: 220px;
     368    z-index: 0;
     369}
     370
     371.tsinf_comfortdb_table_data_wrapper .tsinf_comfortdb_table tbody tr:not(.prepared_to_delete) td:hover .tcellmenubutton
     372{
     373    display: block;
    273374}
    274375
    275376.tsinf_comfortdb_table_data_wrapper .tsinf_comfortdb_table tbody tr:nth-child(odd) td
    276377{
    277     background: #e5e5e5;
     378    background: #eee;
    278379}
    279380
     
    311412}
    312413
     414#wpbody #wpbody-content .tsinf_comfortdb_table_data_wrapper
     415{
     416    min-height: 300px;
     417    position: relative;
     418}
     419
     420#wpbody #wpbody-content .tsinf_comfortdb_table_data_wrapper #tsinf_comfortdb_overlay
     421{
     422    align-items: center;
     423    background: rgba(0,0,0,0.8);
     424    bottom: 0;
     425    box-sizing: border-box;
     426    display: flex;
     427    justify-content: center;
     428    left: 0;
     429    padding: 40px;
     430    position: absolute;
     431    right: 0;
     432    top: 0;
     433    width: 100%;
     434    z-index: 9;
     435}
     436
     437#wpbody #wpbody-content .tsinf_comfortdb_table_data_wrapper #tsinf_comfortdb_overlay #tsinf_comfortdb_overlay_inner
     438{
     439    background: white;
     440    height: 95%;
     441    overflow-y: scroll;
     442    padding: 75px 40px 40px 40px;
     443    position: relative;
     444    width: 95%;
     445}
     446
     447#wpbody #wpbody-content .tsinf_comfortdb_table_data_wrapper #tsinf_comfortdb_overlay #tsinf_comfortdb_overlay_inner .tsinf_ovl_toolbar
     448{
     449    align-items: center;
     450    background: #eee;
     451    box-sizing: border-box;
     452    display: flex;
     453    height: 50px;
     454    left: 0;
     455    padding: 0 30px;
     456    position: absolute;
     457    top: 0;
     458    width: 100%;
     459}
     460
     461#wpbody #wpbody-content .tsinf_comfortdb_table_data_wrapper #tsinf_comfortdb_overlay #tsinf_comfortdb_overlay_inner .tsinf_ovl_toolbar .tsinf_ovl_toolbar_item
     462{
     463    color: #0073aa;
     464    cursor: pointer;
     465    font-weight: bold;
     466}
     467
     468#wpbody #wpbody-content .tsinf_comfortdb_table_data_wrapper #tsinf_comfortdb_overlay #tsinf_comfortdb_overlay_inner .tsinf_ovl_toolbar .tsinf_close_ovl
     469{
     470    align-items: center;
     471    bottom: 0;
     472    cursor: pointer;
     473    display: flex;
     474    margin: auto;
     475    position: absolute;
     476    right: 15px;
     477    top: 0;
     478}
     479
     480#wpbody #wpbody-content .tsinf_comfortdb_table_data_wrapper #tsinf_comfortdb_overlay #tsinf_comfortdb_overlay_inner textarea
     481{
     482    min-height: 100%;
     483    width: 100%;
     484}
     485
     486
     487
     488
  • ts-comfort-database/trunk/js/editform.js

    r2270176 r2495997  
    33        if(jQuery(this).hasClass("locked"))
    44        {
    5             jQuery(this).closest(".tsinf_comfortdb_plugin_edit_dataset_row").find(".tsinf_comfortdb_plugin_edit_dataset_edit_field").removeAttr("readonly");
     5            jQuery(this).closest(".tsinf_comfortdb_plugin_edit_dataset_row").find(".tsinf_comfortdb_plugin_edit_dataset_edit_field").prop("readonly", false);
    66            jQuery(this).removeClass("locked");
    77            jQuery(this).addClass("unlocked");
     
    99            jQuery(this).text(button_text);
    1010        } else {
    11             jQuery(this).closest(".tsinf_comfortdb_plugin_edit_dataset_row").find(".tsinf_comfortdb_plugin_edit_dataset_edit_field").attr("readonly", "readonly");
     11            jQuery(this).closest(".tsinf_comfortdb_plugin_edit_dataset_row").find(".tsinf_comfortdb_plugin_edit_dataset_edit_field").prop("readonly", true);
    1212            jQuery(this).removeClass("unlocked");
    1313            jQuery(this).addClass("locked");
     
    2121        if(jQuery(this).is(":checked"))
    2222        {
    23             jQuery(this).closest(".tsinf_comfortdb_plugin_edit_dataset_row").find(".tsinf_comfortdb_plugin_edit_dataset_edit_field").attr("disabled", "disabled");
     23            jQuery(this).closest(".tsinf_comfortdb_plugin_edit_dataset_row").find(".tsinf_comfortdb_plugin_edit_dataset_edit_field").prop("disabled", true);
    2424        } else {
    25             jQuery(this).closest(".tsinf_comfortdb_plugin_edit_dataset_row").find(".tsinf_comfortdb_plugin_edit_dataset_edit_field").removeAttr("disabled");
     25            jQuery(this).closest(".tsinf_comfortdb_plugin_edit_dataset_row").find(".tsinf_comfortdb_plugin_edit_dataset_edit_field").prop("disabled", false);
    2626            jQuery(this).closest(".tsinf_comfortdb_plugin_edit_dataset_row").find(".tsinf_comfortdb_plugin_edit_dataset_edit_field").focus();
    2727        }
  • ts-comfort-database/trunk/js/global_search.js

    r2173469 r2495997  
    5353       
    5454        button_load_more.addClass("tsinf_loading_button");
    55         button_load_more.attr("disabled", "disabled");
     55        button_load_more.prop("disabled", true);
    5656       
    5757        jQuery.post(ajaxurl, data, function(response) {         
     
    7979           
    8080            button_load_more.removeClass("tsinf_loading_button");
    81             button_load_more.removeAttr("disabled");
     81            button_load_more.prop("disabled", false);
    8282        });
    8383   
  • ts-comfort-database/trunk/js/overview.js

    r2173469 r2495997  
     1var tsinf_table_to_csv_refresh_progress_timer;
     2function tsinf_table_to_csv_refresh_progress(target_progress)
     3{
     4    var tablename = target_progress.closest(".tsinf_comfortdb_table_overview_row").data("table-name");
     5    table_to_csv_hash = TSINF_COMFORT_OVERVIEW_JS.progress_hash_table_to_csv[tablename];
     6   
     7    jQuery.ajax({
     8        url: TSINF_COMFORT_OVERVIEW_JS.checkerurl + "?hash=" + table_to_csv_hash,
     9        success:function(data){
     10            try {
     11                var percent_total_val = (data.percent * 100);
     12                var percent_total = percent_total_val.toFixed(2) + "%";
     13                target_progress.prop("value", data.percent);
     14                target_progress.text(percent_total);
     15               
     16                if (data.percent >= 1 || data.hasOwnProperty('error')) {
     17                    window.clearInterval(tsinf_table_to_csv_refresh_progress_timer);
     18                   
     19                    var message_target = target_progress.closest("tr").find(".export_to_csv_wrap");
     20                    if(data.hasOwnProperty('error'))
     21                    {
     22                        message_target.html('<div class="tsinf_comfort_database_progress_error"><small>' + data.error + '</small></div>');
     23                    } else {
     24                        message_target.html('<div class="tsinf_comfort_database_progress_success"><small>' + TSINF_COMFORT_OVERVIEW_JS.export_finished + '<a href="' + TSINF_COMFORT_OVERVIEW_JS.filemanager_url + '">' + TSINF_COMFORT_OVERVIEW_JS.filemanager_name + '</small></a></div>');
     25                    }
     26                   
     27
     28                }
     29           
     30            } catch(e)
     31            {
     32                window.clearInterval(tsinf_table_to_csv_refresh_progress_timer);
     33                console.log(e);
     34            }
     35        }
     36    });
     37}
     38
    139jQuery(document).ready(function() {
    240    var table = jQuery("#tsinf_comfortdb_table_overview");
     
    2967   
    3068        });
     69    }
    3170   
    32     }
     71    jQuery("#tsinf_comfortdb_table_overview .tsinf_comfortdb_table_overview_row .tsinf_comfortdb_options .export_to_csv").click(function() {
     72            var current_button = jQuery(this);
     73            var current_row = current_button.closest("tr");
     74            var table = current_row.data("table-name");
     75            var progressbar = current_row.find(".tsinf_comfortdb_options .export-complete-table-to-csv");
     76           
     77            current_button.fadeOut();
     78            progressbar.fadeIn();
     79           
     80            var data = {
     81                'action': 'export_table_to_csv',
     82                'table': table,
     83                'security': TSINF_COMFORT_OVERVIEW_JS.nonce
     84            };
     85           
     86            jQuery.post(ajaxurl, data, function(response) {
     87            });
     88           
     89            tsinf_table_to_csv_refresh_progress_timer = window.setInterval(tsinf_table_to_csv_refresh_progress, 500, progressbar);
     90           
     91    });
    3392   
    3493});
  • ts-comfort-database/trunk/js/table.js

    r1758476 r2495997  
     1var tsinf_rows_to_csv_refresh_progress_timer;
     2function tsinf_rows_to_csv_refresh_progress(target_progress)
     3{
     4    jQuery.ajax({
     5        url: TSINF_COMFORT_DB_TABLE_JS.checkerurl + "?hash=" + TSINF_COMFORT_DB_TABLE_JS.progress_hash_rows_to_csv,
     6        success:function(data){
     7            try {
     8                var percent_total_val = (data.percent * 100);
     9                var percent_total = percent_total_val.toFixed(2) + "%";
     10                target_progress.prop("value", data.percent);
     11                target_progress.text(percent_total);
     12               
     13                if (data.percent >= 1 || data.hasOwnProperty('error')) {
     14                    window.clearInterval(tsinf_rows_to_csv_refresh_progress_timer);
     15                   
     16                    var message_target = target_progress.closest(".tsinf_cdb_progress_row").find("th");
     17                    if(data.hasOwnProperty('error'))
     18                    {
     19                        message_target.html('<div class="tsinf_comfort_database_progress_error" style="text-align: left;">' + data.error + '</div>');
     20                    } else {
     21                        message_target.html('<div class="tsinf_comfort_database_progress_success" style="text-align: left;">' + TSINF_COMFORT_DB_TABLE_JS.export_finished + '<a href="' + TSINF_COMFORT_DB_TABLE_JS.filemanager_url + '">' + TSINF_COMFORT_DB_TABLE_JS.filemanager_name + '</a></div>');
     22                    }
     23                   
     24
     25                }
     26           
     27            } catch(e)
     28            {
     29                window.clearInterval(tsinf_rows_to_csv_refresh_progress_timer);
     30                console.log(e);
     31            }
     32        }
     33    });
     34}
     35
    136jQuery(document).ready(function(){
    237    jQuery(".row_select_all").click(function(){
     
    439        if(rows.length > 0)
    540        {
    6             if(jQuery(this).is(":checked"))
     41            if(jQuery(this).is(":checked"))
    742            {
    8                 rows.attr("checked", "checked");
     43                rows.prop("checked", true);
    944            } else {
    10                 rows.removeAttr("checked");
     45                rows.prop("checked", false);
    1146            }
    1247        }
     
    184219        }
    185220    });
    186    
    187     jQuery("#tsinf_comfortdb_table_header_elements .tsinf_comfort_db_header_mobile_switch .arrow-up").click(function(){
     221
     222    jQuery(".tsinf_comfortdb_toolbar.tabledata .tsinf_select_menu#select_action .tsinf_select_menu_option.export_csv").click(function() {
     223        var current_option = jQuery(this);
     224       
     225        var dropdown = current_option.closest(".tsinf_select_menu_options_wrap");
     226        dropdown.hide();
     227       
     228        var selected_rows = jQuery(".row_select:checked");
     229       
     230        if(selected_rows !== undefined && selected_rows.length > 0)
     231        {
     232            var selected_row_ids = [];
     233   
     234            selected_rows.each(function(){
     235                selected_row_ids.push(jQuery(this).val());
     236            });
     237   
     238            var table_ref = jQuery(".tsinf_comfortdb_table");
     239            var table_head_ref = table_ref.find("thead");
     240           
     241            var tablename = table_ref.data("tablename");
     242            var colcount = table_ref.data("colcount");
     243            // include checkbox and edit link columns
     244            var colcount_total = colcount + 2;
     245            var auth = current_option.data("auth");
     246   
     247            var existing_progress_row = table_head_ref.find(".tsinf_cdb_progress_row");
     248            if(existing_progress_row !== undefined && existing_progress_row.length > 0)
     249            {
     250                existing_progress_row.remove();
     251            }
     252           
     253            table_head_ref.append('<tr class="tsinf_cdb_progress_row"><th colspan="' + colcount_total + '"><progress val="0.0" max="1" class="tsinf-progress-bar tsinf-export-to-csv-progress-bar"></progress></th></tr>');
     254   
     255            var progressbar = table_head_ref.find(".tsinf_cdb_progress_row .tsinf-export-to-csv-progress-bar");
     256   
     257            var data = {
     258                'action': 'export_rows_to_csv',
     259                'rows': selected_row_ids,
     260                'table': tablename,
     261                'security': auth
     262            };
     263                   
     264            jQuery.post(ajaxurl, data, function(response) {
     265            });
     266           
     267            tsinf_rows_to_csv_refresh_progress_timer = window.setInterval(tsinf_rows_to_csv_refresh_progress, 500, progressbar);
     268        }
     269       
     270    });
     271   
     272   
     273    jQuery("#tsinf_comfortdb_table_header_elements .tsinf_comfort_db_header_mobile_switch .arrow-up").click(function() {
    188274        jQuery('html,body').stop(true,false).animate({ scrollTop: 0 }, 'slow');
    189275    });
     276
     277    jQuery(".tsinf_comfortdb_table_data_wrapper .tsinf_comfortdb_table tr td .tcellmenubutton").click(function() {
     278        var all_menus = jQuery(".tsinf_comfortdb_table_data_wrapper .tsinf_comfortdb_table tr td .tcellmenu_container");
     279        var parent_cell = jQuery(this).closest("td");
     280        var related_menu = parent_cell.find(".tcellmenu_container");
     281        all_menus.hide();
     282        related_menu.show();
     283    });
     284   
     285    jQuery(".tsinf_comfortdb_table_data_wrapper .tsinf_comfortdb_table tr td .tcellmenu_container .menu_close").click(function() {
     286        var current_menu = jQuery(this).closest(".tcellmenu_container");
     287        current_menu.hide();
     288    });
     289   
     290    jQuery(".tsinf_comfortdb_table_data_wrapper .tsinf_comfortdb_table tr td .tcellmenu_container .tcellmenu_option").click(function() {
     291        var option = jQuery(this);
     292        var menu = option.closest(".tcellmenu_container");
     293        var type = option.data("val");
     294        var textfield = option.closest("td").find(".dbcontentcodewrap");
     295       
     296        menu.hide();
     297       
     298        if(type === 'copy')
     299        {
     300            textfield.select();
     301            document.execCommand("copy");
     302        } else {
     303       
     304            var data = {
     305                action: 'table_context_menu',
     306                type: type,
     307                content: textfield.val(),
     308                security: TSINF_COMFORT_DB_TABLE_JS.nonce_cell_menu
     309            }
     310           
     311            jQuery.post(ajaxurl, data, function(response) {
     312                var table_data_wrapper = jQuery("#wpbody #wpbody-content .tsinf_comfortdb_table_data_wrapper");
     313                var existing_overlay = table_data_wrapper.find("#tsinf_comfortdb_overlay");
     314                if(existing_overlay !== undefined && existing_overlay.length > 0)
     315                {
     316                    existing_overlay.remove();
     317                }
     318               
     319                table_data_wrapper.append('<div id="tsinf_comfortdb_overlay"><div id="tsinf_comfortdb_overlay_inner"><div class="tsinf_ovl_toolbar"><span class="tsinf_ovl_toolbar_item copy_to_clipboard">' + TSINF_COMFORT_DB_TABLE_JS.copy_to_clipboard + '</span><span class="tsinf_close_ovl"><svg viewBox="0 0 24 24" width="24" height="24" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round" class="css-i6dzq1"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></span></div><textarea readonly="readonly">' + response + '</textarea></div></div>');
     320               
     321                var close = jQuery("#wpbody #wpbody-content .tsinf_comfortdb_table_data_wrapper #tsinf_comfortdb_overlay #tsinf_comfortdb_overlay_inner .tsinf_ovl_toolbar .tsinf_close_ovl");
     322                close.click(function() {
     323                    var current_overlay = jQuery(this).closest("#tsinf_comfortdb_overlay").remove();
     324                    current_overlay.remove();
     325                });
     326               
     327                var copy_to_clipboard = jQuery("#wpbody #wpbody-content .tsinf_comfortdb_table_data_wrapper #tsinf_comfortdb_overlay #tsinf_comfortdb_overlay_inner .tsinf_ovl_toolbar .tsinf_ovl_toolbar_item.copy_to_clipboard");
     328                copy_to_clipboard.click(function() {
     329                    var textfield = jQuery(this).closest("#tsinf_comfortdb_overlay").find("textarea");
     330                    textfield.select();
     331                    document.execCommand("copy");
     332                });
     333               
     334            });
     335           
     336        }
     337       
     338       
     339       
     340    });
    190341   
    191342    jQuery(window).scroll(function() {
  • ts-comfort-database/trunk/languages/tsinf_comfortdb_plugin_textdomain-de_DE.po

    r2337892 r2495997  
    22msgstr ""
    33"Project-Id-Version: TS Comfort Database\n"
    4 "POT-Creation-Date: 2020-07-09 11:02+0200\n"
    5 "PO-Revision-Date: 2020-07-09 11:03+0200\n"
     4"POT-Creation-Date: 2021-03-15 12:35+0100\n"
     5"PO-Revision-Date: 2021-03-15 12:38+0100\n"
    66"Last-Translator: \n"
    77"Language-Team: \n"
     
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "X-Generator: Poedit 2.3.1\n"
     12"X-Generator: Poedit 2.4.2\n"
    1313"X-Poedit-Basepath: ..\n"
    1414"Plural-Forms: nplurals=2; plural=(n != 1);\n"
     
    2222"X-Poedit-SearchPathExcluded-0: *.js\n"
    2323
    24 #: classes/tsinf_comfort_db.class.php:91 classes/tsinf_comfort_db.class.php:397
    25 #: classes/tsinf_comfort_db.class.php:474
     24#: classes/filemanager.class.php:220
     25msgid "Selected Elements:"
     26msgstr "Ausgewählte Elemente:"
     27
     28#: classes/filemanager.class.php:222
     29msgid "Select Action"
     30msgstr "Aktion wählen"
     31
     32#: classes/filemanager.class.php:223
     33msgid "ZIP selected files"
     34msgstr "Ausgewählte Dateien komprimieren (ZIP)"
     35
     36#: classes/filemanager.class.php:224
     37msgid "Delete selected files"
     38msgstr "Ausgewählte Dateien löschen"
     39
     40#: classes/filemanager.class.php:226
     41msgid "Go"
     42msgstr "Start"
     43
     44#: classes/filemanager.class.php:257
     45msgid "Download"
     46msgstr "Download"
     47
     48#: classes/tsinf_comfort_db.class.php:131
     49#: classes/tsinf_comfort_db.class.php:454
     50#: classes/tsinf_comfort_db.class.php:531
    2651msgid "Primary Key"
    2752msgstr "Primärschlüssel"
    2853
    29 #: classes/tsinf_comfort_db.class.php:92
     54#: classes/tsinf_comfort_db.class.php:132
    3055msgid "Foreign Key"
    3156msgstr "Fremdschlüssel"
    3257
    33 #: classes/tsinf_comfort_db.class.php:93
     58#: classes/tsinf_comfort_db.class.php:133
    3459msgid "REFERENCES"
    3560msgstr "VERWEIST AUF"
    3661
    37 #: classes/tsinf_comfort_db.class.php:94 classes/tsinf_comfort_db.class.php:346
     62#: classes/tsinf_comfort_db.class.php:134
     63#: classes/tsinf_comfort_db.class.php:403
    3864msgid "An error occured"
    3965msgstr "Es ist ein Fehler aufgetreten"
    4066
    41 #: classes/tsinf_comfort_db.class.php:95
     67#: classes/tsinf_comfort_db.class.php:135
    4268msgid "Invalid Post Data"
    4369msgstr "Übertragene Daten ungültig"
    4470
    45 #: classes/tsinf_comfort_db.class.php:96
     71#: classes/tsinf_comfort_db.class.php:136
    4672msgid "Invalid Row Data"
    4773msgstr "Zeilendaten ungültig"
    4874
    49 #: classes/tsinf_comfort_db.class.php:97
     75#: classes/tsinf_comfort_db.class.php:137
    5076msgid "Query Error"
    5177msgstr "Abfrage Fehler"
    5278
    53 #: classes/tsinf_comfort_db.class.php:98
     79#: classes/tsinf_comfort_db.class.php:138
    5480msgid "Server Response not readable"
    5581msgstr "Antwort des Servers ist nicht lesbar"
    5682
    57 #: classes/tsinf_comfort_db.class.php:102
     83#: classes/tsinf_comfort_db.class.php:143
    5884msgid "Do you really want to delete the selected rows?"
    5985msgstr "Die ausgewählten Datensätze wirklich löschen?"
    6086
    61 #: classes/tsinf_comfort_db.class.php:112
    62 #: classes/tsinf_comfort_db.class.php:1006
    63 #: classes/tsinf_comfort_db.class.php:1014
     87#: classes/tsinf_comfort_db.class.php:144
     88#: classes/tsinf_comfort_db.class.php:1051
     89msgid "Copy to clipboard"
     90msgstr "In die Zwischenablage kopieren"
     91
     92#: classes/tsinf_comfort_db.class.php:147
     93#: classes/tsinf_comfort_db.class.php:157
     94#: classes/tsinf_comfort_db_exporter.php:132
     95msgid "Export ist finished. Go to File Manager and download your file: "
     96msgstr ""
     97"Der Export ist abgeschlossen. Gehen Sie zum Datei-Manager und laden Sie Ihre "
     98"Datei herunter: "
     99
     100#: classes/tsinf_comfort_db.class.php:148
     101#: classes/tsinf_comfort_db.class.php:158
     102#: classes/tsinf_comfort_db_exporter.php:133
     103#: classes/tsinf_comfort_db_exporter.php:157
     104#: classes/tsinf_comfort_db_exporter.php:158
     105#: classes/tsinf_comfort_db_exporter.php:315
     106msgid "File Manager"
     107msgstr "Dateimanager"
     108
     109#: classes/tsinf_comfort_db.class.php:169
    64110msgid "Comfort DB"
    65111msgstr "Comfort DB"
    66112
    67 #: classes/tsinf_comfort_db.class.php:113
     113#: classes/tsinf_comfort_db.class.php:170
    68114msgid "Database"
    69115msgstr "Datenbank"
    70116
    71 #: classes/tsinf_comfort_db.class.php:122
    72 #: classes/tsinf_comfort_db.class.php:219
     117#: classes/tsinf_comfort_db.class.php:179
     118#: classes/tsinf_comfort_db.class.php:276
    73119msgid "Comfort DB Settings"
    74120msgstr "Comfort DB Einstellungen"
    75121
    76 #: classes/tsinf_comfort_db.class.php:123
     122#: classes/tsinf_comfort_db.class.php:180
    77123msgid "Settings"
    78124msgstr "Einstellungen"
    79125
    80 #: classes/tsinf_comfort_db.class.php:136
    81 #: classes/tsinf_comfort_db.class.php:204
    82 #: classes/tsinf_comfort_db.class.php:232
    83 #: classes/tsinf_comfort_db.class.php:244
    84 #: classes/tsinf_comfort_db.class.php:278
    85 #: classes/tsinf_comfort_db.class.php:294
    86 #: classes/tsinf_comfort_db.class.php:738
    87 #: classes/tsinf_comfort_db.class.php:999
    88 #: classes/tsinf_comfort_db.class.php:1061
    89 #: classes/tsinf_comfort_db.class.php:1082
    90 #: classes/tsinf_comfort_db.class.php:1142
    91 #: classes/tsinf_comfort_db.class.php:1215
     126#: classes/tsinf_comfort_db.class.php:193
     127#: classes/tsinf_comfort_db.class.php:261
     128#: classes/tsinf_comfort_db.class.php:289
     129#: classes/tsinf_comfort_db.class.php:301
     130#: classes/tsinf_comfort_db.class.php:335
     131#: classes/tsinf_comfort_db.class.php:351
     132#: classes/tsinf_comfort_db.class.php:799
     133#: classes/tsinf_comfort_db.class.php:1090
     134#: classes/tsinf_comfort_db.class.php:1163
     135#: classes/tsinf_comfort_db.class.php:1184
     136#: classes/tsinf_comfort_db.class.php:1244
     137#: classes/tsinf_comfort_db.class.php:1317
    92138#: classes/tsinf_comfort_post_search.php:227
    93139msgid "You do not have sufficient permissions to access this page."
    94140msgstr "Sie haben keine Berechtigung auf diese Seite zuzugreifen."
    95141
    96 #: classes/tsinf_comfort_db.class.php:191
     142#: classes/tsinf_comfort_db.class.php:248
    97143msgid "Loading Symbol made with loading.io"
    98144msgstr "Loading Symbol wurde erstellt mit loading.io"
    99145
    100 #: classes/tsinf_comfort_db.class.php:220
     146#: classes/tsinf_comfort_db.class.php:277
    101147msgid "Rows per Site (Limit)"
    102148msgstr "Datensätze pro Seite (Limit)"
    103149
    104 #: classes/tsinf_comfort_db.class.php:221
     150#: classes/tsinf_comfort_db.class.php:278
    105151msgid "Show Adminbar Menu"
    106152msgstr "Adminbar-Menü anzeigen"
    107153
    108 #: classes/tsinf_comfort_db.class.php:235
     154#: classes/tsinf_comfort_db.class.php:292
    109155msgid "Main Settings"
    110156msgstr "Allgemeine Einstellungen"
    111157
    112 #: classes/tsinf_comfort_db.class.php:299
     158#: classes/tsinf_comfort_db.class.php:356
    113159msgid "New Dataset"
    114160msgstr "Neuer Datensatz"
    115161
    116 #: classes/tsinf_comfort_db.class.php:302
     162#: classes/tsinf_comfort_db.class.php:359
    117163msgid "Edit Dataset"
    118164msgstr "Datensatz bearbeiten"
    119165
    120 #: classes/tsinf_comfort_db.class.php:305
     166#: classes/tsinf_comfort_db.class.php:362
    121167msgid "Search Table"
    122168msgstr "Tabelle durchsuchen"
    123169
    124 #: classes/tsinf_comfort_db.class.php:310
     170#: classes/tsinf_comfort_db.class.php:367
    125171msgid "Back to Table"
    126172msgstr "Zurück zur Tabelle"
    127173
    128 #: classes/tsinf_comfort_db.class.php:341
     174#: classes/tsinf_comfort_db.class.php:398
    129175msgid "Affected Rows"
    130176msgstr "Betroffene Reihen"
    131177
    132 #: classes/tsinf_comfort_db.class.php:355
    133 #: classes/tsinf_comfort_db.class.php:447
     178#: classes/tsinf_comfort_db.class.php:412
     179#: classes/tsinf_comfort_db.class.php:504
    134180msgid "Save Data"
    135181msgstr "Daten speichern"
    136182
    137 #: classes/tsinf_comfort_db.class.php:396
     183#: classes/tsinf_comfort_db.class.php:453
    138184msgid "Unlock Key Field"
    139185msgstr "Schlüsselfeld entsperren"
    140186
    141 #: classes/tsinf_comfort_db.class.php:396
     187#: classes/tsinf_comfort_db.class.php:453
    142188msgid "Lock Key Field"
    143189msgstr "Schlüsselfeld sperren"
    144190
    145 #: classes/tsinf_comfort_db.class.php:403
    146 #: classes/tsinf_comfort_db.class.php:482
     191#: classes/tsinf_comfort_db.class.php:460
     192#: classes/tsinf_comfort_db.class.php:539
    147193msgid "Auto Increment Column"
    148194msgstr "Auto Inkrement Spalte"
    149195
    150 #: classes/tsinf_comfort_db.class.php:410
    151 #: classes/tsinf_comfort_db.class.php:489
     196#: classes/tsinf_comfort_db.class.php:467
     197#: classes/tsinf_comfort_db.class.php:546
    152198msgid "NULL possible"
    153199msgstr "NULL möglich"
    154200
    155 #: classes/tsinf_comfort_db.class.php:411
    156 #: classes/tsinf_comfort_db.class.php:417
    157 #: classes/tsinf_comfort_db.class.php:490
     201#: classes/tsinf_comfort_db.class.php:468
     202#: classes/tsinf_comfort_db.class.php:474
     203#: classes/tsinf_comfort_db.class.php:547
    158204msgid "Value is set to NULL"
    159205msgstr "Wert ist auf NULL gesetzt"
    160206
    161 #: classes/tsinf_comfort_db.class.php:442
     207#: classes/tsinf_comfort_db.class.php:499
    162208msgid "Search Data"
    163209msgstr "Suchen"
    164210
    165 #: classes/tsinf_comfort_db.class.php:481
     211#: classes/tsinf_comfort_db.class.php:538
    166212msgid "Unlock Auto Increment Field"
    167213msgstr "Auto Inkrement Spalte entsperren"
    168214
    169 #: classes/tsinf_comfort_db.class.php:481
     215#: classes/tsinf_comfort_db.class.php:538
    170216msgid "Lock Auto Increment Field"
    171217msgstr "Auto Inkrement Spalte sperren"
    172218
    173 #: classes/tsinf_comfort_db.class.php:793
    174 #: classes/tsinf_comfort_db.class.php:1090
     219#: classes/tsinf_comfort_db.class.php:855
     220#: classes/tsinf_comfort_db.class.php:1192
    175221msgid "Back to Table-Overview"
    176222msgstr "Zurück zur Tabellen Übersicht"
    177223
    178 #: classes/tsinf_comfort_db.class.php:797
     224#: classes/tsinf_comfort_db.class.php:859
    179225msgid "Back to Search Form"
    180226msgstr "Zurück zum Suchformular"
    181227
    182 #: classes/tsinf_comfort_db.class.php:802
     228#: classes/tsinf_comfort_db.class.php:864
    183229msgid "Table"
    184230msgstr "Tabelle"
    185231
    186 #: classes/tsinf_comfort_db.class.php:805
     232#: classes/tsinf_comfort_db.class.php:867
    187233#, php-format
    188234msgid "%d Entries"
    189235msgstr "%d Einträge"
    190236
    191 #: classes/tsinf_comfort_db.class.php:807
     237#: classes/tsinf_comfort_db.class.php:869
    192238#, php-format
    193239msgid "%d Rows per Page"
    194240msgstr "%d Datensätze pro Seite"
    195241
    196 #: classes/tsinf_comfort_db.class.php:814
     242#: classes/tsinf_comfort_db.class.php:876
    197243msgid "No identifier in this table found - Read only mode"
    198244msgstr "Diese Tabelle enthält keine eindeutige Spalte - Nur-Lese-Modus"
    199245
    200 #: classes/tsinf_comfort_db.class.php:817
     246#: classes/tsinf_comfort_db.class.php:879
    201247msgid "Turn columns off and on in current view"
    202248msgstr "Spalten in dieser Ansicht ein-/ausblenden"
    203249
    204 #: classes/tsinf_comfort_db.class.php:817
     250#: classes/tsinf_comfort_db.class.php:879
    205251msgid "Columns"
    206252msgstr "Spalten"
    207253
    208 #: classes/tsinf_comfort_db.class.php:835
     254#: classes/tsinf_comfort_db.class.php:897
    209255msgid "Select an action"
    210256msgstr "Aktion wählen"
    211257
    212 #: classes/tsinf_comfort_db.class.php:835
     258#: classes/tsinf_comfort_db.class.php:897
    213259msgid "Actions"
    214260msgstr "Aktionen"
    215261
    216 #: classes/tsinf_comfort_db.class.php:840
    217 msgid "Delete"
    218 msgstr "Löschen"
    219 
    220 #: classes/tsinf_comfort_db.class.php:845
     262#: classes/tsinf_comfort_db.class.php:902
     263msgid "Delete selected rows"
     264msgstr "Ausgewählte Zeilen löschen"
     265
     266#: classes/tsinf_comfort_db.class.php:903
     267msgid "Export selected rows to CSV"
     268msgstr "Ausgewählte Zeilen in CSV"
     269
     270#: classes/tsinf_comfort_db.class.php:908
    221271msgid "Switch to another page"
    222272msgstr "Seite wechseln"
    223273
    224 #: classes/tsinf_comfort_db.class.php:845
     274#: classes/tsinf_comfort_db.class.php:908
    225275#, php-format
    226276msgid "Page: %s"
    227277msgstr "Seite: %s"
    228278
    229 #: classes/tsinf_comfort_db.class.php:850
     279#: classes/tsinf_comfort_db.class.php:913
    230280msgid "Page"
    231281msgstr "Seite"
    232282
    233 #: classes/tsinf_comfort_db.class.php:856
     283#: classes/tsinf_comfort_db.class.php:919
    234284msgid "Switch to another table"
    235285msgstr "Tabelle wechseln"
    236286
    237 #: classes/tsinf_comfort_db.class.php:856
    238 #: classes/tsinf_comfort_db.class.php:1691
     287#: classes/tsinf_comfort_db.class.php:919
     288#: classes/tsinf_comfort_db.class.php:1892
    239289#, php-format
    240290msgid "Table: %s"
    241291msgstr "Tabelle: %s"
    242292
    243 #: classes/tsinf_comfort_db.class.php:874
     293#: classes/tsinf_comfort_db.class.php:937
    244294msgid "Create a new dataset in table"
    245295msgstr "Neuen Datensatz für diese Tabelle erstellen"
    246296
    247 #: classes/tsinf_comfort_db.class.php:875
     297#: classes/tsinf_comfort_db.class.php:938
    248298msgid "Filter table content"
    249299msgstr "Tabelleninhalt filtern"
    250300
    251 #: classes/tsinf_comfort_db.class.php:876
     301#: classes/tsinf_comfort_db.class.php:939
    252302#: classes/tsinf_comfort_post_search.php:244
    253303msgid "Search"
    254304msgstr "Suchen"
    255305
    256 #: classes/tsinf_comfort_db.class.php:952
     306#: classes/tsinf_comfort_db.class.php:1016
    257307msgid "Edit"
    258308msgstr "Bearbeiten"
    259309
    260 #: classes/tsinf_comfort_db.class.php:1018
     310#: classes/tsinf_comfort_db.class.php:1042
     311msgid "Cell-Options"
     312msgstr "Zell-Optionen"
     313
     314#: classes/tsinf_comfort_db.class.php:1054
     315msgid "PHP: unserialize()"
     316msgstr "PHP: unserialize()"
     317
     318#: classes/tsinf_comfort_db.class.php:1057
     319msgid "PHP: json_decode()"
     320msgstr "PHP: json_decode()"
     321
     322#: classes/tsinf_comfort_db.class.php:1060
     323msgid "PHP: var_export()"
     324msgstr "PHP: var_export()"
     325
     326#: classes/tsinf_comfort_db.class.php:1099
     327#: classes/tsinf_comfort_db.class.php:1107
     328msgid "TS Comfort DB"
     329msgstr "TS Comfort DB"
     330
     331#: classes/tsinf_comfort_db.class.php:1111
    261332#, php-format
    262333msgid ""
    263334"Name of your WordPress Database: %s (%s MB) - MySQL Version %s - PHP Version "
    264 "%s"
     335"%s - WordPress Version %s"
    265336msgstr ""
    266 "Name der WordPress Datenbank: %s (%s MB) - MySQL Version %s - PHP Version %s"
    267 
    268 #: classes/tsinf_comfort_db.class.php:1029
    269 #: classes/tsinf_comfort_db.class.php:1030
    270 #: classes/tsinf_comfort_db.class.php:1106
     337"Name der WordPress Datenbank: %s (%s MB) - MySQL Version %s - PHP Version %s "
     338"- WordPress Version %s"
     339
     340#: classes/tsinf_comfort_db.class.php:1122
     341#: classes/tsinf_comfort_db.class.php:1123
     342#: classes/tsinf_comfort_db.class.php:1208
    271343msgid "Table Name"
    272344msgstr "Tabellenname"
    273345
    274 #: classes/tsinf_comfort_db.class.php:1030
     346#: classes/tsinf_comfort_db.class.php:1123
    275347msgid "Filter"
    276348msgstr "Filter"
    277349
    278 #: classes/tsinf_comfort_db.class.php:1031
     350#: classes/tsinf_comfort_db.class.php:1125
     351#: classes/tsinf_comfort_db_exporter.php:184
    279352msgid "Entries"
    280353msgstr "Einträge"
    281354
    282 #: classes/tsinf_comfort_db.class.php:1032
     355#: classes/tsinf_comfort_db.class.php:1126
    283356msgid "Engine"
    284357msgstr "Engine"
    285358
    286 #: classes/tsinf_comfort_db.class.php:1033
     359#: classes/tsinf_comfort_db.class.php:1127
     360#: classes/tsinf_comfort_db_exporter.php:183
    287361msgid "Size"
    288362msgstr "Größe"
    289363
    290 #: classes/tsinf_comfort_db.class.php:1068
    291 #: classes/tsinf_comfort_db.class.php:1087
     364#: classes/tsinf_comfort_db.class.php:1139
     365msgid "CSV-Export"
     366msgstr "CSV-Export"
     367
     368#: classes/tsinf_comfort_db.class.php:1170
     369#: classes/tsinf_comfort_db.class.php:1189
    292370msgid "Full Text Search"
    293371msgstr "Volltextsuche"
    294372
    295 #: classes/tsinf_comfort_db.class.php:1098
     373#: classes/tsinf_comfort_db.class.php:1200
    296374msgid "Search Results in following tables"
    297375msgstr "Suchergebnisse in folgenden Tabellen"
    298376
    299 #: classes/tsinf_comfort_db.class.php:1107
     377#: classes/tsinf_comfort_db.class.php:1209
    300378msgid "Search Result Count"
    301379msgstr "Ergebnisanzahl"
    302380
    303 #: classes/tsinf_comfort_db.class.php:1148
     381#: classes/tsinf_comfort_db.class.php:1250
    304382#, php-format
    305383msgid "Full Text Search: %s in Table %s"
    306384msgstr "Volltextsuche: %s in Tabelle %s"
    307385
    308 #: classes/tsinf_comfort_db.class.php:1155
     386#: classes/tsinf_comfort_db.class.php:1257
    309387msgid "Back to Overview"
    310388msgstr "Zurück zur Übersicht"
    311389
    312 #: classes/tsinf_comfort_db.class.php:1270
    313 #: classes/tsinf_comfort_db.class.php:1290
     390#: classes/tsinf_comfort_db.class.php:1375
     391#: classes/tsinf_comfort_db.class.php:1395
    314392msgid "Switch to previous page"
    315393msgstr "Zur vorherigen Seite wechseln"
    316394
    317 #: classes/tsinf_comfort_db.class.php:1275
    318 #: classes/tsinf_comfort_db.class.php:1293
     395#: classes/tsinf_comfort_db.class.php:1380
     396#: classes/tsinf_comfort_db.class.php:1398
    319397msgid "Switch to next page"
    320398msgstr "Zur nächsten Seite wechseln"
    321399
    322 #: classes/tsinf_comfort_db.class.php:1673
     400#: classes/tsinf_comfort_db.class.php:1874
    323401msgid "Database Tables"
    324402msgstr "Datenbank Tabellen"
    325403
    326 #: classes/tsinf_comfort_db.class.php:1677
     404#: classes/tsinf_comfort_db.class.php:1878
    327405msgid "Open your database tables directly"
    328406msgstr "Datenbanktabellen direkt öffnen"
     407
     408#: classes/tsinf_comfort_db.class.php:2043
     409#: classes/tsinf_comfort_db_exporter.php:605
     410msgid "Upload Directory not exists"
     411msgstr "Upload-Verzeichnis ist nicht vorhanden"
     412
     413#: classes/tsinf_comfort_db_exporter.php:84
     414msgid "TS Comfort Database: Upload directory not exists!"
     415msgstr "TS Comfort Database: Upload-Verzeichnis nicht vorhanden!"
     416
     417#: classes/tsinf_comfort_db_exporter.php:89
     418msgid "TS Comfort Database: Upload directory is not writable!"
     419msgstr "TS Comfort Database: Upload-Verzeichnis ist nicht beschreibbar!"
     420
     421#: classes/tsinf_comfort_db_exporter.php:148
     422#: classes/tsinf_comfort_db_exporter.php:149
     423msgid "SQL Export BETA"
     424msgstr "SQL Export BETA"
     425
     426#: classes/tsinf_comfort_db_exporter.php:171
     427#: classes/tsinf_comfort_db_exporter.php:311
     428msgid "You do not have the permission to call this page."
     429msgstr "Sie haben keine Berechtigung auf diese Seite zuzugreifen."
     430
     431#: classes/tsinf_comfort_db_exporter.php:177
     432msgid "SQL Exporter BETA"
     433msgstr "Datenbank Explorer für WordPress"
     434
     435#: classes/tsinf_comfort_db_exporter.php:182
     436msgid "Tables"
     437msgstr "Tabellen"
     438
     439#: classes/tsinf_comfort_db_exporter.php:185
     440msgid "Structure"
     441msgstr "Struktur"
     442
     443#: classes/tsinf_comfort_db_exporter.php:186
     444msgid "Data"
     445msgstr "Daten"
     446
     447#: classes/tsinf_comfort_db_exporter.php:233
     448msgid "Options"
     449msgstr "Optionen"
     450
     451#: classes/tsinf_comfort_db_exporter.php:240
     452msgid "Add CREATE DATABASE (Ignored on Split Export)"
     453msgstr "CREATE DATABASE hinzufügen (Ignoriert bei Split Export)"
     454
     455#: classes/tsinf_comfort_db_exporter.php:248
     456msgid "Disable Foreign Key Checks"
     457msgstr "Deaktivieren von Fremdschlüsselprüfungen"
     458
     459#: classes/tsinf_comfort_db_exporter.php:256
     460msgid "Summarize Script(s) in a TRANSACTION"
     461msgstr "Skripte in einer TRANSACTION zusammenfassen"
     462
     463#: classes/tsinf_comfort_db_exporter.php:264
     464msgid "Create seperate files per table (Split Export)"
     465msgstr "Erstellen separater Dateien pro Tabelle (Split Export)"
     466
     467#: classes/tsinf_comfort_db_exporter.php:299
     468msgid "Start Export"
     469msgstr "Export starten"
     470
     471#: classes/tsinf_comfort_db_exporter.php:344
     472msgid "Exporting ..."
     473msgstr "Exportieren ..."
    329474
    330475#: classes/tsinf_comfort_post_search.php:60
     
    448593msgstr "Mehr Ergebnisse laden"
    449594
    450 #: plugin.php:52
     595#: plugin.php:61
    451596msgid ""
    452597"TS Comfort DB Message: Please be careful by using this plugin. If you work "
     
    462607"arbeiten!"
    463608
    464 #: plugin.php:52
     609#: plugin.php:61
    465610msgid "I know the risk. Do not show this message again"
    466611msgstr "Ich kenne das Risiko. Nachricht dauerhaft ausblenden"
     
    487632msgstr "https://www.spiess-informatik.de"
    488633
     634#, fuzzy
     635#~| msgid "Database Explorer for WordPress"
     636#~ msgid "TS Database Exporter"
     637#~ msgstr "Datenbank Explorer für WordPress"
     638
     639#~ msgid "Delete"
     640#~ msgstr "Löschen"
     641
    489642#~ msgid "http://comfortdb.spiess-informatik.de"
    490643#~ msgstr "http://comfortdb.spiess-informatik.de"
  • ts-comfort-database/trunk/plugin.php

    r2486537 r2495997  
    77 Author: Tobias Spiess
    88 Author URI: https://www.spiess-informatik.de
    9  Version: 1.0.10
     9 Version: 2.0.0
    1010 Text-Domain: tsinf_comfortdb_plugin_textdomain
    1111 Domain Path: /languages
     
    3232define('TS_INF_COMFORT_DB_PATH', dirname(__FILE__));
    3333define('TS_INF_COMFORT_DB_MAIN_FILE', dirname(__FILE__) . '/plugin.php');
     34
     35if(!function_exists('get_home_path'))
     36{
     37    require_once(ABSPATH . 'wp-admin/includes/file.php');
     38}
     39
     40define('TS_INF_COMFORT_DB_UPLOAD_DIR', sprintf("%swp-content/ts-plugins/ts-comfort-database/", get_home_path()));
     41define('TS_INF_TABLE_TO_CSV_NONCE', 'hsdfdh#op3403f-dGJkl345');
     42
    3443
    3544/**
     
    6170include dirname( __FILE__ ) . '/classes/columnmeta.class.php';
    6271include dirname( __FILE__ ) . '/classes/database.class.php';
     72include dirname( __FILE__ ) . '/classes/filemanager.class.php';
    6373include dirname( __FILE__ ) . '/classes/tsinf_comfort_db.class.php';
    6474include dirname( __FILE__ ) . '/classes/tsinf_comfort_post_search.php';
     75include dirname( __FILE__ ) . '/classes/tsinf_comfort_db_exporter.php';
    6576
    6677
  • ts-comfort-database/trunk/readme.txt

    r2486537 r2495997  
    22Contributors: tsinf
    33Tags: database, sql, manager, query
    4 Requires at least: 4.8
    5 Tested up to: 5.4
    6 Stable Tag: 5.4
    7 Creation time:
    8 Last updated time: 09.07.2020
     4Requires at least: 5.6
     5Tested up to: 5.7
     6Stable Tag: 5.6
     7Creation time: 04.11.2017
     8Last updated time: 12.03.2021
    99
    1010Database Manager for WordPress Database with all functions to need to administrate your current used database.
     
    2424* Table Filter-Functionality
    2525* Backend Post Search
     26* SQL Exporter
     27* CSV Exporter
     28* Unserialize Table-Cells
     29* JSON Decode Table-Cells
    2630
    2731**Since Version 1.0.9 there is an Adminbar Menu, that you can activate in the options to quick access database tables.**
     
    3539
    3640== Changelog ==
     41*2.0.0
     42Add table cell context menu
     43Add SQL-Exporter
     44Add CSV-Exporter
     45Changes in JS to provide jQuery 3.x Support
     46
    3747*1.0.10
    3848Fix errors in table search and table pagination
Note: See TracChangeset for help on using the changeset viewer.