Poniewaz pare osob jest chetnych aby ruszyc nieco z kopyta z nowymi opcjami pisze tutaj jaki jest wedlug mnie zamysl tego wszystkiego (do dyskusji).
Zanim ruszymy dalej z dzialem praca (na razie mam wstepy layout tego dzialu), nalezy rozbudowac panel uzytkownika o opcje dodawania portfolio, umiejetnosci itp.
- Wyglad panelu uzytkownika
Jezeli chodzi o wyglad panelu uzytkownika to mysle ze mozna zostawic podzielic go na zakladki tak jak jest teraz. Dodatkowo mysle aby wywalic prawe menu aby zwiekszyc objetosc strony. Moze rowniez warto zmienic wyglad samych zakladek. Myslalem rowniez o zastosowaniu AJAXa. Tj. teraz tresc wszystkich zakladek jest ladowana na starcie co zwieksza objetosc samej strony. Mysle, aby po kliknieciu na dana zakladke ladowana byla tresc z pliku szablonu oczywiscie.
Mysle o pozostawieniu obecnego ukladu zakladek i podziale kontrolek tam sie znajdujacych. IMO nalezy wywalic pole "Jezyki programowania" z zakladki Ustawienia. Nalezy dodac dwie zakladki: Portfolio, Umiejętności.
Jeszcze dzisiaj postaram sie wrzucic na CVS zmodyfikowany kod prezentujacy jak to powinno wygladac.
- Portfolio
Ma umozliwiac dodawanie swoich osiagniec; proponuje taka tabele:
CREATE TABLE coyote_portfolio (
portfolio_id smallint(5) NOT NULL auto_increment,
portfolio_user smallint(6) NOT NULL default '0', # ID usera
portfolio_subject varchar(255) NOT NULL default '', # tytul wpisu
portfolio_desc text NOT NULL, # opis
portfolio_url varchar(255) NOT NULL default '', # odnosnik (np. do zrobionej strony WWW)
portfolio_role tinyint(1) NOT NULL default '0', # rola w tym projekcie (patrz nizej)
portfolio_price tinyint(1) NOT NULL default '0', # cena za wykonanie swojej fuchy (patrz nize)
PRIMARY KEY (portfolio_id)
) TYPE=MyISAM;
Wiadomo ze niektore umowy zabraniaja podawania ceny za wykonanie. Mysle ze pole "Cena" w formularzu byloby lista rozwijalna - np.:
50 - 100 zl
101 - 200 zl
[...]
Inna/Niepodano
Jezeli chodzi o role to proponuje osobna tabele:
CREATE TABLE coyote_role (
role_id tinyint(1) NOT NULL auto_increment,
role_name varchar(200) NOT NULL default '',
PRIMARY KEY (role_id)
) TYPE=MyISAM;
Jej zawartosc:
"Programowanie"
"Projektowanie bazy danych"
"Grafika"
"Layout"
"Testowanie"
"Marketing internetowy"
"Programowanie Flash"
"Inne"
Tyle ze w wielu przypadkach rola danego uzytkownika nie ogranicza sie do jednej ale do wielu (np. grafika oraz programowanie). Trzeba by wiec utworzyc nowa tabele (IMO): coyote_user_role (do uzgodnienia)
- Umiejetnosci
Na kolejnej zakladce uzytkownik bedzie mogl dodac/usunac z listy technologie ktorymi sie posluguje. Lista technologii bedzie przechowywana w tabeli:
CREATE TABLE coyote_skill (
skill_id smallint(6) NOT NULL auto_increment,
skill_name varchar(60) NOT NULL default '',
UNIQUE KEY skill_id (skill_id)
) TYPE=MyISAM;
(zawartosc tabeli)
INSERT INTO `coyote_skill` VALUES (1, '.NET');
INSERT INTO `coyote_skill` VALUES (2, 'MS Access');
INSERT INTO `coyote_skill` VALUES (3, 'ActiveX');
INSERT INTO `coyote_skill` VALUES (4, 'Ada');
INSERT INTO `coyote_skill` VALUES (5, 'ADO');
INSERT INTO `coyote_skill` VALUES (6, 'ADO.NET');
INSERT INTO `coyote_skill` VALUES (7, 'Adobe GoLive');
INSERT INTO `coyote_skill` VALUES (8, 'Adobe Illustrator');
INSERT INTO `coyote_skill` VALUES (9, 'Adobe Photoshop');
INSERT INTO `coyote_skill` VALUES (10, 'Apache');
INSERT INTO `coyote_skill` VALUES (11, 'ASP');
INSERT INTO `coyote_skill` VALUES (12, 'ASP.NET');
INSERT INTO `coyote_skill` VALUES (13, 'Assembler');
INSERT INTO `coyote_skill` VALUES (14, 'Basic');
INSERT INTO `coyote_skill` VALUES (15, 'C');
INSERT INTO `coyote_skill` VALUES (16, 'C++');
INSERT INTO `coyote_skill` VALUES (17, 'CGI');
INSERT INTO `coyote_skill` VALUES (18, 'Cobol');
INSERT INTO `coyote_skill` VALUES (19, 'COM/DCOM');
INSERT INTO `coyote_skill` VALUES (20, 'CORBA');
INSERT INTO `coyote_skill` VALUES (21, 'Crystal Reports');
INSERT INTO `coyote_skill` VALUES (22, 'CSS');
INSERT INTO `coyote_skill` VALUES (23, 'DB2');
INSERT INTO `coyote_skill` VALUES (24, 'dBase');
INSERT INTO `coyote_skill` VALUES (25, 'Delphi');
INSERT INTO `coyote_skill` VALUES (26, 'DHTML');
INSERT INTO `coyote_skill` VALUES (27, 'FastCGI');
INSERT INTO `coyote_skill` VALUES (28, 'Flash');
INSERT INTO `coyote_skill` VALUES (29, 'FreeBSD');
INSERT INTO `coyote_skill` VALUES (30, 'Gnome');
INSERT INTO `coyote_skill` VALUES (31, 'HTML');
INSERT INTO `coyote_skill` VALUES (32, 'Infromix');
INSERT INTO `coyote_skill` VALUES (33, 'J2EE');
INSERT INTO `coyote_skill` VALUES (34, 'Java');
INSERT INTO `coyote_skill` VALUES (35, 'JavaScript');
INSERT INTO `coyote_skill` VALUES (36, 'Linux');
INSERT INTO `coyote_skill` VALUES (37, 'Lisp');
INSERT INTO `coyote_skill` VALUES (38, 'Macintosh');
INSERT INTO `coyote_skill` VALUES (39, 'MFC');
INSERT INTO `coyote_skill` VALUES (40, 'MySQL');
INSERT INTO `coyote_skill` VALUES (41, 'ODBC');
INSERT INTO `coyote_skill` VALUES (42, 'Oracle');
INSERT INTO `coyote_skill` VALUES (43, 'Paradox');
INSERT INTO `coyote_skill` VALUES (44, 'Perl');
INSERT INTO `coyote_skill` VALUES (45, 'PL/SQL');
INSERT INTO `coyote_skill` VALUES (46, 'Python');
INSERT INTO `coyote_skill` VALUES (47, 'Sybase');
INSERT INTO `coyote_skill` VALUES (48, 'Uml');
INSERT INTO `coyote_skill` VALUES (49, 'Visual Basic');
INSERT INTO `coyote_skill` VALUES (50, 'Visual Basic.NET');
INSERT INTO `coyote_skill` VALUES (51, 'C#');
INSERT INTO `coyote_skill` VALUES (52, 'Win32 API');
INSERT INTO `coyote_skill` VALUES (53, 'Windows 2000');
INSERT INTO `coyote_skill` VALUES (54, 'Windows 3.x');
INSERT INTO `coyote_skill` VALUES (55, 'Windows 95/98');
INSERT INTO `coyote_skill` VALUES (56, 'Windows CE');
INSERT INTO `coyote_skill` VALUES (57, 'Windows NT');
INSERT INTO `coyote_skill` VALUES (58, 'Windows XP');
INSERT INTO `coyote_skill` VALUES (59, 'Wi-Fi');
INSERT INTO `coyote_skill` VALUES (60, 'XHTML');
INSERT INTO `coyote_skill` VALUES (61, 'XML');
To jest zawartosc prostej tabeli, ktora zawiera liste technologii, potrzeba natomiast jeszcze jednej ktora przechowywac bedzie konkretne pozycje w zaleznosci od usera:
CREATE TABLE `coyote_user_skill` (
`user_id` smallint(6) unsigned NOT NULL default '0',
`user_skill` smallint(2) unsigned NOT NULL default '0',
`user_quality` tinyint(1) unsigned NOT NULL default '0',
PRIMARY KEY (`user_id`)
) TYPE=MyISAM;
Myslalem zeby w polu user_quality przechowywac informacje na temat doswiadczenia w danej technologii (np. 2-4 lat, 1 rok itd).