Sunday, June 30, 2013

Second week report - find and replace by column

What I had planned for the second week of coding was the feature named 'Find and replace by column' requested in feature requests #487 and #1405. Reading through the feature requests it is evident that this feature was a quite needed one.

I approached this one by planning the user interface for the feature. I chose 'table search' tab to be the most suited one to include the UI for the new feature. 'Table search' tab already had a second level of tabs for 'ordinary table search' and 'zoom search'. So I added another secondary level tab for the new 'find and replace' feature. The new UI looks like the image below.


The initial UI facilitates entering a phrase to look for and a phrase to replace the original one. The column drop down facilitate choosing the column in which this operation is to be performed. Only the columns which has a text type is listed in the drop down as this operation in not valid for others.

When the user submits the form, having entered the above parameters, a case sensitive search is performed and a preview of replacement to be done is shown. Achieving a case sensitive search was problematic as some collations are case insensitive. However I overcame this hurdle by converting the collation to a case sensitive one in the same character set. Here is a screenshot of the preview.


Upon confirmation the matched string are replaced with the given string.

For the next week I have planned to implement 'Configurable menus' feature requested in #316. What is requested in the RFE is a basic mode with limited features exposed to the user. However, I would like to implement this in a more generic way where this feature would let the admin configure profiles and assign users to them. These profiles will have limited access defined and the logged in users would only see menus related to these features.

Monday, June 24, 2013

First week report - Relation Interface Improvements

I worked on 'Relation Interface Improvements' feature during the first week of GSoC and was able to successfully implement it. Now the cumbersome task of setting relational constraints has been made somewhat easy and is less error-prone. 
 
With the changes the long dropdown to select foreign column has been split to two dropdowns, one to select the foreign table and the other to select the foreign column. I also extended this to support cross database relations with an additional dropdown to select the foreign database for both internal and InnoDB types. Here is what the relation view interface looks like now.
 
 
So, when the user selects the database, the entries in the table dropdown are filtered only to show tables in that database and column dropdown is filtered in a similar manner when a table is selected. Own database is selected by default as it's more common to setup relations inside the same database.
 
Checking relational integrity feature was already supporting cross database relations. I added table name to the displayed text to make it clearer. I also updated a couple of FAQs in the documentation related to these features. 
 
For the next I have planned to implement 'Find and replace by column' feature which is quite long due. I have some preliminary work on it, and plan to finish implementing it during this week.

Saturday, June 15, 2013

Coding begins

According to GSOC 2013 timeline, the coding period begins tomorrow. It's quite exiting as we get to do some hands on coding. I have pretty much completed reading documentation and getting myself familiarize with the code. Meanwhile I pulled merge requests for a couple of bugs and those fixes were incorporated to the code.

I am going to implement 'Improve relational view interface' feature during the first week. This is based on feature requests RFE #1283, RFE #1233 and RFE#175 from the feature request tracker. I've done some investigations related to these features during the last week.

With the implementation choosing the foreign column would be made a two step process. First the user chooses the foreign table from the table drop down which would filter the column in the columns drop down accordingly. Hence choosing the correct column would be much easier. Finally, the relational system would be enhanced to support cross database relations. Relational view interface would facilitate adding/editing these relations with an additional drop down to chose the database.

I will use 'relView' branch of my repository to implement this feature. However it is still empty, I will make a commit when the new code is stable.

Saturday, June 8, 2013

phpMyAdmin Interface Improvements

Hi everyone,

This is my first post here. I will use this blog to communicate the progress of my GSoC 2013 project  and hopefully even afterwards to write about some technical stuff.

First of all here are some details about the project. My project is titles "phpMyAdmin Interface Improvements" and as the name suggests I plan to implement an array of small to medium scale features during this summer. My mentor for this project is Isaac Bennetch and I look forward to cooperate with him in order to implement the feature requests with high usability.

More details about my project can be found here. Here is an extraction from my proposal to give you a high level overview of the project.

"phpMyAdmin is quite a matured project with more than 14 years of history behind it. It possesses almost all the major features required for a database administrative tool and there is very little that can be added in this front. However there is always room for small and medium scale new features. This is evident from the huge backlog of feature requests requested in the project’s feature request tracker. In this proposal, I propose a number of small to medium scale improvements chosen from the feature request tracker, majority of them selected by the developers of the project themselves and listed in the GSoC 2013 project ideas list."